local 설정
$ sudo vi /etc/default/locale
vi 명령을 통해 접근 후 아래 처럼 적습니다.
LC_CTYPE="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
LANG="en_US.UTF-8"
기본 설정
$ sudo apt-get update
$ sudo apt-get dist-upgrade
$ sudo apt-get install python-pip
$ sudo apt-get install zsh
$ sudo curl -L http://install.ohmyz.sh | sh
$ sudo chsh ubuntu -s /usr/bin/zsh
기본 설정이 끝난 후 exit으로 연결 종료 후 재 연결을 하여 변경된 zsh로 작업을 합니다.
pyenv 설치 및 설정
$ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils
$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
$ sudo vi ~/.zshrc
vi 명령을 통해 접근 후 맨 아래에 아래과 같이 적습니다.
...
export PATH="/home/ubuntu/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
pillow ubuntu python 라이브라리 설치
$ sudo apt-get install python-dev python-setuptools
$ source ~/.zshrc
프로젝트 폴더 생성
$ take mysite
pyenv 설정
$ pyenv install 3.7.2
$ pyenv virtualenv 3.6.2 mysite_venv
$ pyenv local mysite_venv
프로젝트 다운로드
아래의 주소는 자기 레파지토리의 주소로 변경합니다.
$ git clone <https://my-github/repository.git>
프로젝트 requirements 설치
$ pip install -r requirements.txt
uwsgi 설정
웹서버 관리용 유저 생성
$ sudo adduser deploy
uwsgi 설치
$ pyenv virtualenv 3.7.2 uwsgi-env
$ pyenv shell uwsgi-env
$ pip install uwsgi
uwsgi 사이트 파일 작성
$ cd /var/log/
$ sudo mkdir /uwsgi/
$ sudo chown -R ubuntu:ubuntu /srv/
$ cd /srv
$ mkdir uwsgi
$ vi uwsgi.ini
[uwsgi]
chdir = /home/ubuntu/myblog
module = <내 설정 파일>:application
env = DJANGO_SETTINGS_MODULE=<내 설정 파일>
home = /home/ubuntu/.pyenv/versions/mysite_venv
uid = deploy
gid = deploy
socket = /srv/uwsgi/uwsgi.sock
chmod-socket = 666
chown-socket = deploy:deploy
enable-threads = true
master = true
vacuum = true
pidfile = /tmp/mysite.pid
logto = /var/log/uwsgi/@(exec://date +%%Y-%%m-%%d).log
log-reopen = true
uwsgi 서비스 설정 파일 작성
$ vi /srv/uwsgi/uwsgi.service
[Unit]
Description=uWSGI Emperor service
After=syslog.target
[Service]
ExecStart=/home/ubuntu/.pyenv/versions/uwsgi-env/bin/uwsgi -i /srv/uwsgi/uwsgi.ini
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
$ sudo cp -f /srv/uwsgi/uwsgi.service /etc/systemd/system/uwsgi.service
$ sudo systemctl daemon-reload
$ sudo systemctl enable uwsgi
Nginx 관련 설정
Nginx 설치
$ sudo apt-get install software-properties-common python-software-properties
$ sudo add-apt-repository ppa:nginx/stable
$ sudo apt-get update
$ sudo apt-get install nginx
$ nginx -v
Nginx 설정 파일 작성
$ cd /etc/nginx/sites-available/
$ sudo vi mysite.conf
upstream django {
server unix:/srv/uwsgi/uwsgi.sock;
}
server {
listen 80;
server_name <내 사이트 URL>;
charset utf-8;
client_max_body_size 256M;
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params;
}
location /media/ {
alias /home/ubuntu/mysite/.media/;
}
location /static/ {
alias /home/ubuntu/mysite/.static_root/;
}
}
$ sudo ln -sf /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/mysite.conf
$ sudo rm /etc/nginx/sites-enabled/default
$ sudo systemctl restart uwsgi nginx