سلام دوستان،
من یک کد پایتون دارم که که میخوام تحت وب اجرا بشه:
#!/usr/bin/python
# -*- Coding: UTF-8 -*-
def Main(env,start_response):
start_response('200 OK', [('Content-Type','text/html')])
data = "<h1>It Works!</h1>"
return data
برای اجرای اون با gunicorn از دستور زیر توی ترمینال استفاده میکنم:
gunicorn -b :8080 web:Main
که web اسم فایل (web.py) و Main اسم تابعی هست که که باید اجرا بشه،
حالا من میخوام nginx رو طوری کانفیگ کنم که مستقیم از gunicorn استفاده کنه بدون اینکه بخوام از ترمینال برای اجرای gunicorn استفاده کنم.
اسناد خود gunicorn هم مطالعه کردم ولی متوجه نشدم
لینک
(چطور باید انجام بدم؟)
لینک های زیادی رو گشتم اما همه از Django,Flask,VirtualEnv استفاده کرده بودن و من میخوام از صفر شروع کنم.
چند سوالی که پیش اومده برام:
1-برای یادگیری برنامه نویسی وب با پایتون چه راهکاری رو پیشنهاد میدید؟
2-آیا شروع یادگیری بدون استفاده از فریمورک کار درستی هست؟
3-در کل چه منابعی رو پیشنهاد میدید؟
ممنون
ابتدا خود nginx رو نصب کنید:
sudo apt-get install nginx
بعد از فایل "/etc/nginx/sites-available/default" بکآپ تهیه کنید:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
و سپس همین فایل رو ویرایش کنید:
sudo nano /etc/nginx/sites-available/default
تنظیمات رو همه رو پاک کنید و تنظیمات زیر رو وارد کنید:
server {
listen 80;
server_name test.dev;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
برای اینکه مطمئن بشید اشتباه تایپی نداشتید، دستور زیر رو وارد کنید:
sudo nginx -t
به nginx اجازه عبور از Firewall رو بدید.
اگه از Debian یا Ubuntu استفاده میکنید،
sudo ufw allow 'Nginx Full'
اگه از CentOS یا Fedora استفاده میکنید:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
در نهایت nginx رو Restart کنید:
sudo systemctl restart nginx
حالا اگه به
http://test.dev برید، به برنامهتون منتقل میشید.
باید این نکته رو یادآوری کنم که nginx به صورت خودکار همزمان با بوت شدن سیستم اجرا میشه، پس نیازی به اجرای دستی اون ندارید. میتونید بعد از دستور اجرای سرور، یه & به انتهاش اضافه کنید تا توی background اجرا بشه. ولی بهتون توصیه میکنم از pm2 استفاده کنید (از npm دریافت کنید).
جواب سوالاتون:
- اگه روی پایتون بودنش اصرار ندارید، به شدت Ruby on Rails یا Node.js رو پشینهاد میکنم بهتون. دنیای وب به سمت این دو تکنولوژی پیش میره و خیلی پیشرفته تر و حرفهای تر از فریمورکهای پایتون هستن. اگه روی پایتون بودنش حساس هستید، Django برای پروژههای بزرگ، Flask برای پروژه های متوسط و کوچیک، Bottle برای پروژههای خیلی کوچیک مناسب هستن.
- بستگی داره. اگه میخواید با جزئیات تمام یاد بگیرید، کار خوبیه. ولی به شدت خسته کننده میشه و سرعت کارتون در حد قابل توجهی میاد پایین. اگه خود پروژه و به نتیجه رسوندنش براتون مهمه، از فریمورک استفاده کنید. برای یادگیری همه چیز درمورد برنامه نویسی وب، باز هم Node.js رو پیشنهاد میکنم.
- اگه انگلیسیتون خوب باشه، وبسایت ها و داکیومنتهای خود هر فریمورک، بهترین نقطه برای شروع هستن. اگه میخواید وارد دنیای برنامهنویسی حرفهای بشید، مانعی به اسم «زبان فارسی» رو باید کنار بزنید.