Alireza Sadeghi
Alireza Sadeghi
خواندن ۵ دقیقه·۴ سال پیش

بالا آوردن یک پروژه ساده جنگو روی اینترنت

سلام

من در حال یادگیری جنگو بودم که این فکر به سرم زد که چطور میتونم پروژه ای که نوشتم رو روی اینترنت بذارم که برای همه قابل دسترسی باشه

خب یه راهش این هست ادم بره VPS بخره و بخواد وابستگی ها مختلف رو نصب کنه وب سرورش رو بالا بیاره DNS ها رو تنظیم کنه منابع رو مدیریت کنه و .....

یه راه دیگه اش هم این هست که از سرویس هایی به اسم PaaS استفاده کنیم که خودشون همه این کارا رو برای ما انجام میدن و ما فقط کافیه پروژه خودمون رو روش اپلود کنیم

من تصمیم گرفتم از سرویس ابری فندق استفاده کنم چون هم سازنده هاش رو دوست دارم و ادم های باحالی هستن هم به صورت رایگان یه فضایی رو در اختیارتون قرار میده که بتونید پروژه های سبک و تستی خودتون رو روش بالا بیارین

به طور مرسوم برای استفاده از این سرویس ها شما نیاز دارید که داکر بلد باشین اما فندق برای یه سری فریمورک ها مثل جنگو خودش تقریبا همه کارها رو براتون انجام میده که میتونید بدون دانش دانکر پروژه خودتون رو روی سرویس هاشون دیپلوی کنید

تمام این آموزش برگرفته شده از سرکله زدن من با مستندات فندق که میتونید از اینجا بخونیدش

خب قبل از هرکاری لازمه که توی سایت فندق یه حساب کاربری درست کنید میتونید از لینک برای ثبت نام استفاده کنید

بعد از ساخت حساب کاربری نیازه که دوتا تغیر رو توی پروژه جنگو خودتون اعمال کنید

اول از همه فایل setting.py رو داخل ادیتور خودتون باز کنید و دنبال این خط بگردین

ALLOWED_HOSTS = []

و اون رو به

ALLOWED_HOSTS = ['*']

تغیر بدین اینطوری جنگو اجازه میده که بقیه هم بتونن به برنامه شما دسترسی داشته باشن

تغیر دوم این هست که یه متغیر

STATIC_ROOT

رو به آخرین خط فایل setting.py اضافه کنید و مقدارش رو برابر با مسیر فایل های static پروژه اتون قرار بدین که معمولا توی همون پوشه پروژه جنگو قرار داره مثلا برای من میشه

STATIC_ROOT='/static/'

خب کار ما فایل های جنگو تموم شد فقط دوتا تغیر ایجاد کردیم اول اینکه اجازه بدیم بقیه از بیرون به پروژه ما دسترسی داشته باشن دوم اینکه یه مقدار برای STATIC_ROOT ست کردیم چون CLI فندق بهش نیاز داره که در ادامه بهش میرسیم

آخرین تغیر و فایلی که باید ایجاد کنیم یه فایل requirements.txt هست تا به فندق بفهمونیم پروژه ما چه وابستگی هایی رو داره برای انجام اینکار دو راه وجود داره اما قبل از اون طریق ترمینال وارد پوشه اصلی پروژه اتون بشید چون این فایل باید اونجا باشه

به دو روش میتونید این فایل رو ایجاد کنید

یا میتونید از طریق دستور

pip freeze > requirements.txt

تمام پکیچ هایی که نصب کردین رو داخل فایل requirements.txt کپی کنید (اینکار در صورتی توصیه میشه که از virtualenv ها استفاده میکنید چون در غیر این صورت هر پکیچی که از طریق pip نصب کردین کپی میشه داخل فایل requirements.txt )

یا اگه فقط از جنگو استفاده کردین به صورت دستی یه فایل requirements.txt درست کنید و این مقادیر رو داخلش کپی کنید

asgiref==3.3.1
Django==3.1.7
pytz==2021.1
sqlparse==0.4.1

خب حالا ما همه مقدمات کار برای بالا اوردن سرویس جنگوی خودمون روی فندق رو آماده کردیم بریم سر وقت CLI فندق

داخل ترمینال این دستور رو وارد کنید و اینتر رو بزنید (قبلش مطعمن بشید با دستور exit از virtualenv خودتون خارج شده باشین )

pip install fandogh_cli --upgrade

با اینکار CLI فندق رو روی سیستم خودتون نصب میکنید و اینطوری میتونید از طریق ترمینال سرویس های خودتون رو کنترل و برسی کنید

بعد از نصب CLI فندق دستور

fandogh login

رو بزنید و برای لاگین کردن از ادرس ایمیل و پسوردی که توی فندق حساب ساختین استفاده کنید (به خاطر نکات امنیتی پسوردی که وارد میکنید توی ترمینال نمایش داده نمیشه)

خب حالا همه چیز برای فندق اماده اس تا بتونه برنامه ما رو میزبانی کنه

از طریق ترمینال به پوشه پروژه خودتون برید و دستور زیر رو وارد کنید

fandogh source init‍‍

بعد از وارد کردن این دستور یه پیغام نمایش داده میشه که میخواد به سرویستون یه اسم بدین اسم دلخواه خودتون رو وارد کنید و اینتر رو بزنید

Service Name: mywebsite

بعدش یه لیست براتون باز میشه که شامل پروژه هایی هست که فندق خودش میتونه به صورت خودکار Dockerfile شون رو ایجاد کنه که چون پروژه ما جنگو هست عدد ۲ رو وارد کنید و اینتر رو بزنید

-[1] Static Website
-[2] Django Project
-[3] Laravel Project
...
Please choose one of the project types above: 2

بعدش ازتون میپرسه فایل های پروژه اتون کجاس که چون ما توی پوشه اصلی پروژه هستیم نیازی نیست چیزی رو وارد کنیم و اینتر رو میزنیم تا این مرحله هم رد بشه

The context directory [.]:

بعدش از ما ورژن پایتون مورد نظرمون رو میپرسه اگه ورژن خاصی مد نظرتون هست وارد کنید در غیر این صورت این سوالم خالی بذارید و اینتر بزنید

Python version [3.7]:

بعدش از شما ادرس فایل WSGI رو میپرسه اینجا لازمه که یکم دقت کنید چون اگه مسیر این فایل رو درست وارد نکنید وقتی وارد ادرسی که بهتون میده بشید با خطای ۵۰۴ مواجه میشید (فایل WSGI معمولا توی همون پوشه ای هست که فایل setting.py وجود داره و اسمش wsgi.py هست)

دقت کنید که مسیر فایل ها با . جدا میشه نه با / و نیازی نیست اخرش py. رو هم بنویسید

معمولا خودش فایل های WSGI رو که پیدا میکنه نمایش میده و شما فقط کافیه همون رو عینا تایپ کنید و اینتر بزنید

Possible wsgi modules are:
- myproject.wsgi
WSGI module: myproject.wsgi

بعدش از شما مسیر فایل های static رو میپرسه که همون چیزی رو که قبلا توی فایل setting.py وارد کردین وارد میکنید اگرم پروژتون فایل استاتیک نداره مقدار " رو وارد کنید

Static Path [static]: /static/

توی اخرین مرحله ازتون ادرس پوشه media رو میپرسه اگه همچین پوشه ای ندارید فقط کافیه اینتر رو بزنید تا ازش رد بشین

خب کار تموم شد الان فقط کافیه دستور

fandogh source run

رو بزنید و بقیه کار ها رو به فندق بسپرید خودش همه فایل ها رو روی سرویس خودش اپلود میکنه Dockerfile مورد نیاز رو میسازه و بقیه داستان ها

اگه همه چیز رو درست انجام داده باشین و یه عالمه پیغام روی صفحه ترمینال نشون داده میشه و در اخر این عبارت رو مینویسه

You can press ctrl + C to exit details service state monitoring

میتونید ادرس پروژه انلاین خودتون رو توی این قسمت پیدا کنید و توی مرورگر واردش کنید تا نتیجه کارتون رو ببینید

Domains:

در آینده هم اگه تغیری توی پروژتون دادین فقط کافیه مجددا دستور

fandogh source run

بزنید تا تغیراتتون اعمال بشه (اگه از طریق pip چیزی رو نصب کردین باید فایل requirements.txt رو هم آپدیت کنید )

امیدوارم که این آموزش به کارتون اومده باشه اگه سوالی داشتین خوشحال میشم توی بخش نظرات بپرسید تا باهم جوابش رو پیدا کنیم


برنامه نویسیجنگوفندقفضای ابری
کد نویسی که تلاش میکنه برنامه نویس بشه
شاید از این پست‌ها خوشتان بیاید