Deno 서버기술

Deno

node의 창시자가 node가 쓰레기(좋게말하면 장난감)이라는 것을 알리기 위해 native TypeScript로 돌아가는 언어를 만들었다.

  • https://github.com/denoland/deno

웹프레임웤

  • https://github.com/oakserver/oak
  • https://github.com/keroxp/servest
  • https://github.com/drashland/deno-drash
  • https://github.com/zhmushan/abc
  • https://github.com/sholladay/pogo

참고

  • https://dev.to/craigmorten/what-is-the-best-deno-web-framework-2k69

파이썬 서버기술

파이썬으로 제대로된 서버개발을 한 적은 없어서 몇 가지 조사하다가 발견한것들

WebFramework

  • Django
  • Flask
  • Bottle https://bottlepy.org/docs/dev/
  • Pylons
  • Pyramit https://trypyramid.com/
  • Falcon
  • Eve https://github.com/pyeve/eve
  • CherryPy
  • FastAPI https://github.com/tiangolo/fastapi
    https://towardsdatascience.com/why-we-switched-from-flask-to-fastapi-for-production-machine-learning-765aab9b3679
  • https://github.com/juancarlospaco/faster-than-requests

엄청많다

ORM

  • SqlAlchemy
  • https://github.com/python-gino/gino
  • PonyORM
    https://ponyorm.org/
  • DjangoORM

SQL

  • PyPika
    https://pypika.readthedocs.io/en/latest/
  • https://github.com/tmuzzin/PythonSQLGenerator
  • https://github.com/hhyo/mybatis-mapper2sql
  • PyDAL
    https://github.com/web2py/pydal

비동기 기술

  • celery
  • faust
  • async
  • PyKafka
    https://pykafka.readthedocs.io/en/latest/
  • kafka-python
    https://github.com/dpkp/kafka-python
  • Winton Kafka Streams
    https://github.com/wintoncode/winton-kafka-streams

개발환경

  • anaconda
  • miniconda
  • virtualenv
    https://virtualenv.pypa.io/en/latest/
  • virtualenv wrapper
    https://virtualenvwrapper.readthedocs.io/en/latest/
  • pew
    https://github.com/berdario/pew
  • tox
    https://tox.readthedocs.io/en/latest/
  • nox
    https://nox.thea.codes/en/stable/
  • pipenv
    https://pipenv.pypa.io/en/latest/advanced/
    package.json처럼 실행환경을 지정할 수 있게 하는게 낫지 않을까? 커스텀 환경을 사용하려면 sh를 별도로 만드는게 나을 것 같다.
  • poetry
    https://python-poetry.org/docs/

실행환경

  • Gunicorn
  • uWSGI
  • Uvicorn(ASGI)
    https://www.uvicorn.org
  • supervisord
    http://supervisord.org/
  • honcho
    https://github.com/nickstenning/honcho
  • forever
  • pm2
  • unicorn

배포환경

  • zappa – aws lambda (반푼이)
  • serverless – aws lambda
  • https://github.com/GoogleCloudPlatform/functions-framework-python
  • https://github.com/tiangolo/uwsgi-nginx-flask-docker
  • https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker

기타 참고

  • https://dev.to/sm0ke/flask-dashboard-simple-open-source-starters-4noc

Ubuntu – Crontab – Exec format error

우분투 로그인하니까 you’ve got mail..
또 무슨 오류가?

cat /var/mail/root

써있는대로… 실행이 안되서 오류가 났다고 하는건데

readweb 스크립트는 curl을 이용해서 특정 웹페이지를 저장하는 역할을 한다

검색을 해 보니

 

http://askubuntu.com/questions/264607/bash-script-not-executing-from-crontab

원인은 cron에는 path를 잡아주지 않기 때문에 실행명령어를 full path로 적어주거나 path를 따로 잡아줘야함

해결책 :

/usr/bin/curl 처럼 full path로 쓰거나

PATH=/usr/bin

를 잡아줘야하는데…

 

그냥 명령어를 full path로 명시하는게 낫지 않을까

 

WIN2008-MSSQL2008 서버 원격접속 가능설정

주의 :  원격접속에 필요없는 설정을 추가했을 수 있음

 

서버 프로토콜 추가

시작 – sql server -> SQL Server Configuration Manager 실행

  • SQL Server Services 메뉴 -> SQL Server Browser 시작시 실행 설정
  • SQL Native Client 메뉴 -> Client Protocols -> TCP/IP, Named Pipes – Enabled
  • SQL Server Network Configuration -> Protocols for MSSQLSERVER  -> TCP/IP, Named Pipes – Enabled

 

방화벽 허용

TCP 1433, UDP 1434

 

사용자 추가

Microsoft SQL Server Management Studio 실행

Security – Logins 오른쪽클릭 -> New Login 해서 사용자 추가

 

 

Ubuntu GPT disk 등록하기

파티션 만들기
2T이상은 gpt로 만들어야된다. fdisk로 안된다는 얘기… 설치할 때 한번에 하는게 편하지만 하드를 중간에 추가할 경우에는 이 작업이 필요하다.

$ sudo fdisk -l
$ sudo parted /dev/sdb
(parted) mklabel gpt
(parted) unit TB
(parted) print
1번방법-
(parted) mkpart
name 알아서
filesystem 다시포멧할거니까그냥엔터 아니면 ext4
start 0
end 위에서 print할 때 봤던거 하드끝까지 3.0TB
2번방법-
(parted) mkpart primary 0 0
3번방법-
(parted) mkpart primary 0.00TB 3.00TB
위에1,2,3번방법 아무거나 맘에드는대로 해주면되고
(parted) quit

파일시스템만들기 – 포멧
mkfs –type ext4 /dev/sdXY

마운트하기
$ sudo mkdir /data
$ sudo mount /dev/sdb1 /data
이렇게 하면 부팅할 때 마다 다시 등록해줘야한다.

영구적으로 마운트하기위해서 fstab 등록하기

$ sudo blkid
uuid확인
붙여넣기를 해야되니 ssh로 접속하는게 좋다
/etc/fstab에 위의 정보들을 보고 따라 잘 등록

UUID=39489af1-0f3z-7777c-djen-69a03jf93afd0 /data ext4 errors=remount-ro 0 1
UUID는 blkid했을 때 나온 주소
/data는 파일 마운트 경로
파일시스템타입ext4

$ sudo mount -a
전체 마운트 재등록하라는 뜻. 설정이 제대로 됏다면 오류없이 완료.

끝. 재부팅해본다.
제대로 등록되지 않았다면 컴퓨터가 안 켜질거다. 그렇다면 재설치

GIT 서버 따로 쓰려면

GIT관리 웹서비스가 gitblit,  gitolite,  gitosis 등이 있는데…

gitblit이 그나마 좀 나은데

근데 다 아주 좋지는 않다.

요즘은 네이버에서 yobi라고 나왔는데 권한관리나 보안설정이 잘 되어있는지 모르겠다

이슈트래커는 별도로 쓰고 소스리포지터리는 별도로 생성하는게 나을 것 같다.

 

redmine을 쓴다면 프로젝트 생성부분에 git 리포지터리 생성 정도만 추가하면 되지 않을까?

git 서버는 별도로 생성하고

http://tutorial.polypia.net/index.php/Ubuntu:git_server

Linux SSH public-private key 인증으로 비밀번호 없이 사용하기

http://www.sdm-studio.it/setup-public-key-authentication-from-mac-to-ubuntu-server/

요기 참고했음

 

관리할 서버가 늘어나고 스크립트 사용시에 원격 서버에 비밀번호 없이 접속이 되야 편하기 때문에 설정하게 되었다.

 

1.  ssh키 생성하기

여기서 확인(http://memo.polypia.net/archives/2018)

 

 

2. 키를 타겟 서버로 카피하기

3. 접속하기 테스트

비밀번호를 안쓰고 SSH 접속이 되면 성공

 

4. 안되는 경우

이런 경우 서버의 .ssh 디렉토리 소유권과 권한을 재설정해본다.
chmod 700 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
ssh 서비스를 재시작
sudo service ssh restart

이렇게 해도 안되면 모르겠다.
gg
구글검색

 

CentOS의 경우 6.x 버전의 selinux버그로 인해 발생하는 문제

http://stackoverflow.com/questions/9741574/redhat-6-oracle-linux-6-is-not-allowing-key-authentication-via-ssh

가장 쉬운 해결법인 복붙법. 권한문제는 아니다.

간혹가다가 rsa와 dsa방식중 한가지만 지원하는 서버도 잇다고 하니… 위의 방법이 안먹힌다면 해볼만하다.

 

5.  비밀번호 로그인 금지(키 로그인만 허용)

 

 

Apach, Tomcat 환경에서 서버 부하관리

아파치 접속사용자 트래픽 제한걸기

http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=23995&sca=%BC%AD%B9%F6%BF%EE%BF%B5&page=10

 

 

 

apache의 jkmodule사용해서 loadbalance 이용

http://zosel.net/entry/Tomcat-%EB%B6%80%ED%95%98%EB%B6%84%EC%82%B0-%EA%B5%AC%EC%A1%B0?category=0

 

 

UBUNTU11 Subversion Virtual host 사용하는 경우 sites-available 설정

svn.도메인.com을 주소로 한다고 가정하고 설명한다.

우분투 기본설치 경로인

/etc/apache2/sites-available에서

 

$ sudo cp default svn

$ sudo gedit svn

편집 후

$ sudo a2ensite svn

$ sudo /etc/init.d/apache2 restart

완료… 간단하다. VirtualHost 사용해본분들은 쉽게 할 수 있을듯…

그냥 밑에 //////////////로 둘러싼 부분을 끼워넣으면 된다.

주석 #로 된 부분을 해제하면 svn.도메인.com/svn/OpenRepository로 OpenRepository에 접속이 된다.

 

<VirtualHost *:80>
ServerAdmin webmaster@localhost
////////////////////////////
ServerName svn.도메인.com
#<Location /svn/OpenRepository> (이 부분의 주석을 해제하면 svn.도메인.com/svn/OpenRepository로 접속이 된다)
#    DAV svn
#    SVNPath /home/svn/OpenRepository
#    AuthType Basic
#    AuthName “Welcome  Open Subversion Repository”
#</Location>
#<Location /svn/repository>
<Location /> ( svn.도메인.com/으로 접속이 된다는 소리… ‘/Secure’이라고 해놓으면 svn.도메인.com/Secure’으로 접속할 수 있게된다)

DAV svn
SVNPath /home/svn/repository
AuthType Basic
AuthName “Welcome Secure Subversion Repository”
AuthUserFile /etc/subversion/passwd
Require valid-user
</Location>
////////////////////////////////////////
#    DocumentRoot /home/itvader/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory “/usr/lib/cgi-bin”>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ “/usr/share/doc/”
<Directory “/usr/share/doc/”>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

[우분투 서버 설치-03]설정하기 apache2,samba,mysql,postgresql,vsftp,subversion

apache설정

virtualhost설정

cd /etc/apache2/sites-available

sudo cp default www.polypia.net(기본 파일을 복사해서 도메인 주소로)

sudo cp default memo.polypia.net (파일을 만들고)

sudo nano www(에디트)

————————————————-

<VirtualHost *.80>

ServerAdmin 2345jjkljlfkjkl어쩌고 이 밑에

ServerName www.polypia.net ###이건 서버 이름 도메인 주소를 써주면된다

ServerAlias polypia.net ####이건 서버의 별명

DocumentRoot /var/www ##이건 파일의 경로

대강 이 부분만 손보면 된다.

virtualhost를 사용하지 않을 생각이라면 default만 손보면 될까….

————————————————-

에디트 다 했으면

sudo a2ensite www.polypia.net

sudo a2ensite memo.polypia.net(a2ensite를 해야 아파치에서 일을 시작한다)

sudo /etc/init.d/apache2 restart(아파치 재시작 하면 적용됨)

/etc/apache2/httpd.conf 이 파일에는

ServerName localhost

를 추가해주자.  큰 문제가 생기는건 아니고 실행시킬 때 오류가 뜬다

http.conf에 추가하기 싫다면 conf-available에 넣어주고 a2enconf를 해주면 된다

 

samba설정

sudo adduser userid(삼바에서 사용할 우분투 계정을 만든다)

sudo nano /etc/sudoers(수도추가)

root All=(ALL)ALL

[userid] ALL=(ALL)ALL(이거 추가)

sudo smbpasswd -a userid (계정을 삼바에 셋팅)

sudo nano /etc/samba/smb.conf(설정파일 에디트)

적당한데다가 이런식으로 써넣는다.

————————————-

[공유명]

comment=코멘트겄지여

path=/home/너님의아이디/공유할폴더 (이런식으로 공유할경로를 넣어줌)

guest ok = yes(이렇게 하면 계정도 필요없음 계정을 만들었으면 no)

browseable=yes(파일을 볼 수 있을까? 예스)

writeable=yes(쓰는것도 예스)

————————————-

방화벽을 잘 막아놨다면 이 부분을 게스트 ok로 해놔도 되긴되는데..

막아놓는게 나을 것 같다.

sudo /etc/init.d/smbd restart

mysql설정

이건 그냥 됐던것같다. 기본 비밀번호설정은 설치시 자동으로 된다. 따로 하려묜

sudo mysql -u

postgresql설정

local에서라면 별 설정이  필요없다. pgadmin3라던가 깔아쓰면된다

$sudo nano /etc/postgresql/8.4/main/postgresql.conf

————————————

listen_addresses = ‘*’
password_encryption = on

————————————

/etc/postgresql/8.4/main/pg_hba.conf

—————————————-

# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all ip.ip.ip.ip/32 md5

—————————————-

$sudo -u postgres psql postgres

postgres=# ALTER USER postgres WITH ENCRYPTED PASSWORD ‘설정할패스워드’;

postgres=# q

사용자추가

http://www.postgresql.org/docs/8.4/interactive/app-createuser.html

 

DB추가

http://www.postgresql.org/docs/8.4/interactive/app-createdb.html

vsftp설정

/etc/vsftpd/vsftpd.conf

변경–
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO

local_enable=YES
local_umask=022

ftp는 간단하다 이정도만으로 접속은 된다. 상세 설정은 좀 성가시겠지만…

로그인은 우분투 계정으로

subversion설정

 

적당한 위치에 가서

 

$sudo svnadmin create /home/svn

 

$sudo chown www-data:www-data /home/svn -R

그 다음 블로그를 따라 설정..

http://lethean.pe.kr/2009/07/16/manage-subversion-repositories-in-ubuntu/

추가로subversion virtual host로 설정하기

버추어호스트는 윗쪽의 설정을 다 한 후에 해야된다.

http://itvader1.tistory.com/4

구글에서 한참 검색하니 나오는건 내 블로그 ㅋㅋ