با سلام و درود، قصد دارم یه آموزش خیلی سریع برای استقرار پروژه ی جنگویی ( استقرار جنگو ) روی سرور لینوکسی و وب سرور Nginx و به صورت asgiا استفاده از daphne را با هم داشته باشیم.
با توجه به این که گفتم آموزش سریع هست، فرض بر این دارم که با لینوکس و Nginx آشنایی به اندازه کافی داشته باشید. و تنظیمات asgi را نیز برای پروژه خودتون انجام داده باشید و صرفا به مباحت استقرار ( استقرار جنگو ) می پردازیم.
قدم اول ساخت سرویس فایل Systemd برای daphne می باشد:
پس ابتدا یک فایل از نوع سرویس در پوشه system از systemd می سازیم:
sudo nano /etc/systemd/system/project_asgi.service
این فایل به صورت کامل از قرار زیر می باشد:
[Unit] Description=my_project Daphne Service After=network.target [Service] Type=simple User=erp Group=www-data WorkingDirectory=/var/projects/my_project ExecStart=/var/projects/.env/bin/daphne --access-log /var/projects/my_project/log/daphne-access.log -u /var/projects/my_project/my_project.sock my_project.asgi:application [Install] WantedBy=multi-user.target
قسمت اول [Unit] که dependency ها و metadata ها را مشخص می کند. که ما اسم پروژه و اینکه بعد از برقراری نتورک اجرا شود را تعریف می کنیم.
قسمت دوم [Service] می باشد که ما user و group که میخواهیم فرآیند تحت آن اجرا شود را مشخص می کنید. کاربر را کاربر عمومی که به فولدر های مورد نظر دسترسی دارد انتخاب می کنیم و گروه آن را www-data می گذاریم تا بتواند با nginx ارتباط داشته باشد. سپس دایرکتوری که در آن کار می کنیم را مشخص کرده و دستوری که برای اجرای سرویس نیاز می باشد را می نویسیم.
قسمت سوم [Install]
که میخواهیم بگیم به چه چیزی لین سرویس بعد از روع لینک خواهد شد. ما می خواهیم وقتی regular multi-user system بالا و در دسترس هست، این سرویس شروع شود.
حال فایل را ذخیره کنید و از حالت ویرایش خارج شوید.
سپس دو دستور زیر را بزنید:
sudo systemctl start project_asgi.service sudo systemctl enable project_asgi.service
حال چک کنید وضعیت سرویس daphne که ایجاد کردیم چطور می باشد:
sudo systemctl status project_asgi.service
حال چک کنید فایل .sock داخل دایرکتوری مشخص شده ساخته شده است یا خیر. دایرکتوری که داخل سیستم فایل بالا تعریف کردیم و به قرار زیر بود:
/var/projects/my_project/my_project.sock
قدم دوم Nginx:
ابتدا با ساخت سرور بلاک شروع می شود (آموزش کامل داخل بلاگ هست ، نصب nginx روی ubuntu – تنظیم سروربلاک برای Nginx):
sudo nano /etc/nginx/sites-available/myproject
که به صورت کامل محتوایش به صورت زیر می شود:
upstream channels-backend { server 0.0.0.0:8001; } server { listen 80; server_name erp.local 10.11.10.70; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /var/projects/myproject; } location / { include proxy_params; proxy_pass http://unix:/var/projects/myproject/myproject.sock; } location /ws/ { proxy_pass http://channels-backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_redirect off; proxy_set_header Host $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-Host $server_name; } }
با توجه به فرض اولیه آموزش، وارد جزییات سرور بلاک Nginx نمی شوم. و تمام
ارسال پاسخ