راهاندازی برنامهی نوشته شده روی سرور اصلی یا به اصطلاح Deployment، همواره کار چالش برانگیزی است و انتقال تجربه در آن، میتواند تا حدودی کار را آسانتر کند. در این مقاله قصد داریم به آموزش راهاندازی برنامهی نوشته شده با فریمورک جنگو روی سرور Centos بپردازیم.
همانطور که میدانید جنگو یک فریمورک وبی برای زبان پایتون میباشد که به ما امکان توسعهی بخش سمت سرور یک اپلیکیشن وبی را میدهد. برای راهاندازی برنامهیتان روی سرور Centos ای که تازه نصب شده لازم است دو مرحلهی زیر را انجام دهید:
مرحلهی ۱؛ نصب ابزارهای مورد نیاز روی Centos
۱. نصب ابزارهای اولیه برای برنامهنویسی در Centos
sudo yum group install "Development Tools"
۲.نصب سیستم مدیریت پایگاهدادهی مورد نیازتان (DBMS)
دقت کنید که اگر شما از پایگاه دادهی sqlite استفاده میکنید، نیاز به نصب برنامهی خاصی ندارید اما اگر شما از پایگاهدادهی دیگری استفاده میکنید، با یک جستجوی ساده میتوانید به سادگی آن را بیابید. برای مثال این آموزش، منبع مناسبی برای نصب ورژن 5.7 mysql روی سرور Centos میباشد.۳. نصب ورژن 3.6 پایتون (در صورت نیاز)
ورژن 2.7 پایتون به طور پیشفرض روی سیستمعامل Centos نصب میباشد. چنان که شما نیاز به ورژن 3.6 پایتون یا بالاتر نیاز داشتید، مراحل زیر را انجام دهید: • افزودن ius rpm به لیست ریپازیتوریهای Centossudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
• آپدیت yum برای کامل کردن فرایند افزودن
sudo yum update
• نصب پایتون ورژن 3.6 و ابزارهای اولیه آن
sudo yum install -y python36u python36u-libs python36u-devel python36u-pip python36-devel
۴. نصب ابزارهای لازم برای ارتباط بین پایتون و mysql
برای نصب این پکیجها دستور زیر را اجرا کنید:sudo yum install -y mysql-connector-python mysql-community-libs mysql-community-devel
۵. نصب mod_wsgi برای پایتون 3.6
برای پیادهسازی با مود wsgi، نیاز است که این پکیج را نیز نصب کنید:sudo yum install -y python36u-mod_wsgi
۶. فعال سازی سرویس apache روی سرور (httpd)
سرویس apache یا همان httpd به طور پیشفرض روی Centos نصب است. برای اطمینان دستور زیر را اجرا کنید:sudo yum install -y httpd mod_ssl
حال تنها لازم است آنرا فعال سازی کنید. اجرای دستور زیر یک راه بای این کار است:
sudo systemctl enable httpd
sudo systemctl start httpd
7. تنظیم فایروال برای اجازه داده به ترافیک وبی
در Centos 7 به طور پیشفرض ترافیک وبی بلاک شده و نیاز است که آن را مجاز کنید:sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo systemctl restart firewalld
۸. اضافه کردن httpd به لیست مجاز SELinux
sudo semanage permissive -a httpd_t
حال سرور شما تمام ابزارها و امکانات لازم برای شروع عمیلات راهاندازی را دارد.
مرحلهی ۲؛ فرایند راه اندازی اپلیکیشن
۱. انتقال فایلهای پروژه به سرور
ابتدا به آدرس خانه ی apache بروید و پروژه ی خود را به آنجا انتقال دهید:cd /var/www
لازم است که در این فاز کلیهی کارهای لازم برای اجرای برنامهیتان به شکل لوکال انجام شده باشد مثل ساخت virtualenv، نصب پکیجهای موردنیاز و ست کردن envirement variable ها.
در آخر نیز برای اطمینان از نبود مشکل پرمیشن، پرمیشن ادرس خانهی apache را به آن اساین کنید:
sudo chown -R apache:apache /var/www
نکته در ساخت دیتابیس mysql: دقت کنید که اگر میخواهید مقادیر فارسی در دیتابیس خود نگه دارید، دیتابیس را حتما با انکودینگ utf8 بسازید:
CREATE DATABASE CHARACTER SET utf8;
۲. ساخت یک virtual host برای پروژه
ابتدا به پوشهی تنظیمات ساخت virtual host های apache بروید:cd /etc/httpd/conf.d
یک فایل به نام wsgi.conf درست کنید و تنظیمات زیر را در آن انجام دهید:
ServerName
Alias /app /var/www//build
/build>
Require all granted
RewriteEngine on
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Rewrite everything else to index.html to allow html5 state links
RewriteRule ^ /app/index.html [L]
Alias /static /var/www//static
/static>
Require all granted
/>
Require all granted
WSGIPassAuthorization On
WSGIDaemonProcess python-path=/var/www/:/var/www//venv/lib/python3.6/site-packages
WSGIProcessGroup
WSGIScriptAlias / /var/www///wsgi.py
در صورتی هم که نیاز به تعریف envirement variable دارید، به دو شکل میتوانید آن را انجام دهید:
۱. تعریف در فایل /etc/sysconfig/httpd به شکل زیر:
export VARIABLE_NAME=variable_value
۲. تعریف در فایل کانفیگ virtual hostساخته شده:
...
SetEnv VARIABLE_NAME variable_value
...
حال دیگر میتوانید سرویس apache را ریاستارت کنید و پس از تعریف nameserver های مربوط به دامینتان، مستقیما با باز کردن دایمن تعریف شده، نتیجهی کارتان را ببینید.
در صورت بروز مشکل و یا خطا میتوانید لاگ مربوط به خطا را از آدرس /var/log/httpd/error.log ببینید.
ممکن است SELinux که ماژول امنیتی سیستمعامل centos 7 میباشد برای شما مشکل ایجاد کند. برای غیرفعال سازی آن به آدرس /etc/selinux/config بروید و پارامتر SELINUX را برابر disabled قرار دهید و سیستم را ریاستارت کنید.
در صورت وجود هر گونه سوال یا مشکل، از قسمت تماس با ما با میتوانید پیامتان را به گوش ما برسانید. مزیت برون سپاری خدمات پشتیبانی شبکه چیست؟
تیم پشتیبانی شبکه گروهی از متخصصان IT است که مسئول مدیریت و نگهداری شبکه کامپیوتری یک سازمان هستند. با ارائه خدمات پشتیبانی و نگهداری منظم، به شما کمک میکند تا زمان و منابع خود را آزاد کنید و بر روی وظایف اصلی خود تمرکز کنید.