چگونه پروژه جنگو خود را در 8 centos  اجرا  (deploy) کنیم

خب در این پست میخواهم کد جنگو را بر روی سرور CentOS را برای شما شرح دهم. برای شروع باید که پایگاه داده و برنامه خود را راه اندازی سپس سرور برنامه Gunicorn را نصب و پیکربندی می کنیم. این به عنوان رابط برنامه ما عمل می کند و درخواست های مشتری را در تماس های HTTP به پایتون ترجمه می کند که برنامه ما می تواند پردازش کند. سپس Nginx را در مقابل Gunicorn راه اندازی خواهیم کرد تا از مکانیزم های عملکرد اتصال بالا با عملکرد بالا و ویژگی های امنیتی آسان برای اجرای آن بهره مند شویم.خب بیایید شروع کنیم:مرحله اول نصب EPEL repositorysudo 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 --initdbsudo systemctl start postgresqlsudo 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 onlylocal all all peer# IPv4 local connections:#host all all 127.0.0.1/32 identhost all all 127.0.0.1/32 md5# IPv6 local connections:#host all all ::1/128 identhost all all ::1/128 md5بعد از ذخیره سازی با دستورات زیر فایل تنظیمات دیتابیس را ریستارت کنید sudo systemctl restart postgresql sudo systemctl enable postgresqlبا ترمینال دستور زیر را وارد کنید و پایگاه داده . schema و user را بسازید sudo su - postgres psqlCREATE DATABASE <yourdatabasename>CREATE USER myprojectuser WITH PASSWORD 'password';GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;\qخب دیتابیس ساخته شد میریم واسه جنگو sudo pip install virtualenv virtualenv myprojectenvsource myprojectenv/bin/activateخب حالا نصب کنید requiements.txtpip 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 makemigrationspython manage.py migrate python manage.py createsuperuser خب پروژه را اجرا کنید اگه مشکلی نبود ادامه توضیحات من رو بخونید :)))python manage.py runserver 0.0.0.0:8000برای اجرا در nginx نیاز دارید تا gunicorn را نصب و اجرا کنید pip install gunicorn cd ~/myprojectgunicorn --bind 0.0.0.0:8000 myproject.wsgi:applicationسرویس زیر را در بسازید sudo nano /etc/systemd/system/gunicorn.serviceدر این فایل تنظیمات زیر را اعمال کنید حواستون باشه مسیر پروژه تون را جایگزین کنید [Unit]Description=gunicorn daemonAfter=network.target[Service]User=userGroup=nginxWorkingDirectory=/home/user/myprojectExecStart=/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 gunicornsudo systemctl enable gunicornاین بخش تمام شد حالا nginx را نصب کنdnf install nginxsudo 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 -tsudo systemctl start nginxsudo systemctl enable nginx