انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: استفاده از Gunicorn و Nginx بدون استفاده از فریم وُرک  (دفعات بازدید: 1970 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین Sadegh Alirezaie

  • Full Member
  • *
  • ارسال: 182
  • جنسیت : پسر
  • Pythonista
    • Sadegh
سلام دوستان،
من یک کد پایتون دارم که که میخوام تحت وب اجرا بشه:

#!/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-در کل چه منابعی رو پیشنهاد میدید؟

ممنون
« آخرین ویرایش: 19 آبان 1395، 07:10 ب‌ظ توسط AlirezaieS »
Poor Are Those Who Have Eyes But Can Not See

آفلاین Borderliner

  • Full Member
  • *
  • ارسال: 115
  • جنسیت : پسر
  • macOS Sierra 10.12.6
    • Borderliner | GitHub
سلام دوستان،
من یک کد پایتون دارم که که میخوام تحت وب اجرا بشه:

#!/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 رو پیشنهاد میکنم.
  • اگه انگلیسیتون خوب باشه، وب‌سایت ها و داکیومنت‌های خود هر فریم‌ورک، بهترین نقطه برای شروع هستن. اگه میخواید وارد دنیای برنامه‌نویسی حرفه‌ای بشید، مانعی به اسم «زبان فارسی» رو باید کنار بزنید.
« آخرین ویرایش: 20 آبان 1395، 03:59 ق‌ظ توسط Borderliner »
..::Borderliner::..

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
اگه میخواید وارد دنیای برنامه‌نویسی حرفه‌ای بشید، مانعی به اسم «زبان فارسی» رو باید کنار بزنید.
شاید بلد نبودن زبان انگلیسی یک مانع حساب بشه، ولی زبان فارسی مانعی برای هیچ چیزی نیست :)

آفلاین Sadegh Alirezaie

  • Full Member
  • *
  • ارسال: 182
  • جنسیت : پسر
  • Pythonista
    • Sadegh
سلام دوستان،
من یک کد پایتون دارم که که میخوام تحت وب اجرا بشه:

#!/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 رو پیشنهاد میکنم.
  • اگه انگلیسیتون خوب باشه، وب‌سایت ها و داکیومنت‌های خود هر فریم‌ورک، بهترین نقطه برای شروع هستن. اگه میخواید وارد دنیای برنامه‌نویسی حرفه‌ای بشید، مانعی به اسم «زبان فارسی» رو باید کنار بزنید.
با زبان انگلیسی مشکلی ندارم،مشکل از کجا شروع کردنه ](*,)
به هر حال خیلی ممنون از پاسختون
Poor Are Those Who Have Eyes But Can Not See