
دپلوی سایت جنگو و 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 بر روی لینک کلیک کنید