آپاچیسرور لینوکس

دپلوی سایت جنگو و php در یک سرور با اپاچی و mod_wsgi


دیپلوی سایت جنگو و php در یک سرور با اپاچی و mod_wsgi

برای اینکه بتونیم روی یک سرور سایت های مختلفی رو بارگذاری کنیم در ابتدا باید از apache´s virtualhosts استفاده کنیم.

اما apache´s virtualhosts (میزبان مجازی آپاچی ) چی هست؟

اصطلاح میزبان مجازی به عملکرد راه اندازی بیش از یک وب سایت مثلا
errorweb.ir و example.ir روی یک سرور اشاره میکنه.

Virtual hosts(میزبان مجازی)میتونه “مبتنی بر IP” باشه،یعنی اینکه شما برای هر وب سایت آدرس IP متفاوتی دارید یا “مبتنی بر نام” باشد یعنی اینکه چندین نام در هر آدرس IP اجرا بشه.پس چندین دامین با یک ip وجود خواهد داشت.این واقعیت که این سایت ها دریک سرور در حال اجرا هستند برای کابر نهایی غیر قابل تشخیص می باشد.

Apache یکی از اولین سرورهایی بود که از میزبان های مجازی مبتنی بر IP پشتیبانی می کرد.نسخه های 1.1 و جدیدتر Apache از میزبان های مجازی مبتنی بر IP و نام هم پشتیبانی می کنند (vhosts).

اخرین نوع میزبان های مجازی را بعضی اوقات میزبان های مجازی مبتنی بر host یا ‘non-ip’ اسم گذاری میکنند.بعد از اینکه با apache´s virtualhosts آشنا شدیم میتونیم ادامه بدم.

اینجا من یک مثال مشابه را در سرور خودم قرار دادم،که تو این مثال من یک وب سایت نوشته شده با جنگو دارم که این وب سایت در دامنه اصلی سایتم قرار گرفته و یک سایت دیگر هم با جوملا (joomla) در ساب دامین قرار میدم.هر دو فایل مربوط به سایت ها در مسیر زیر قرار گرفتن

/etc/apache2/sites-enabled


پرونده تنظیمات آپاچی جوملا به صورت زیر نام گذاری شده:

/etc/apache2/sites-enabled/manual.domain.com


کد های زیر مربوط به تنظیمات جوملا می باشد

NameVirtualHost *:80
ServerAdmin errorweb@domain.com
ServerName manual.domain.com
DocumentRoot "/home/ubuntu/manual/"
<Directory /home/ubuntu/manual/>
    Order deny,allow
    Allow from all
</Directory>
ErrorLog /var/log/apache2/manual.domain-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
CustomLog /var/log/apache2/manual.domain-access.log combined


و همچنین سایت جنگویی اینطوری نامگذاری شده:

/etc/apache2/sites-enabled/www.domain.co


کدهای آپاچی مربوط به سایت جنگویی:

NameVirtualHost *:80
ServerAdmin admin@admin.ir
ServerName domain.co
ServerAlias machete.anotherdomain.com
Alias /admin/media/ /home/ubuntu/webapps/machete/lib/python2.7/site-packages/grappelli/media/
Alias /media/ /home/ubuntu/webapps/machete/machete/media/
Alias /static/ /home/ubuntu/webapps/machete/machete/collected/
<Directory /home/ubuntu/webapps/machete/lib/python2.7/site-packages/grappelli/media/>
    Order deny,allow
    Allow from all
</Directory>

<Directory /home/ubuntu/webapps/machete/lib/python2.7/site-packages/django/contrib/admin/media/ >
    Order deny,allow
    Allow from all
</Directory>

<Directory /home/ubuntu/webapps/machete/machete/media/>
    Order deny,allow
    Allow from all
</Directory>

<Directory /home/ubuntu/webapps/machete/machete/collected/>
    Order deny,allow
    Allow from all
</Directory>

WSGIScriptReloading On
WSGIDaemonProcess machete python-path=/home/ubuntu/webapps/machete/lib/python2.7/site-packages
WSGIProcessGroup machete
WSGIApplicationGroup machete
WSGIPassAuthorization On

WSGIScriptAlias / /home/ubuntu/webapps/machete/machete/machete/wsgi.py
ErrorLog /var/log/apache2/machete-error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug

CustomLog /var/log/apache2/machete-access.log combined


اولین مورد،به apache میگه که اگر کاربر به manual.domain.com دسترسی پیدا کرد،فقط با یک برنامه php (joomla) پاسخ بده.
فایل دوم به apache میگه،اگر کاربر www.domain.com را درخواست کرد برای کاربر python wsgy ارسال کن (django)

در حالت عادی در یک سرور اوبونتو،redhat / centos / fedora پوشه های سایت در مکانی قرار میگیرن که پیدا کردن اونها سخت هستش اما به هر حال میتونید از virtualhosts استفاده کنید.برای جلوگیری از بهم ریختن پرونده httpd.conf استفاده از virtualhost میتونه گزینه بهتری باشه.

برای یادگیری نحوه دیپلوی سایت جنگو و php بر روی لینک کلیک کنید

امیرحسین باقری

امیرحسین باقری هستم عاشق طراحی سایت در زمینه python و همینطور طراح قالب و متخصص فرانت اند؛ از دانشی که تو این مدت بدست آوردم میشه به: html&css , ,bootstrap, C#, flexbox , sass , javascript , Django,celery,Django channels,DRF,Ruby ,Ruby on Railsاشاره کرد.

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

دکمه بازگشت به بالا