서버 이전 준비 공통 사항
시스템 패키지 업데이트
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