پایتون و AWS: راهاندازی سرور مجازی و استقرار برنامه کوچک ☁️🚀
نوشتن یک اپلیکیشن با پایتون (Python)، چه با فریمورک قدرتمندی مانند Django یا یک میکروفریمورک سبک مثل Flask، تنها نیمی از مسیر است. سوالی که به سرعت پیش میآید این است: “حالا چگونه این برنامه را در دسترس جهان قرار دهم؟” پاسخ در دنیای “رایانش ابری” (Cloud Computing) نهفته است و پادشاه بلامنازع این دنیا، AWS (Amazon Web Services) است. یادگیری نحوه راهاندازی یک سرور مجازی (Virtual Server) در AWS و استقرار (Deploy) یک برنامه ساده پایتون بر روی آن، یکی از حیاتیترین مهارتها برای تبدیل شدن از یک “برنامهنویس” به یک “توسعهدهنده فول-استک” یا “مهندس DevOps” است.
چرا AWS؟ (و EC2 چیست؟) 🤔
AWS پلتفرم خدمات ابری آمازون است که تقریباً هر سرویسی که تصور کنید (از دیتابیس گرفته تا هوش مصنوعی) را ارائه میدهد. اما ستون فقرات آن، سرویسی به نام EC2 (Elastic Compute Cloud) است.
EC2 به زبان ساده، به شما اجازه میدهد تا یک کامپیوتر (سرور مجازی) را در یکی از دیتاسنترهای عظیم آمازون در سراسر جهان اجاره کنید. شما کنترل کامل (دسترسی root) بر روی این کامپیوتر دارید.
- مقیاسپذیری: میتوانید با یک سرور بسیار کوچک و رایگان (در قالب Free Tier) شروع کنید و هر زمان که اپلیکیشن شما رشد کرد، آن را با چند کلیک به یک سرور غولپیکر ارتقا دهید.
- انعطافپذیری: شما انتخاب میکنید که سیستمعامل چه باشد (اغلب اوبونتو یا آمازون لینوکس)، چه نرمافزارهایی روی آن نصب شود و چگونه پیکربندی شود.
- استاندارد صنعتی: دانستن AWS یک امتیاز بزرگ در رزومه هر توسعهدهنده پایتون است.
گام اول: راهاندازی سرور مجازی (EC2) 🖥️
راهاندازی سرور EC2 بسیار ساده است.
- ثبتنام در AWS: به aws.amazon.com بروید و یک حساب کاربری بسازید. (نیاز به کارت اعتباری دارد، اما نگران نباشید، ما از Free Tier یا “ردیف رایگان” استفاده خواهیم کرد).
- رفتن به داشبورد EC2: پس از ورود، سرویس EC2 را جستجو و انتخاب کنید.
- Launch Instance (راهاندازی نمونه):
- AMI (Amazon Machine Image):** سیستمعامل خود را انتخاب کنید. `Ubuntu Server 22.04 LTS` یک انتخاب عالی و استاندارد است.
- Instance Type (نوع نمونه):** `t2.micro` را انتخاب کنید. این گزینه شامل ردیف رایگان (Free Tier) میشود.
- Key Pair (جفت کلید):** این “رمز عبور” شما برای سرور است. یک Key Pair جدید بسازید، به آن نامی (مثلاً `my-aws-key`) بدهید و فایل `.pem` را دانلود کنید. این فایل را در جایی امن نگه دارید! اگر آن را گم کنید، دیگر نمیتوانید به سرور خود وصل شوید.
مهمترین گام: تنظیم Security Group (فایروال)
در همان صفحه راهاندازی، بخشی به نام “Security Groups” وجود دارد. این فایروال مجازی سرور شماست. شما باید پورتهای لازم را باز کنید:
- Type: `SSH` | Port: `22` | Source: `My IP` (این به شما اجازه میدهد *فقط* از IP اینترنت فعلی خودتان به سرور SSH بزنید. این امنتر است).
- Type: `HTTP` | Port: `80` | Source: `Anywhere` (این به همه اجازه میدهد وبسایت شما را ببینند).
- Type: `HTTPS` | Port: `443` | Source: `Anywhere` (برای آینده که SSL را فعال کنید).
پس از این تنظیمات، دکمه “Launch Instance” را بزنید.
گام دوم: اتصال به سرور و آمادهسازی محیط 🛠️
پس از چند دقیقه، سرور شما “Running” میشود. آدرس Public DNS (یا IP) آن را از داشبورد EC2 کپی کنید. حالا ترمینال (در لینوکس/مک) یا (CMD/PowerShell/WSL در ویندوز) را باز کنید.
# 1. (فقط در مک/لینوکس) دسترسی فایل کلید را محدود کنید
chmod 400 /path/to/my-aws-key.pem
# 2. اتصال با SSH
# آدرس DNS عمومی خود را جایگزین کنید
ssh -i /path/to/my-aws-key.pem ubuntu@YOUR_PUBLIC_DNS_ADDRESS
# 3. پس از اتصال به سرور، آن را بهروزرسانی کنید
sudo apt update
sudo apt upgrade -y
# 4. پایتون، Pip و Venv (محیط مجازی) را نصب کنید
sudo apt install python3-pip python3-venv -y
# 5. وب سرور Nginx را نصب کنید (به عنوان Reverse Proxy عمل خواهد کرد)
sudo apt install nginx -y
گام سوم: استقرار یک برنامه Flask ساده (روش اصولی) 🚀
ما برنامه پایتون را مستقیماً روی پورت ۸۰ اجرا نمیکنیم (این کار ناامن و غیراصولی است). ما از Gunicorn به عنوان سرور برنامه استفاده میکنیم (که روی پورت ۸۰۰۰ اجرا میشود) و از Nginx به عنوان “Reverse Proxy” استفاده میکنیم تا ترافیک ورودی پورت ۸۰ را به پورت ۸۰۰۰ هدایت کند.
۱. ساخت برنامه Flask:
# در سرور خود، یک پوشه بسازید
mkdir myapp
cd myapp
# محیط مجازی بسازید و فعال کنید
python3 -m venv venv
source venv/bin/activate
# Flask و Gunicorn را نصب کنید
pip install flask gunicorn
# فایل برنامه پایتون را بسازید
nano app.py
محتویات فایل `app.py` (در ادیتور nano پیست کنید و `Ctrl+X` سپس `Y` را بزنید):
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
# یک متن ساده که نشان دهد برنامه از سرور AWS اجرا میشود
return "سلام دنیا! اپلیکیشن پایتون من روی AWS اجرا شد!"
# (توجه: دیگر `app.run` در اینجا وجود ندارد، Gunicorn این کار را میکند)
۲. اجرای برنامه با Gunicorn:
# در همان پوشه myapp و با venv فعال
# برنامه app (فایل app.py) را با 3 کارگر (worker) روی پورت 8000 اجرا کن
gunicorn --workers 3 --bind 0.0.0.0:8000 app:app
(این دستور را در پسزمینه اجرا کنید، مثلاً با `nohup … &` یا `systemd` برای حالت دائمی).
۳. پیکربندی Nginx (Reverse Proxy):
حالا به Nginx میگوییم ترافیک پورت ۸۰ را به برنامه ما در پورت ۸۰۰۰ بفرستد.
# فایل کانفیگ پیشفرض را ویرایش کنید
sudo nano /etc/nginx/sites-available/default
محتویات `location / { … }` را پیدا کنید و آن را به شکل زیر تغییر دهید:
...
location / {
proxy_pass http://127.0.0.1:8000; # به Gunicorn پاس بده
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
...
کانفیگ را ذخیره کرده و Nginx را ریاستارت کنید:
sudo systemctl restart nginx
تبریک میگوییم! اکنون اگر آدرس IP عمومی یا DNS سرور EC2 خود را در مرورگر وارد کنید، باید پیام “سلام دنیا! اپلیکیشن پایتون من روی AWS اجرا شد!” را ببینید.
جمعبندی ✅
ترکیب پایتون و AWS یک مهارت فوقالعاده قدرتمند در بازار کار امروز است. راهاندازی یک سرور EC2 و استقرار یک برنامه ساده، اولین قدم برای ورود به دنیای DevOps (توسعه و عملیات) و رایانش ابری است. اگرچه در ابتدا مفاهیمی مانند Security Groups و Nginx ممکن است کمی پیچیده به نظر برسند، اما تسلط بر آنها، ارزش شما را به عنوان یک توسعهدهنده به شدت افزایش میدهد. این مهارتها در دورههای پیشرفته آموزش پایتون در آموزشگاه البرز به صورت پروژهمحور تدریس میشوند.
برنامههای پایتون خود را جهانی کنید! 🌍
نوشتن کد پایتون عالی است، اما استقرار آن بر روی یک سرور واقعی و در دسترس قرار دادن آن برای جهان، مهارتی است که شما را متمایز میکند.
- ✅ آموزش پایتون و فریمورکهای وب (Flask/Django)
- ✅ درک مفاهیم سرور، لینوکس و Nginx
- ✅ پروژههای عملی استقرار اپلیکیشن در محیط ابری
ثبتنام در دوره پایتون پیشرفته و DevOps













