در این مقاله، میخواهیم نحوه نصب Django روی centos7 را آموزش دهیم. به دلیل اینکه جنگو به کنترلپنل سرور وابسته نیست، پس میتوان روی سروری که کنترل پنل دایرکت ادمین دارد هم نصب شود.
نکته: ما در این مقاله، در نظر گرفتهایم که شما با زبان برنامهنویسی پایتون و متعلقاتش آشنایی دارید. اگر اینطور نیست، خواندن مقاله پایتون چیست کمکتان میکند.
برویم سراغ اصل مطلب، یعنی آموزش!
چگونگی نصب فریم ورک Django روی Cenots7
قبل از هرکاری، باید با کمک دستورات زیر، پایتون 3 را نصب کنید:
sudo yum install centos-release-scl sudo yum install rh-python36
خوب است بدانید که برای نصب فریم ورک جنگو، روشهای مختلفی وجود دارد. در این آموزش، ما میخواهیم از Virtual Environment یا محیط مجازی برای انجام این کار استفاده کنیم.
فقط کافی است مراحل زیر را به ترتیب انجام دهید.
ابتدا به مسیری که میخواهیم Django را در آن نصب کنیم میرویم. ما تصمیم داریم آن را در مسیر /root نصب کنیم. دستور زیر در انجام این کار یاریتان میکند:
cd mkdir my_django_app cd my_django_app
برای دسترسی به پایتون 3.6، باید یک shell جدید با استفاده از ابزار scl راه اندازی کنید:
scl enable rh-python36 bash
دستور زیر را، برای ایجاد یک محیط مجازی جدید اجرا کنید:
python3 -m venv venv
دستور بالا، یک دایرکتوری به نام venv ایجاد میکند. این دایرکتوری شامل یک کپی از فایل باینری پایتون، Pip package manager، کتابخانه استاندارد پایتون و سایر فایل های پشتیبانی کننده است. در ضمن میتوانید هر نامی که دوست دارید را به این محیط مجازی اختصاص دهید.
برای شروع استفاده از این محیط مجازی، باید آن را با اجرای اسکریپت زیر فعال کنید:
source venv/bin/activate
پس از فعال شدن Virtual Environment، نام محیط مجازی (در اینجا venv) به ابتدای خط فرمان shell اضافه میشود:
(venv) [root@server my_django_app]#
حالا جنگو را نصب میکنیم:
pip install Django
نکته: در محیط مجازی، میتوانید از دستور pip بهجای pip3 و از python بهجای python3 استفاده کنید.
برای تأیید نصب، از دستور زیر استفاده کنید که نسخه جنگو را نشان میدهد:
python -m django --version
برای تست، یک پروژه جنگو ایجاد میکنیم، دستور زیر این کار را برایمان انجام میدهد:
django-admin startproject mydjangoapp
با دستور بالا، یک پوشه mydjangoapp در مسیر جاری ایجاد میشود.
tree mydjangoapp/
خروجی دستور فوق، باید مشابه اطلاعات زیر باشد:
mydjangoapp/ |-- manage.py `-- mydjangoapp |-- __init__.py |-- settings.py |-- urls.py `-- wsgi.py
در داخل آن مسیر، اسکریپت اصلی برای مدیریت پروژهها با نام manager.py و یک مسیر دیگر از جمله پیکربندی پایگاه داده و Django و تنظیمات مربوط به آن را پیدا خواهید کرد.
بیایید دیتابیس را انتقال دهیم و یک کاربر admin ایجاد کنیم.
آموزش ساخت دیتابیس و کاربر ادمین در فرایند نصب Django در Centos7
کار با رفتن به مسیر mydjangoapp شروع میشود:
cd mydjangoapp
نکته1: جنگو بهطور پیشفرض، از دیتابیس SQLite استفاده میکند. شما میتوانید از PostgreSQL، MariaDB ، Oracle یا MySQL Database هم استفاده کنید.
نکته2: جنگو دیتابیس مخصوص خود را دارد و اختلالی در سرویسهای دیتابیس دیگر ایجاد نمیکند.
برای انتقال پایگاه داده، دستور زیر را اجرا کنید:
python manage.py migrate
با اجرای دستور فوق، باید خروجیای مشابه خروجی زیر را مشاهده کنید:
Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying sessions.0001_initial... OK
برای اینکه بتوانید از Django admin interface استفاده کنید، باید پس از انتقال دیتابیس، یک کاربر مدیر هم ایجاد کنید. دستور زیر کمکتان میکند:
python manage.py createsuperuser
این دستور از شما نام کاربری، آدرس ایمیل و رمز عبور را برای کاربر مدیر درخواست میکند. درست مشابه اطلاعات زیر:
Username (leave blank to use 'linuxize'): admin Email address: admin@linuxize.com Password: Password (again): Superuser created successfully.
تست و آزمایش Django روی Centos7
سرور development را با استفاده از اسکریپت management.py و سپس گزینه runserver استارت کنید:
python manage.py runserver 0.0.0.0:8000
برای تنظیم دامنه نیز از دستور مشابه زیر استفاده کنید (آموزش افزودن دامنه در ادامه آورده شده است):
python manage.py runserver example.com:8000
سپس خروجی زیر را مشاهده خواهید کرد:
Performing system checks... System check identified no issues (0 silenced). October 20, 2018 - 11:16:28 Django version 2.1.2, using settings 'mydjangoapp.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
اگر Django را روی ماشین مجازی نصب کردهاید و میخواهید به Django development server دسترسی پیدا کنید، باید فایل settings.py را ویرایش کرده و آدرس IP سرور را به لیست ALLOWED_HOSTS اضافه کنید.
به دستور زیر توجه کنید:
ALLOWED_HOSTS = ['1.2.3.4']
بهجای 1.2.3.4 باید آی پی آدرس سرور را بنویسید.
اگر میخواهید جنگو را روی دامنه deploy کنید، خط فوق را بهصورت زیر اصلاح کنید
ALLOWED_HOSTS = [‘1.2.3.4’,’example.com’]
یا:
ALLOWED_HOSTS = [‘1.2.3.4’,’example.com’,’ww.example.com’]
حالا باید فایل را ذخیره کنید.
آموزش تنظیم فایروال
کار را با دستور زیر آغاز کنید:
sudo firewall-cmd --zone=public --permanent --add-port=8000/tcp sudo firewall-cmd --reload
آدرس زیر را در مرورگرتان باز کنید تا صفحه فرود پیشفرض جنگو به شما نمایش داده شود:
تصویر زیر چیزی است که خواهید دید:
برای دسترسی به بخش مدیریت هم باید از آدرسهای زیر استفاده کنید:
به تصویر زیر خواهید رسید:
بعد از لاگین کردن هم صفحه زیر را خواهید دید:
خطاهای احتمالی هنگام نصب Django روی Centos7
در این بخش، دو نوع خطای رایجتر را بررسی میکنیم:
مورد اول
اولین موردی که بررسی میکنیم، خطایی است که ممکن است هنگام اجرای دستور زیر، با آن مواجه شوید:
python manage.py migrate
تصویر زیر، شکل خطا را نشان میدهد:
برای انجام این کار، میتوانید به سایت sqlite مراجعه کنید.
سپس از لینک بالا، فایل سورس با پسوند tar.gz را دانلود کنید. مطابق تصویر زیر:
ما در این آموزش، با استفاده از source code نصب نسخه جدید را انجام خواهیم داد:
cd /opt wget https://www.sqlite.org/2021/sqlite-autoconf-3360000.tar.gz tar -xzf sqlite-autoconf-3360000.tar.gz cd sqlite-autoconf-3360000 ./configure make install
خب از آنجایی که Python repl همچنان از نسخه قدیمی استفاده میکند، دردی از ما دوا نمیشود! در ادامه از دستور زیر استفاده کنید:
python >>> import sqlite3 >>> sqlite3.sqlite_version '3.7.17'
حالا با استفاده از کلیدهای ctlr+d از محیط پایتون خارج شوید. نکته مهم اینکه برای استفاده از مسیر جدید sqlite3، باید مجدداً پایتون را کامپایل کنید.
با استفاده از دستور زیر، میتوانید دستور sqlite را بررسی کنید:
sqlite3 --version
در ادامه مراحل، باید نسخه پایتون را بهروزرسانی کنید. می توانید برای این کار میتوانید به سایت Python مراجعه کنید. سپس دستور زیر را اجرا کنید:
cd /opt/ cd /opt/Python-x.y.z LD_RUN_PATH=/usr/local/lib ./configure LD_RUN_PATH=/usr/local/lib make LD_RUN_PATH=/usr/local/lib make altinstall
اکنون باید از نسخه بهروزشده استفاده کنید:
python3 Python 3.6.8 (default, May 8 2020, 11:34:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sqlite3 >>> sqlite3.sqlite_version '3.31.1'
مجدداً به مسیر زیر رفته و دستوری که با خطا مواجه شده را وارد کنید:
Cd /root/my_django_app/mydjangoapp/ python manage.py migrate
اگر خطا از بین نرفت، مراحل زیر را طی کنید:
cd /opt/ cp -rf /usr/lib64/libsqlite3.so.0.8.6 /usr/lib64/libsqlite3.so.0.8.6_bak cp -rf /usr/local/lib/libsqlite3.so.0.8.6 /usr/lib64/libsqlite3.so.0.8.6 python3 Python 3.7.9 (default, Apr 30 2021, 20:11:56) [GCC 7.3.1 20180712 (Red Hat 7.3.1-12)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sqlite3 >>> sqlite3.sqlite_version '3.36.0'
کار در اینجا به اتمام رسیده و قاعدتاً باید خطا رفع شده باشد:
Cd /root/my_django_app/mydjangoapp/ python manage.py migrate
خروجیای که دریافت میکنید، باید مشابه زیر باشد:
Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying sessions.0001_initial... OK
این هم از این.
مورد دوم
اگر هنگام اجرای دستور configure، با خطای زیر مواجه شدید، اصلاً نگران نباشید! چگونگی رفع این خطا را هم آموزش خواهیم داد:
در گام اول، دستور زیر را اجرا کنید:
yum install gcc glibc –y
اگر مشکل برطرف نشد، سراغ دستور زیر بروید:
yum -y reinstall glibc gcc gcc-c++ make
در برخی موارد نادر، ممکن است باز هم مشکل حل نشود! در چنین حالاتی، باید سراغ استفاده از دستور زیر بروید:
yum reinstall wget gcc gcc-c++ flex bison make bind bind-libs bind-utils openssl openssl-devel perl quota libaio libcom_err-devel libcurl-devel gd zlib-devel zip unzip libcap-devel cronie bzip2 cyrus-sasl-devel perl-ExtUtils-Embed autoconf automake libtool which patch mailx bzip2-devel lsof glibc-headers kernel-devel expat-devel db4-devel
نکته: اگر از این دستور استفاده میکنید، حتماً باید نسخههای php را هم بیلد کنید!
جمعبندی
در این مقاله بهطور کامل و مفصل، چگونگی نصب Django روی Centos7 را آموزش دادیم. هرچیزی که لازم است در این رابطه بدانید، در این مقاله آمده است؛ حتی چگونگی رفع خطاهای احتمالی.
اگر سوالی در این زمینه دارید، حتماً در قسمت کامنتها بنویسید تا متخصصان ما پاسختان را بدهند.
با آروزی موفقیت برای شما.