Created
April 30, 2020 18:04
-
-
Save MachineLearningIsEasy/be1a8a695f871f43f80df9f0cccccb00 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
Инструкция по настройке Django-приложения на сервере | |
1. Подключаем услугу VPS c операционной системой Ubuntu (например, на reg.ru). | |
2. Проверяем подключение по SSH (в терминале: ssh root@ip). | |
3. Проверяем подключение по ftp (выбираем ftp-клиента исходя из своей операционной системы и вкуса). | |
4. Устанавливаем нужную версию интерпретатора python согласно инструкции через ssh. | |
https://tecadmin.net/install-python-3-8-ubuntu/ | |
5. В проекте на локальном компьютере сохраняем нужные для работы проекта библиотеки. | |
При работе в виртуальном окружении: | |
pip freeze > requirements.txt | |
При работе в общей среде: | |
создаем файл с зависимостями вручную (иначе будут много лишних библиотек), либо ставим виртуальное окружение, в него добавляем все нужные библиотеки и попадаем в условия предыдущего пункта. | |
6. Переносим проект в директорию /root (или /home) на сервер с помощью ftp-клиента. | |
Проверяем, что права на директории 755! | |
7. Создаем виртуальное окружение в папке с проектом на сервере через ssh. | |
python3.8 -m venv my_project | |
8. Активируем интерпретатор в виртуальном окружении. | |
source my_project/bin/activate | |
9. Устанавливаем требуемые библиотеки. | |
pip install -r requirements.txt | |
10. Проверяем работу Django-приложения (в виртуальном окружении): | |
python3.8 manage.py runserver | |
11. Если проект запустился и нет ошибок, то ctrl-C, пока все по плану! | |
12. Устанавливаем PostgreSQL и создаем базу для проекта на Django. | |
Через SSH: | |
sudo apt-get install postgresql postgresql-contrib | |
sudo -u postgres psql | |
CREATE DATABASE django_db; | |
CREATE USER django with NOSUPERUSER PASSWORD '123456'; | |
GRANT ALL PRIVILEGES ON DATABASE django_db TO django; | |
ALTER ROLE django SET CLIENT_ENCODING TO 'UTF8'; | |
ALTER ROLE django SET default_transaction_isolation TO 'READ COMMITTED'; | |
ALTER ROLE django SET TIME ZONE 'Europe/Moscow'; | |
13. В файле settings изменить настройки доступа к базе: | |
DATABASES = { | |
# 'default': { | |
# 'ENGINE': 'django.db.backends.sqlite3', | |
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), | |
# }, | |
'default': { | |
'NAME': 'django_db', | |
'ENGINE': 'django.db.backends.postgresql', | |
'USER': 'django', | |
'PASSWORD': '123456', | |
'HOST': 'localhost' | |
} | |
} | |
14. Устанавливаем коннектер для PostgreSql (psycopg2). | |
Через SSH (в виртуальном окружении): | |
pip install psycopg2-binary | |
15. Выполняем миграции в новую базу: | |
Через SSH (в виртуальном окружении): | |
python3.8 manage.py makemigrations | |
python3.8 manage.py migrate | |
16. Если проект запустился и нет ошибок, то ctrl-C, пока все по плану! | |
17. Установка gunicorn (в виртуальном окружении): | |
pip install gunicorn | |
18. Тестовый запуск проекта | |
gunicorn your_project.wsgi | |
19. Регистрируем gunicorn как сервис | |
sudo apt install nano | |
sudo nano /etc/systemd/system/gunicorn.service | |
В файл добавляем текст: | |
[Unit] | |
Description=gunicorn daemon | |
After=network.target | |
[Service] | |
User=root | |
Group=www-data | |
WorkingDirectory=*** | |
ExecStart=***/my_project_env/bin/gunicorn --access-logfile - --workers 3 --bind unix:***/your_project.sock your_project.wsgi | |
[Install] | |
WantedBy=multi-user.target | |
your_project - имя Вашего проекта (django_test в демонстрационном примере) | |
*** - директория проекта (/root/django_test в демонстрационном примере) | |
20. Регистрируем и запускаем сервис gunicorn | |
sudo systemctl enable gunicorn | |
sudo systemctl start gunicorn | |
sudo systemctl status gunicorn ( либо service gunicorn status) - должен быть active | |
21. Устанавливаем nginx в систему | |
sudo apt install nginx | |
22. Проверяем статус nginx | |
service nginx status (после вбиваем ip в браузере, видим приветственную страницу nginx) | |
23. Перенаправляем запросы на сервис gunicorn | |
cd /etc/nginx/sites-available/ | |
nano default | |
24. Меняем содержимое файла на | |
server { | |
listen 80; | |
server_name your_ip; | |
location = /favicon.ico { access_log off; log_not_found off; } | |
location /static/ { | |
root /root/django_test; | |
} | |
location /media/ { | |
root /root/django_test; | |
} | |
location / { | |
include proxy_params; | |
proxy_pass http://unix:/home/ubuntu/blog/blog.sock; | |
} | |
} | |
25. В директории проекта выполнить команду (в виртуальном окружении): | |
python manage.py collectstatic | |
25. Перезапускаем gunicorn и nginx с новыми настройками | |
service gunicorn restart | |
service nginx restart |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment