آموزش نصب Django روی centos7

دسته بندی: آموزش, لینوکس, نکات فنی
آموزش نصب جنگو روی سنتوس 7

در این مقاله، می‌خواهیم نحوه نصب 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 و تنظیمات مربوط به آن را پیدا خواهید کرد.

حتما بخوانید:  آشنایی با CXS

بیایید دیتابیس را انتقال دهیم و یک کاربر 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

آدرس زیر را در مرورگرتان باز کنید تا صفحه فرود پیش‌فرض جنگو به شما نمایش داده شود:

/http://1.2.3.4:8000

/http://example.com:8000

تصویر زیر چیزی است که خواهید دید:

صفحه فرود جنگو

برای دسترسی به بخش مدیریت هم باید از آدرس‌های زیر استفاده کنید:

http://1.2.3.4:8000/admin

http://example.com:8000/admin

به تصویر زیر خواهید رسید:

صفحه مدیریت جنگو

بعد از لاگین کردن هم صفحه زیر را خواهید دید:

ورود به صفحه مدیریت جنگو

خطاهای احتمالی هنگام نصب Django روی Centos7

در این بخش، دو نوع خطای‌ رایج‌تر را بررسی می‌کنیم:

مورد اول

اولین موردی که بررسی می‌کنیم، خطایی است که ممکن است هنگام اجرای دستور زیر، با آن مواجه شوید:

python manage.py migrate

تصویر زیر، شکل خطا را نشان می‌دهد:

خطای احتمالی هنگام نصب Django روی Centos7

برای انجام این کار، می‌توانید به سایت sqlite مراجعه کنید.

سپس از لینک بالا، فایل سورس با پسوند tar.gz را دانلود کنید. مطابق تصویر زیر:

دانلود جدیدترین نسخه Sqlite

ما در این آموزش، با استفاده از 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

این هم از این.

حتما بخوانید:  جوملا چیست؟ چیزهای مهمی که درباره Joomla باید بدانید

مورد دوم

اگر هنگام اجرای دستور configure، با خطای زیر مواجه شدید، اصلاً نگران نباشید! چگونگی رفع این خطا را هم آموزش خواهیم داد:

آموزش رفع خطا هنگام نصب Django روی Centos7

در گام اول، دستور زیر را اجرا کنید:

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 را آموزش دادیم. هرچیزی که لازم است در این رابطه بدانید، در این مقاله آمده است؛ حتی چگونگی رفع خطاهای احتمالی.

اگر سوالی در این زمینه دارید، حتماً در قسمت کامنت‌ها بنویسید تا متخصصان ما پاسخ‌تان را بدهند.

با آروزی موفقیت برای شما.

5/5 - (2 امتیاز)

مایلید هر دو هفته یک ایمیل مفید دریافت کنید؟

ما را در شبکه‌های اجتماعی دنبال کنید

همچنین شاید دوست داشته باشید!

نظرات کاربران

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

فهرست