02. 서버 이전

서버 이전 준비 공통 사항

시스템 패키지 업데이트

sudo apt-get update && sudo apt-get dist-upgrade

로케일/시간대 설정

sudo locale-gen --purge en_US.UTF-8 ko_KR.UTF-8
sudo update-locale LANG=en_US.UTF-8
sudo apt-get install gettext
sudo timedatectl set-timezone Asia/Seoul
sudo timedatectl set-ntp 1

SSH 서버

  • /etc/ssh/sshd_config 파일 수정
Port 22123
AddressFamily inet

AllowGroups spam

UseDNS no

UFW 설치 및 VPS 방화벽 설정

allow-cloudflare.sh, allow-whitelist.sh 파일 등록

호스트 이름 변경

sudo hostnamectl set-hostname 호스트이름
sudo hostname

/etc/hosts 파일에 '127.0.0.1 호스트이름` 줄 추가

데이터베이스 서버 이전

패키지 설치

sudo apt-get install postgresql postgresql-contrib

사용자 생성, 데이터베이스 생성, 권한부여, 장고 최적화

sudo -u postgres psql

CREATE DATABASE testdb;

CREATE ROLE egg WITH LOGIN PASSWORD '비밀번호';
GRANT ALL PRIVILEGES ON DATABASE testdb TO egg;

ALTER ROLE egg SET client_encoding TO 'utf8';
ALTER ROLE egg SET default_transaction_isolation TO 'read committed';
ALTER ROLE egg SET timezone TO 'UTC';

원격 접속 허용

  • /etc/postgresql/10/main/postgresql.conf 파일 수정
listen_addresses = '*'
port = 5432
  • /etc/postgresql/10/main/pg_hba.conf 파일 수정
host    all             all             0.0.0.0/0               trust

원격 접속 테스트

psql -h 123.123.123.123 -p 5432 -U egg

백업

sudo -u postgres pg_dump -Fp testdb > testdb.sql

파일 전송

scp -P 22 -i .ssh/aws-lightsail.pem testdb.sql  egg@123.123.123.123:~

데이터베이스 삭제 및 생성

DROP DATABASE testdb;
CREATE DATABASE testdb;

복구

sudo -u postgres psql -d testdb -f testdb.sql

웹 장고 서버 이전

패키지 설치

sudo apt-get install nginx
sudo apt-get install python3-venv
sudo apt-get install build-essential python3-dev libpq-dev
sudo apt-get install gettext
sudo apt-get install libcairo2 libpango1.0-0
sudo apt-get install rabbitmq-server
sudo apt-get install memcached

일반 그룹, 일반 사용자 추가, su/sudo 명령어 권한 제한

sudo groupadd spam
sudo useradd -g spam -b /home -m -s /bin/bash ham
dpkg-statoverride --update --add root sudo 4750 /bin/su
dpkg-statoverride --update --add root sudo 4750 /usr/bin/sudo

웹 디렉토리 준비

디렉토리 생성

sudo mkdir -p /var/www/com.example.www
sudo chown ham:spam /var/www/com.example.www
cd /var/www/com.example.www
sudo su ham
python3 -m venv venv
mkdir logs run ssl
exit
sudo chgrp www-data run/

git 웹 프로젝트 클론

git clone https://github.com/USERNAME/PROJECT.git repo
  • assets, media 디렉토리는 없으므로 만들어줘야 합니다.
  • secret.py, production.py 등 프로젝트 변수값이 있는 파일을 만들어줘야 합니다.
  • deploy-django.sh, update-repo.sh 파일 준비
source venv/bin/activate
(venv) pip install wheel psycopg2-binary
sudo -u ham -H bash -C 'update-repo.sh'

rabbit-mq, celery 설정

rabbit-mq 시작

sudo systemctl enable rabbitmq-server
sudo systemctl start rabbitmq-server

egg 관리자 사용자 추가 및 디폴트 guest 삭제

sudo rabbitmqctl add_user egg PASSWORD
sudo rabbitmqctl set_user_tags egg administrator
sudo rabbitmqctl set_permissions egg ".*" ".*" ".*"
sudo rabbitmqctl delete_user guest

/var/www/com.example.www/conf/celery.conf, /etc/systemd/system/celery.service 파일 복사

celery 워커 데몬 시작

sudo systemctl enable celery
sudo systemctl start celery

celery 워커 데몬 재시작

sudo systemctl daemon-reload
sudo systemctl restart celery

memcached 시작

sudo service memcached start

NGINX, SSL, uWSGI 서비스 데몬

NGINX

  • /etc/nginx/sites-available/com.example.www, /etc/nginx/sites-available/default 파일 복사
sudo ln -s /etc/nginx/sites-available/com.example.www /etc/nginx/sites-enabled/

NGINX 설정 검사 및 재시작

sudo nginx -t
sudo systemctl restart nginx

SSL

  • /var/www/com.example.www/ssl/example.com.crt, /var/www/com.example.www/ssl/example.com.key 파일 복사

uWSGI

sudo apt-get install python3-dev python3-pip python3-setuptools
sudo -H pip3 install --upgrade pip
sudo -H pip3 install wheel
sudo -H pip3 install uwsgi

/etc/systemd/system/uwsgi.service 파일 및 /etc/uwsgi/sites 디렉토리 전체 복사

uWSGI 시작 및 확인

sudo systemctl enable uwsgi
sudo systemctl start uwsgi
sudo systemctl status uwsgi

crontab 등록

Cloudflare DNS 변경

Last Modified: 2019-06-10 18:06

blog comments powered by Disqus