Skip to content

Instantly share code, notes, and snippets.

@63phc
Last active June 6, 2017 12:28
Show Gist options
  • Save 63phc/27e9e18cc147f7df56abfe7f0e1aeed6 to your computer and use it in GitHub Desktop.
Save 63phc/27e9e18cc147f7df56abfe7f0e1aeed6 to your computer and use it in GitHub Desktop.
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