Last active
June 6, 2017 12:28
-
-
Save 63phc/27e9e18cc147f7df56abfe7f0e1aeed6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Mushmellow - Life | |
AlltimeNow | |
Устанока нужных пакетов | |
sudo apt-get update | |
sudo apt-get upgrade -y | |
sudo apt-get install aptitude python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx supervisor git vim-nox build-essential supervisor -y | |
libfreetype6-dev - позволяет Pillow выводить надписи на изображения | |
zlib1g-dev - включает поддержку PNG-формата для Pillow | |
libjpeg8-dev - позволяет Pillow обрабатывать JPEG-изображения | |
libwebp-dev - позволяет Pillow работать с форматом webp | |
libtiff-dev - комментарии излишни | |
liblcms2-dev - для поддержки библиотеки управления цветовыми профилями Little Color Management System версии 2. | |
libpq-dev - без этого пакета в виртуальном окружении не соберётся пакет psycopg2, необходимый для использования PostgreSQL | |
libxml2-dev, libxslt1-dev - без этих двух пакетов в виртуальном окружении не соберётся пакет lxml | |
sudo rc-update enable supervisor | |
sudo systemctl enable supervisor | |
sudo systemctl start supervisor | |
Создание БД | |
DEBIAN | |
$ wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add - | |
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" >> /etc/apt/sources.list.d/pgdg.list' | |
$ sudo apt-get update | |
$ sudo apt-get install postgresql postgresql-contrib | |
sudo su - postgres -c 'psql' | |
CREATE DATABASE db; | |
CREATE USER "projectuser" WITH password 'passw0rd'; | |
ALTER ROLE "projectuser" SET client_encoding TO 'utf8'; | |
ALTER ROLE "projectuser" SET default_transaction_isolation TO 'read committed'; | |
ALTER ROLE "projectuser" SET timezone TO 'UTC'; | |
GRANT ALL PRIVILEGES ON DATABASE db TO "projectuser"; | |
\q | |
export LC_ALL="en_US.UTF-8" | |
export LC_CTYPE="en_US.UTF-8" | |
sudo dpkg-reconfigure locales | |
Создание виртуального окружения | |
sudo pip3 install virtualenv | |
virtualenv -p python3 venv | |
source venv/bin/activate | |
pip install -r requirements.txt | |
python manage.py migrate + loaddata | |
python manage.py collectstatic | |
4. | |
gunicorn --bind 0.0.0.0:8000 projectname.wsgi:application | |
~/projectname_gunicorn_start | |
#!/bin/bash | |
NAME="projectname" | |
DIR=/home/projectname/projectname | |
USER=projectname | |
GROUP=projectname | |
WORKERS=3 | |
BIND=unix:/home/projectname/run/projectname_gunicorn.sock | |
DJANGO_SETTINGS_MODULE=projectname.settings | |
DJANGO_WSGI_MODULE=projectname.wsgi | |
LOG_LEVEL=error | |
cd $DIR | |
source ../projectname_venv/bin/activate | |
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE | |
export PYTHONPATH=$DIR:$PYTHONPATH | |
exec ../projectname_venv/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \ | |
--name $NAME \ | |
--workers $WORKERS \ | |
--user=$USER \ | |
--group=$GROUP \ | |
--bind=$BIND \ | |
--log-level=$LOG_LEVEL \ | |
--log-file=- | |
chmod u+x projectname_gunicorn_start | |
mkdir run | |
chmod u+x bin/gunicorn_start | |
Supervisor | |
sudo nano /etc/supervisor/conf.d/projectname.conf | |
[program:projectname] | |
command=/home/projectname/projectname_gunicorn_start | |
user=projectname | |
autostart=true | |
autorestart=true | |
redirect_stderr=true | |
stdout_logfile=/home/projectname/logs/projectname-gunicorn-error.log | |
sudo supervisorctl reread | |
sudo supervisorctl update | |
sudo supervisorctl status projectname | |
Nginx | |
sudo nano /etc/nginx/sites-available/projectname | |
upstream app_server { | |
server unix:/home/projectname/run/projectname_gunicorn.sock fail_timeout=0; | |
} | |
server { | |
listen 80; | |
# ip или доменное имя | |
server_name 192.168.0.172; | |
keepalive_timeout 5; | |
client_max_body_size 4G; | |
access_log /home/projectname/logs/projectname-nginx-access.log; | |
error_log /home/projectname/logs/projectname-nginx-error.log; | |
location = /favicon.ico { access_log off; log_not_found off; } | |
location /media { | |
alias /home/projectname/projectname/fgos/media; | |
} | |
location /static/ { | |
alias /home/projectname/projectname/static/; | |
expires 30d; | |
} | |
# checks for static file, if not found proxy to app | |
location / { | |
try_files $uri @proxy_to_app; | |
} | |
location @proxy_to_app { | |
proxy_set_header X-Real-IP $remote_addr; | |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
proxy_set_header Host $http_host; | |
proxy_redirect off; | |
proxy_pass http://app_server; | |
} | |
# Error pages | |
error_page 500 502 503 504 /500.html; | |
location = /500.html { | |
root /home/fg0s/code/fg0s_v2/fgos/static/build; | |
} | |
} | |
sudo rm /etc/nginx/sites-enabled/default | |
sudo service nginx restart | |
sudo reboot | |
Апдейт приложения | |
source ~/projectname_venv/bin/activate | |
cd projectname | |
git pull origin master | |
python3 manage.py collectstatic | |
python3 manage.py migrate | |
sudo supervisorctl restart projectname | |
sudo supervisorctl status projectname | |
exit | |
если ругается git | |
то git stash | |
потом делаешь git pull ... | |
потом git stash apply | |
и дальше supervicorctl , короче ты понял |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment