Kata pengantar
Butuh banyak waktu dan tenaga untuk menulis artikel ini. Saya menemukan banyak instruksi, baik dalam bahasa Inggris maupun dalam bahasa Rusia, tetapi seperti yang saya pahami, semua itu adalah tiruan dari artikel asli di Digital Ocean. Anda bertanya mengapa saya berpikir demikian, tetapi semua karena semua kesalahan dan ketidakakuratan ditransfer dari satu sumber ke sumber lain tanpa perubahan apa pun.
Latihan
Kami memiliki VPS biasa dengan OS Ubuntu, dan kami telah menulis situs kami di Django di PyCharm atau di notepad, dan yang tersisa hanyalah menerbitkannya, mengikat domain, menginstal sertifikat dan pergi.
Langkah pertama adalah memperbarui daftar repositori dan segera menginstal paket nginx:
apt-get update apt-get install nginx
Saya memutuskan untuk menyimpan file situs di direktori / var / www /. Dalam hal ini, kita pindah ke direktori cd / var / www / dan membuat direktori geekhero mkdir baru dan dapatkan jalur berikut: / var / www / geekhero /
Buka direktori geekhero baru: cd geekhero dan buat lingkungan virtual: python3 -m venv geekhero_env
Kita aktifkan lingkungan virtual: sumber geekhero_env / bin / aktifkan dan instal Django di dalamnya: pip instal Django dan segera instal pip instal gunicorn
: django-admin startproject ghproj
; : python manage.py makemigrations
, python manage.py migrate
.
: python manage.py createsuperuser
.
applications, , .
Settings.py , :
import os
– , :
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
Gunicorn
/etc/systemd/system/ : gunicorn.service gunicon.socket:
gunicorn.service:
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=root
WorkingDirectory=/var/www/geekhero # manage.py
ExecStart=/var/www/geekhero/geekhero_env/bin/gunicorn --workers 5 --bind unix:/run/gunicorn.sock ghproj.wsgi:application
# gunicorn
[Install]
WantedBy=multi-user.target
gunicorn.socket:
[Unit] Description=gunicorn socket [Socket] ListenStream=/run/gunicorn.sock [Install] WantedBy=sockets.target
gunicorn.service :
systemd-analyze verify gunicorn.service
NGINX
: /etc/nginx/sites-available/ geekhero ( ) :
server {
listen 80;
server_name example.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /var/www/geekhero; # static
}
location /media/ {
root /var/www/geekhero; # media
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
, /etc/nginx/site-enabled/ :
sudo ln -s /etc/nginx/sites-available/geekhero /etc/nginx/sites-enabled/
, sites-enabled : sudo systemctl restart nginx
nginx :
sudo nginx -t
sudo nginx -t
gunicorn socket:
sudo systemctl enable gunicorn
sudo systemctl start gunicorn
:
sudo systemctl disable gunicorn
sudo systemctl stop gunicorn
, , - HTML python , , , , , python manage.py makemigrations <app> migrate <app> .
/ Gunicorn:
service gunicorn start / service gunicorn stop
:
sudo systemctl status gunicorn sudo journalctl -u gunicorn.socket ( : 05 16:40:19 byfe systemd[1]: Listening on gunicorn socket. )
, :
file /run/gunicorn.sock
: /run/gunicorn.sock: socket
- gunicorn.service .socket, :
systemctl daemon-reload
, nginx:
sudo service nginx start
SSL
certbot Let's Encrypt: sudo apt-get install certbot python-certbot-nginx
certbot: sudo certbot certonly --nginx
- nginx: sudo certbot install --nginx
Tetap hanya untuk memulai ulang layanan nginx: sudo systemctl restart nginx
Hasil
Sebagai bagian dari artikel ini, kami telah membahas bagaimana membawa situs kami ke produksi dengan menginstal Django, Gunicorn, nginx, dan bahkan certbot Let's Encrypt.