در اين راهنما يک برنامه Python را با استفاده از ميکروفريم Flask در Ubuntu 20.04 ايجاد خواهيد کرد. بخش عمده اين مقاله در مورد نحوه تنظيم
پيش نيازها
قبل از شروع اين راهنما ، بايد اين موارد را داشته باشيد:
?
? Nginx نصب شده داشته باشيد، مراحل 1 و 2 نحوه نصب Nginx در اوبونتو 20.04 را دنبال کنيد.
? نام دامنه پيکربندي شده براي اشاره به
o يک رکورد A با your_domain که به آدرس IP عمومي
o يک رکورد A با www.your_domain که به آدرس IP عمومي
? آشنايي با مشخصات WSGI ، که
مرحله 1 – نصب مولفه ها از مخازن اوبونتو
اولين قدم ما نصب تمام بخش هاي مورد نياز از مخازن اوبونتو خواهد بود. اين موارد شامل pip ، مدير بسته پايتون براي مديريت مولفه هاي پايتون خواهد بود. همچنين فايل هاي توسعه پايتون لازم براي ساخت برخي مولفه هاي Gunicorn دريافت خواهيم کرد.
ابتدا ، اجازه دهيد ايندکس بسته محلي را به روز کنيم و بسته هايي را نصب کنيم که به ما امکان مي دهد محيط Python خود را بسازيم. اين موارد شامل python3-pip ، همراه با چند بسته ديگر و ابزار توسعه لازم براي يک محيط برنامه نويسي قوي است:
? $ sudo apt update
?
? $ sudo apt install python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools
با قرارگيري اين بسته ها در جاي خود، به سمت ايجاد يک فضاي مجازي براي پروژه خود برويم.
مرحله 2 – ايجاد يک محيط مجازي پايتون
در مرحله بعدي ، يک محيط مجازي تنظيم خواهيم کرد تا بتوانيم برنامه Flask خود را از ساير فايل هاي Python روي سيستم جدا کنيم.
با نصب بسته python3-venv شروع کنيد که ماژول venv را نصب خواهد کرد:
? $ sudo apt install python3-venv
?
در مرحله بعد ، بياييد يک دايرکتوري والد براي پروژه Flask تهيه کنيم. بعد از ايجاد آن وارد پوشه شويد:
? $ mkdir ~/myproject
?
? $ cd ~/myproject
يک محيط مجازي ايجاد کنيد تا نيازمندي هاي پايتون پروژه Flask خود را با تايپ کردن دستور زير ذخيره کنيد:
? $ python3 -m venv myprojectenv
?
با اين کار يک کپي محلي از Python و pip در ديرکتوري به نام myprojectenv درون ديرکتوري پروژه شما کپي ميشود.
قبل از نصب برنامه ها در محيط مجازي ، بايد آن را فعال کنيد. اين کار را با تايپ کردن دستور زير انجام دهيد:
? $ source myprojectenv/bin/activate
?
اعلان شما تغيير مي کند و نشان مي دهد که اکنون در محيط مجازي کار مي کنيد. چيزي شبيه به (myprojectenv)user@host:~/myproject$ به نظر مي رسد .
مرحله 3 – تنظيم يک برنامه Flask
اکنون که در محيط مجازي خود قرار داريد ، مي توانيد Flask و Gunicorn را نصب کرده و طراحي برنامه خود را شروع کنيد.
ابتدا بگذاريد wheel را با نمونه محلي pip نصب کنيم تا اطمينان حاصل شود که بسته هاي ما حتي در صورت از دست دادن بايگاني wheel ، نصب مي شوند:
? $ pip install wheel
?
توجه داشته باشيد
صرفنظر از اينکه از کدام نسخه Python استفاده مي کنيد ، هنگامي که محيط مجازي فعال مي شود ، بايد از دستور pip استفاده کنيد (نه pip3)
سپس ، اجازه دهيد Flask و Gunicorn را نصب کنيم:
? (myprojectenv) $ pip install gunicorn flask
?
ايجاد يک برنامه نمونه
اکنون که Flask را در دسترس داريد ، مي توانيد يک برنامه ساده ايجاد کنيد. Flask يک ميکروفريم ورک است. و بسياري از ابزارهايي که ممکن است چهارچوبهاي کامل تري داشته باشند را شامل نميشود، و عمدتاً به عنوان ماژول وجود دارد که مي توانيد براي شروع برنامه هاي وب از کمک بگيريد تا بتوانيد به پروژه هاي خود وارد شويد.
در حالي که ممکن است برنامه شما پيچيده تر باشد ، ما برنامه Flask خود را در يک فايل واحد با نام myproject.py ايجاد خواهيم کرد:
? (myprojectenv) $ nano ~/myproject/myproject.py
?
کد برنامه در اين فايل قرار دارد. Flask را وارد مي کند و يک آبجکت Flask را معرفي مي کند. شما مي توانيد از اين ويژگي براي تعريف عملکردهايي استفاده کنيد که بايد هنگام درخواست يک مسير خاص انجام شود:
~/myproject/myproject.py
from flask import Flask
app = Flask(__name__)
@app.route(“/”)
def hello():
return “<h1 style=’color:blue’>Hello There!</h1>”
if __name__ == “__main__”:
app.run(host=’0.0.0.0′)
اين کد اساساً مشخص مي کند که هنگام دستيابي به حوزه root ، چه محتوايي ارائه شود. پس از اتمام فايل را ذخيره کنيد و ببنديد.
اگر راهنماي اوليه تنظيم
? (myprojectenv) $ sudo ufw allow 5000
?
اکنون مي توانيد برنامه Flask خود را با تايپ کردن دستور زير تست کنيد:
? (myprojectenv) $ python myproject.py
?
خروجي مانند اين را مشاهده خواهيد کرد ، که شامل يک هشدار مفيد است که به شما يادآوري مي کند از اين ستاپ
Output
* Serving Flask app “myproject” (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
از آدرس IP
http://your_server_ip:5000
بايد چيزي شبيه به اين را ببينيد:
پس از اتمام ، CTRL-C را در پنجره ترمينال خود بزنيد تا
ايجاد نقطه ورود WSGI
در مرحله بعدي ، فايلي را ايجاد ميکنيم که به عنوان نقطه ورود برنامه ما باشد. اين به
بياييد فايل wsgi.py را فراخواني کنيم:
? (myprojectenv) $ nano ~/myproject/wsgi.py
?
در اين فايل ، بياييد نمونه Flask را از برنامه خود وارد کنيم و سپس آن را اجرا کنيم:
~/myproject/wsgi.py
from myproject import app
if __name__ == “__main__”:
app.run()
پس از اتمام فايل را ذخيره کنيد و ببنديد.
مرحله 4 – پيکربندي Gunicorn
برنامه شما اکنون با يک نقطه ورود مشخص نوشته شده است. اکنون مي توانيم به سراغ پيکربندي Gunicorn برويم.
قبل از پيش روي، بايد بررسي کنيم که Gunicorn ميتواند به درستي برنامه را ارائه کند.
ما مي توانيم اين کار را به سادگي با وارد کردن نام نقطه ورودي خود انجام دهيم. اين نام با نام ماژول ساخته شده است (منهاي پسوند .py) به علاوه نام قابل فراخواني درون برنامه. در نمونه ما ، wsgi:app است.
رابط و پورت را نيز مشخص مي کنيم تا برنامه در يک رابط در دسترس عمومي شروع شود:
? (myprojectenv) $ cd ~/myproject
?
? (myprojectenv) $ gunicorn –bind 0.0.0.0:5000 wsgi:app
?
?
بايد خروجي زير را مشاهده کنيد
Output
[2020-05-20 14:13:00 +0000] [46419] [INFO] Starting gunicorn 20.0.4
[2020-05-20 14:13:00 +0000] [46419] [INFO] Listening at: http://0.0.0.0:5000 (46419)
[2020-05-20 14:13:00 +0000] [46419] [INFO] Using worker: sync
[2020-05-20 14:13:00 +0000] [46421] [INFO] Booting worker with pid: 46421
آدرس IP
http: // your_server_ip: 5000
بايد دوباره خروجي برنامه خود را مشاهده کنيد:
وقتي تأييد کرديد که به درستي کار ميکند ، CTRL-C را در پنجره ترمينال خود فشار دهيد.
اکنون محيط مجازي خود را ايجاد کرده ايم ، بنابراين مي توانيم آن را غيرفعال کنيم:
? (myprojectenv) $ deactivate
?
هر دستور پايتون اکنون دوباره از محيط پايتون سيستم استفاده خواهد کرد.
در مرحله بعد بياييد فايل واحد سرويس سيستمي را ايجاد کنيم. ايجاد فايل واحد سيستمي به سيستم init اوبونتو اجازه خواهد داد که به طور خودکار Gunicorn را شروع کند و برنامه Flask را در زمان بوت
براي شروع يک فايل واحد که به .serviceختم ميشود در ديرکتوري /etc/systemd/systemايجاد کنيد:
? $ sudo nano /etc/systemd/system/myproject.service
?
در داخل ، با بخش [unit ] شروع خواهيم کرد که براي تعيين متاديتا و متعلقات استفاده ميشود. بياييد توصيفي از سرويس را در اينجا قرار دهيم و به سيتم init بگوييم فقط پس از دستيابي به هدف شبکه شروع شود:
/etc/systemd/system/myproject.service
[Unit]
Description=Gunicorn instance to serve myproject
After=network.target
سپس ، اجازه دهيد بخش [Service] را باز کنيم. با اين کار کاربر و گروهي را که مي خواهيم تحت روند کار قرار بگيرند مشخص مي کند. بياييد مالکيت اين فرآيند را به حساب کاربري معمول خود بدهيم زيرا اين فايل در اختيار همه فايل هاي مربوطه است. همچنين بياييد مالکيت گروه را به گروه www-data واگذار کنيم تا Nginx بتواند به راحتي با فرآيندهاي Gunicorn ارتباط برقرار کند. به ياد داشته باشيد که نام کاربري خود را در اينجا جايگزين کنيد:
/etc/systemd/system/myproject.service
[Unit]
Description=Gunicorn instance to serve myproject
After=network.target
[Service]
User=sammy
Group=www-data
در مرحله بعدي ، بگذاريد ديرکتوري کار را مشخص کنيم و متغير محيطي PATH را تنظيم کنيم تا سيستم init بداند که موارد اجرايي اين فرآيند در محيط مجازي ما قرار دارند. اجازه دهيد فرمان شروع سرويس را نيز مشخص کنيم. فرمان موارد زير را انجام ميدهد:
? 3 فرآيند کارگر را شروع ميکند (اگرچه لازم است اين بخش را در صورت وم تنظيم کنيد)
? يک فايل سوکت يونيکس myproject.sock ، در ديرکتوري پروژه ما ايجاد کرده و به آن وصل ميشود. ما يک مقدار umask 007 تنظيم مي کنيم تا فايل سوکت ايجاد شود و دسترسي به مالک و گروه را ايجاد کند در حاليکه دسترسي ديگر را محدود مي کند .
? نام فايل نقطه ورود WSGI را به همراه پايتون قابل فراخواني در آن فايل مشخص ميکند (wsgi: app)
Systemd مستم اين است که ما مسير کاملي را به Gunicorn ، که در محيط مجازي ما نصب شده است ، بدهيم.
به ياد داشته باشيد که نام کاربري و مسير پروژه را با اطلاعات شخصي خود جايگزين کنيد:
/etc/systemd/system/myproject.service
[Unit]
Description=Gunicorn instance to serve myproject
After=network.target
[Service]
User=sammy
Group=www-data
WorkingDirectory=/home/sammy/myproject
Environment=”PATH=/home/sammy/myproject/myprojectenv/bin”
ExecStart=/home/sammy/myproject/myprojectenv/bin/gunicorn –workers 3 –bind unix:myproject
در آخر ، بياييد يک بخش [Install] اضافه کنيم. اگر سيستم را فعال کنيم که در بوت شروع شود ، به systemd ميگويد که به اين سرويس چه چيزي را لينک بدهد. نياز داريم اين سرويس در زمان اجراي سيستم معمولي چند کاربره شروع به کار کند:
/etc/systemd/system/myproject.service
[Unit]
Description=Gunicorn instance to serve myproject
After=network.target
[Service]
User=sammy
Group=www-data
WorkingDirectory=/home/sammy/myproject
Environment=”PATH=/home/sammy/myproject/myprojectenv/bin”
ExecStart=/home/sammy/myproject/myprojectenv/bin/gunicorn –workers 3 –bind unix:myproject.sock -m 007 wsgi:app
[Install]
WantedBy=multi-user.target
با اين کار ، فايل سرويس سيستمي ما کامل است. اکنون آن را ذخيره کنيد و ببنديد.
اکنون مي توانيم سرويس Gunicorn را که ايجاد کرديم شروع کنيم و آن را فعال کنيم تا در بوت شروع شود:
? $ sudo systemctl start myproject
?
? $ sudo systemctl enable myproject
بگذاريد وضعيت را بررسي کنيم:
? $ sudo systemctl status myproject
?
بايد خروجي مانند اين را مشاهده کنيد:
Output
? myproject.service – Gunicorn instance to serve myproject
Loaded: loaded (/etc/systemd/system/myproject.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-05-20 14:15: UTC; 1s ago
Main PID: 46430 (gunicorn)
Tasks: 4 (limit: 2344)
Memory: 51.3M
CGroup: /system.slice/myproject.service
??46430 /home/sammy/myproject/myprojectenv/bin/python3 /home/sammy/myproject/myprojectenv/bin/gunicorn –workers 3 –bind unix:myproject.sock -m 007 wsgi:app
??46449 /home/sammy/myproject/myprojectenv/bin/python3 /home/sammy/myproject/myprojectenv/bin/gunicorn –workers 3 –bind unix:myproject.sock -m 007 wsgi:app
??46450 /home/sammy/myproject/myprojectenv/bin/python3 /home/sammy/myproject/myprojectenv/bin/gunicorn –workers 3 –bind unix:myproject.sock -m 007 wsgi:app
??46451 /home/sammy/myproject/myprojectenv/bin/python3 /home/sammy/myproject/myprojectenv/bin/gunicorn –workers 3 –bind unix:myproject.sock -m 007 wsgi:app
در صورت مشاهده هر گونه خطا ، حتما آنها را قبل از ادامه آموزش برطرف کنيد.
مرحله 5 – پيکربندي Nginx به درخواستهاي پروکسي
با ايجاد يک فايل پيکربندي بلوک جديد
? $ sudo nano /etc/nginx/sites-available/myproject
?
يک بلوک
/etc/nginx/sites-available/myproject
server {
listen 80;
server_name your_domain www.your_domain;
}
سپس ، بياييد يک بلوک موقعيت مکاني اضافه کنيم که مطابق با هر درخواست باشد. در اين بلوک ، فايل proxy_params را وارد خواهيم کرد که پارامترهاي کلي پروکسي مورد نياز براي تنظيم را مشخص مي کند. سپس درخواستها را به سوکت تعريف شده با استفاده از بخشنامه proxy _pass ارسال خواهيم کرد:
/etc/nginx/sites-available/myproject
server {
listen 80;
server_name your_domain www.your_domain;
location / {
include proxy_params;
proxy_pass http://unix:/home/sammy/myproject/myproject.sock;
}
}
پس از اتمام فايل را ذخيره کنيد و ببنديد.
براي فعال کردن پيکربندي بلوک
? $ sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
?
با قرارگيري فايل در آن ديرکتوري ، مي توانيم با تايپ کردن دستور زير خطاهاي نحوي را آزمايش کنيم:
? $ sudo nginx -t
?
اگر بدون نشان دادن مشکلي بازگشت ، فرايند Nginx را ريستارت کنيد تا پيکربندي جديد را بخواند:
? $ sudo systemctl restart nginx
?
در آخر ، اجازه دهيد دوباره فايروال را تنظيم کنيم. ديگر نيازي به دسترسي از طريق پورت 5000 نداريم ، بنابراين مي توانيم اين قانون را حذف کنيم. سپس مي توانيم به
? $ sudo ufw delete allow 5000
?
? $ sudo ufw allow ‘Nginx Full’
اکنون بايد بتوانيد در مرورگر وب خود به نام دامنه
http: // your_domain
بايد خروجي برنامه خود را مشاهده کنيد:
اگر با خطايي مواجه شديد ، موارد زير را بررسي کنيد:
? sudo less /var/log/nginx/error.log ورودهاي مربوط به خطاي Nginx را بررسي مي کند.
? sudo less /var/log/nginx/access.log ورودهاي مربوط به دسترسي Nginx را بررسي مي کند.
? sudo journalctl -u nginx ورود هاي مربوط به فرآيند Nginx را بررسي مي کند.
? sudo journalctl -u myproject ورود هاي GUNICORN برنامه Flask شما را بررسي مي کند.
مرحله 6 – امنيت بخشي به برنامه
براي اطمينان از ايمن ماندن ترافيک رو به
ابتدا بسته Certbot Nginx را نصب کنيد:
? $ sudo apt install python3-certbot-nginx
?
Certbot روشهاي مختلفي براي به دست آوردن گواهينامه هاي SSL از طريق افزونه ها ارائه مي دهد. افزونه Nginx از پيکربندي مجدد Nginx و لود مجدد در صورت وم ، مراقبت خواهد کرد. براي استفاده از اين افزونه ، دستور زير را تايپ کنيد:
? $ sudo certbot –nginx -d your_domain -d www.your_domain
?
اين دستور certbot را با افزونه –nginx با استفاده از -d اجرا ميکند تا نام هايي که مي خواهيم گواهي براي آنها اعتبار داشته باشد ، مشخص شوند.
اگر اولين بار است که certbot را اجرا ميکنيد ، از شما خواسته مي شود که آدرس ايميل را وارد کنيد و با شرايط سرويس موافقت کنيد. بعد از انجام اين کار ، certbot با
اگر موفقيت آميز باشد ، certbot از شما مي پرسد که مي خواهيد تنظيمات HTTPS خود را چگونه پيکربندي کنيد.
Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
——————————————————————————-
1: No redirect – Make no further changes to the webserver configuration.
2: Redirect – Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you’re confident your site works on HTTPS. You can undo this
change by editing your web server’s configuration.
——————————————————————————-
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):
انتخاب خود را مشخص کنيد و سپس ENTER بزنيد. پيکربندي به روز خواهد شد ، و Nginx مجدد لود مي شود تا تنظيمات جديد را انتخاب کند. certbot با پيغامي همراه خواهد بود که به شما مي گويد روند موفقيت آميز بوده و گواهي نامه هاي شما در کجا ذخيره شده است:
Output
IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your_domain/privkey.pem
Your cert will expire on 2020-08-. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the “certonly” option. To non-interactively renew *all* of
your certificates, run “certbot renew”
– Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
– If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
اگر دستورالعمل نصب Nginx را در پيش نيازها دنبال کرديد ، ديگر نيازي به اجازه پروفايل HTTP نخواهيد داشت:
? $ sudo ufw delete allow ‘Nginx HTTP’
?
براي تأييد پيکربندي ، اجازه دهيد يکبار ديگر با استفاده از https: // به دامنه خود برويم:
https: // your_domain
بايد يک بار ديگر خروجي برنامه خود را همراه با نشانگر امنيتي مرورگر خود مشاهده کنيد ، که بايد نشانگر امنيت سايت باشد.
نتيجه
در اين راهنما ، يک برنامه ساده Flask را در يک محيط مجازي Python ايجاد و ايمن کرده ايد. يک نقطه ورود WSGI ايجاد کرديد تا هر
Flask يک چارچوب بسيار ساده اما بسيار انعطاف پذير به معناي ارائه برنامه ها با قابليت هاي زياد بدون محدوديت در ساختار و طراحي است. مي توانيد از خدمات پشته عمومي که در اين راهنما تشريح شده است استفاده کنيد تا بتوانيد کاربردهاي Flask را که طراحي کرده ايد ارائه دهيد.
نحوه ارائه برنامه هاي کاربردي فلاش با Gunicorn و Nginx در اوبونتو 20.04
مقدمه
در اين راهنما يک برنامه Python را با استفاده از ميکروفون Flask در Ubuntu 20.04 ايجاد خواهيد کرد. بخش عمده اين مقاله در مورد نحوه تنظيم
پيش نيازها
قبل از شروع اين راهنما ، بايد اين موارد را داشته باشيد:
•
• Nginx نصب شده ، مراحل زير 1 و 2 نحوه نصب Nginx در اوبونتو 20.04 را دنبال کنيد.
• نام دامنه پيکربندي شده براي اشاره به
o يک ضبط با your_domain که به آدرس IP عمومي
o ضبط با www.your_domain که به آدرس IP عمومي
• آشنايي با مشخصات WSGI ، که
مرحله 1 – نصب قطعات از مخازن اوبونتو
اولين قدم ما نصب تمام قطعات مورد نياز از مخازن اوبونتو خواهد بود. اين شامل پيپ ، مدير بسته پايتون است که اجزاي پايتون ما را مديريت مي کند. ما همچنين پرونده هاي توسعه پايتون را براي ساختن برخي از اجزاي Gunicorn لازم دريافت خواهيم کرد.
ابتدا ، اجازه دهيد شاخص بسته محلي را به روز کنيم و بسته هايي را نصب کنيم که به ما امکان مي دهد محيط Python خود را بسازيم. اين موارد شامل python3-pip ، همراه با چند بسته ديگر و ابزار توسعه لازم براي يک محيط برنامه نويسي قوي است:
با استفاده از اين بسته ها ، به سمت ايجاد يک فضاي مجازي براي پروژه خود برويم.
مرحله 2 – ايجاد يک محيط مجازي پايتون
در مرحله بعدي ، ما يک محيط مجازي تنظيم خواهيم کرد تا بتوانيم برنامه Flask خود را از ساير پرونده هاي Python روي سيستم جدا کنيم.
با نصب بسته python3-venv که ماژول venv را نصب خواهد کرد شروع کنيد:
در مرحله بعد ، بياييد يک دايرکتوري والدين براي پروژه Flask تهيه کنيم. بعد از ايجاد آن وارد پوشه شويد:
يک محيط مجازي ايجاد کنيد تا نيازهاي پايتون پروژه Flask خود را با تايپ کردن ذخيره کنيد:
با اين کار يک کپي محلي از Python نصب مي شود و به پوشه اي به نام myprojectenv درون فهرست پروژه شما مي پيوندد.
قبل از نصب برنامه ها در محيط مجازي ، بايد آن را فعال کنيد. اين کار را با تايپ کردن انجام دهيد:
اعلان شما تغيير مي کند و نشان مي دهد که اکنون در محيط مجازي کار مي کنيد. چيزي شبيه به اين خواهد بود: (myprojectenv) user @ host: ~ / myproject $.
مرحله 3 – تنظيم يک برنامه فلاسک
اکنون که در محيط مجازي خود قرار داريد ، مي توانيد Flask و Gunicorn را نصب کنيد و در طراحي برنامه خود شروع کنيد.
ابتدا بگذاريد چرخ را با نمونه محلي پيپ نصب کنيم تا اطمينان حاصل شود که بسته هاي ما حتي در صورت وجود بايگاني چرخ هاي چرخي نصب نمي شوند:
توجه داشته باشيد
صرفنظر از اينکه از کدام نسخه Python استفاده مي کنيد ، هنگامي که محيط مجازي فعال مي شود ، بايد از دستور pip استفاده کنيد (نه pip3).
بعد ، اجازه دهيد Flask و Gunicorn را نصب کنيم:
ايجاد يک برنامه نمونه
اکنون که Flask را در دسترس داريد ، مي توانيد يک برنامه ساده ايجاد کنيد. فلاسک يک ميکرو فريم ورک است. اين شامل بسياري از ابزارهايي نيست که ممکن است چهارچوبهاي کامل تري داشته باشند ، و عمدتاً به عنوان ماژول وجود دارد که مي توانيد براي شروع برنامه هاي وب به شما کمک کنند تا بتوانيد به پروژه هاي خود وارد شويد.
در حالي که ممکن است برنامه شما پيچيده تر باشد ، ما برنامه Flask خود را در يک پرونده واحد با نام myproject.py ايجاد خواهيم کرد:
کد برنامه در اين پرونده زندگي مي کند. اين فلاسک را وارد مي کند و يک شيء فلاسک را فوراً مي کند. شما مي توانيد از اين کار براي تعريف کارکردهايي استفاده کنيد که بايد هنگام درخواست يک مسير خاص انجام شود:
اين اساساً مشخص مي کند که هنگام دستيابي به حوزه root ، چه محتوايي ارائه شود. پس از اتمام پرونده را ذخيره و بسته کنيد.
اگر راهنماي اوليه تنظيم
اکنون مي توانيد برنامه Flask خود را با تايپ کردن تست کنيد:
خروجي مانند موارد زير را مشاهده خواهيد کرد ، از جمله يک هشدار مفيد که به شما يادآوري مي کند از اين تنظيم
به آدرس IP
http: // your_server_ip: 5000
شما بايد چيزي شبيه به اين را ببينيد:
پس از اتمام ، CTRL-C را در پنجره ترمينال خود بزنيد تا
ايجاد نقطه ورود WSGI
در مرحله بعدي ، بگذاريد فايلي را ايجاد کنيم که به عنوان نقطه ورود برنامه ما باشد. اين به
بياييد با پرونده wsgi.py تماس بگيريم:
در اين پرونده ، اجازه دهيد نمونه Flask را از برنامه ما وارد کنيم و سپس آن را اجرا کنيم:
پس از اتمام پرونده را ذخيره و بسته کنيد.
مرحله 4 – پيکربندي Gunicorn
برنامه شما اکنون با يک نقطه ورود تأسيس نوشته شده است. ما ميتوانيم
اکنون به پيکربندي Gunicorn برويد.
قبل از حرکت ، بايد بررسي کنيم که Gunicorn مي تواند به درستي برنامه را ارائه دهد.
ما مي توانيم اين کار را با ساده تر کردن نام ورودي خود انجام دهيم. اين به عنوان نام ماژول ساخته شده است (منهاي پسوند .py) ، به علاوه نام تماس گيرنده درون برنامه. در مورد ما ، اين wsgi است: برنامه.
ما همچنين مي خواهيم رابط و پورت را به هم متصل کنيم تا برنامه در يک رابط در دسترس عمومي شروع شود:
شما بايد خروجي مانند موارد زير را ببينيد:
آدرس IP
http: // your_server_ip: 5000
بايد خروجي برنامه خود را مشاهده کنيد:
وقتي تأييد کرد که عملکرد مناسب دارد ، CTRL-C را در پنجره ترمينال خود فشار دهيد.
ما اکنون با محيط مجازي خود انجام داده ايم ، بنابراين مي توانيم آن را غيرفعال کنيم:
هر دستور پايتون اکنون دوباره از محيط پايتون سيستم استفاده خواهد کرد.
در مرحله بعدي ، بياييد پرونده واحد خدمات سيستم شده را ايجاد کنيم. ايجاد يک فايل واحد سيستمي به سيستم اوليه Ubuntu اجازه مي دهد تا هر زمان که
براي شروع يک فايل واحد که در قسمت service استفاده مي شود در فهرست / etc / systemd / system ايجاد کنيد:
در داخل ، ما با بخش [Unit] شروع خواهيم کرد ، که براي مشخص کردن ابرداده و وابستگي ها استفاده مي شود. بياييد شرح خدمات خود را در اينجا قرار دهيم و به سيستم init بگوييم که فقط پس از رسيدن به هدف شبکه ، اين کار را شروع مي کند:
درباره این سایت