برای نصب nginx دستور زیر را در ترمینال وارد کنید:
sudo apt-get install nginx
پس از نصب موفقیتآمیز میتوانید ورژن نصب شده را اینگونه مشاهده کنید:
nginx -v
برای دسترسی به فایلهای nginx وارد دایرکتوری زیر میشویم:
cd /etc/nginx
و با دستور ll
میتوانید لیستی از این محتویات را مشاهده کنید:
کانفیگهای nginx در فایل nginx.conf قرار دارد و برای تنظیمات و ارتباط با فریمورک جنگو باید در این فایل دست ببریم.
برای صرفا دیدن محتویات این فایل دستور زیر را وارد کنید:
cat nginx.conf
برای تنظیمات ابتدا دستوری زیر را وارد کرده تا بتوانیم در فایل مورد نظر تغییرات ایجاد کنیم:
sudo nano nginx.conf
تنظیمات nginx تنظیمات شامل موارد زیادی میشود اما چیزی که در خطوط زیر میبینید سادهترین حالت ممکن را شامل میشود:
events { } http { server { server_name 11.34.22.12; #server_name http://example.com listen 9003; location / { proxy_pass http://127.0.0.1:9002; } } }
برای اطمینان از syntax درست خطوط بالا دستور زیر را اجرا کنید:
sudo nginx -t
و نتیجه آن:
و nginx را reload یا restart کنید:
sudo nginx -s reload sudo service nginx restart
در واقع server_name همان آدرسی است که شما به آن ssh زدهاید و میتوانید آدرس domain نیز بجای آن وارد کنید. پس client برای استفاده از سرویس بالا آمده باید آدرس server_name را call کند. listen نیز پورتی است که client باید آن را call کند و ما عملا nginx را مجبور کردهایم که برای ارتباط با فریمورک ما به پورت مثلا 9003 گوش دهد. بنابراین client میتواند چیزی شبیه به خط پایین را call کند:
http://example.com:9003/something
یا
http://11.34.22.12:9003/something
تا اینجا nginx اطلاعت و request ها را از client دریافت کرده و حال باید برای تحلیل آنها را به فریموررک بفرستد. در اسکوپ location این proxy_pass است که این وظیفه را برعهده دارد. آدرس 127.0.0.1 در واقع همان آدرسی است که زمانی که در local پروژه را run می کردیم استفاده میشد. دقیقا نشاندهنده این مفهوم است که ما کد و پروژه خود را پشت nginx قرار دادهایم و nginx با پروژه ما مثل یک پروژه local برخورد میکند. شما میتوانید هر پورت و آی پی را در این قسمت قرار دهید.
حالا rezaenv را active کنید و دستور:
python manage.py runserver 127.0.0.1:9002
اجرا کنید.
اگر پروژه با موفقیت run شد یکی از آدرسهای صحیح وبسایت یا api را call کنید. شما باید نتیجه مورد نظر خود را ببینید و اگر با خطاهای درون پروژه ای برخورد کردید به این معناست که سیستم deployment شما کاملا صحیح است و شما صرفا نیاز دارید تا کد خود و تنظیمات فریمورک خود را بازبینی کنید.
دقت کنید در صورت بسته شدن ترمینال session شما از بین میرود و ریکوئستها respond نخواهند داد برای این کار میتوانید از ابزار screen استفاده کنید.
فراموش نکنید ERROR 502 به این معنا میباشد که nginx درخواستی را از یک client دریافت کرده است ولی نمیتواند با پروژه شما ارتباط برقرار کند.
پایان.