همیشه برنامهنویس ولی یه برنامهنویس متن باز عاشق پایتون جنگو و تحلیل داده
چگونه پروژه جنگو خود را در 8 centos اجرا (deploy) کنیم
خب در این پست میخواهم کد جنگو را بر روی سرور CentOS را برای شما شرح دهم. برای شروع باید که پایگاه داده و برنامه خود را راه اندازی سپس سرور برنامه Gunicorn را نصب و پیکربندی می کنیم. این به عنوان رابط برنامه ما عمل می کند و درخواست های مشتری را در تماس های HTTP به پایتون ترجمه می کند که برنامه ما می تواند پردازش کند. سپس Nginx را در مقابل Gunicorn راه اندازی خواهیم کرد تا از مکانیزم های عملکرد اتصال بالا با عملکرد بالا و ویژگی های امنیتی آسان برای اجرای آن بهره مند شویم.
خب بیایید شروع کنیم:
مرحله اول نصب EPEL repository
sudo yum install epel-release
در مرحله بعد نیاز است پایگاه داده را نصب کنید، برای اینکار من PostgreSQL را نصب میکنم
dnf module list postgresql
دستور بالا ورژنهای postgres را به شما نشان میدهد ورژن مورد نظر خود را با دستور زیر انتخاب و نصب کنید
sudo dnf module enable postgresql:12
sudo dnf module enable postgresql:<version of postgres>
برای نصب کامل من خودم از ورژن 10 را نصب میکنم
sudo dnf install postgresql-server
بعد نصب نیازه تا پیش نیازها postgres به آن نیاز دارد دستور زیر را وارد کنید
sudo postgresql-setup --initdb
sudo systemctl start postgresql
sudo systemctl enable postgresql
حواستون باشه دیتابیس postgres نیاز داره تا روش ورود به این دیتابیس از جنگو باید باشه حالت md5 است برای این کار فایل تنظیمات اصلی را ویرایش کنید
sudo nano /var/lib/pgsql/data/pg_hba.conf
از ident به md5 تغییر بدید. خیلی مهمهها!!!!!!
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
#host all all 127.0.0.1/32 ident
host all all 127.0.0.1/32 md5
# IPv6 local connections:
#host all all ::1/128 ident
host all all ::1/128 md5
بعد از ذخیره سازی با دستورات زیر فایل تنظیمات دیتابیس را ریستارت کنید
sudo systemctl restart postgresql
sudo systemctl enable postgresql
با ترمینال دستور زیر را وارد کنید و پایگاه داده . schema و user را بسازید
sudo su - postgres
psql
CREATE DATABASE <yourdatabasename>
CREATE USER myprojectuser WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;
\q
خب دیتابیس ساخته شد میریم واسه جنگو
sudo pip install virtualenv
virtualenv myprojectenv
source myprojectenv/bin/activate
خب حالا نصب کنید requiements.txt
pip install -r requiement.txt
از فایل setting ویرایش کنید مشخاصات پایگاه داده را
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'myproject',
'USER': 'myprojectuser',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '',
}
جدولها دیتابیس را migrate کنید
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
خب پروژه را اجرا کنید اگه مشکلی نبود ادامه توضیحات من رو بخونید :)))
python manage.py runserver 0.0.0.0:8000
برای اجرا در nginx نیاز دارید تا gunicorn را نصب و اجرا کنید
pip install gunicorn
cd ~/myproject
gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application
سرویس زیر را در بسازید
sudo nano /etc/systemd/system/gunicorn.service
در این فایل تنظیمات زیر را اعمال کنید
حواستون باشه مسیر پروژه تون را جایگزین کنید
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=user
Group=nginx
WorkingDirectory=/home/user/myproject
ExecStart=/home/user/myproject/myprojectenv/bin/gunicorn --workers 3 --bind unix:/home/user/myproject/myproject.sock myproject.wsgi:application
[Install]
WantedBy=multi-user.target
سرویس gunicorn را اجرا کنید
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
این بخش تمام شد حالا nginx را نصب کن
dnf install nginx
sudo nano /etc/nginx/nginx.conf
تنظیمات زیر را اعمال کنید
server {
listen 80;
server_name server_domain_or_IP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/user/myproject;
}
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://unix:/home/user/myproject/myproject.sock;
}
}
پس ریستارت کن امیدوارم اجرا بشه و
sudo nginx -t
sudo systemctl start nginx
sudo systemctl enable nginx
مطلبی دیگر از این انتشارات
8 اشتباه رایج در توسعه وب
مطلبی دیگر از این انتشارات
حتما باید جاوااسکریپت یاد بگیریم؟
مطلبی دیگر از این انتشارات
5 برنامه برتر برای یادگیری کدگذاری در سال 2020