В течение последнего года у меня было приложение Flask / WSGI, которое отлично работало на хосте Apache. Httpd.conf настроен следующим образом:
ServerName myapp.com
WSGISocketPrefix /var/run/wsgi
WSGIScriptAlias / /var/www/myapp/myapp/myapp.wsgi
WSGIDaemonProcess myapp user=user group=user threads=5
<Directory /var/www/myapp/myapp>
WSGIProcessGroup myapp
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^/?(.*)$ https://www.myapp.com/$1 [R=301,L]
Итак, вы идете в https://myapp.com или https://myapp.com/blah и он отлично работает.
Мой клиент теперь хочет создать блог Wordpress для сайта, который будет жить по адресу blog.myapp.com. Мой Apache слабый, поэтому я не знаю, как это сделать. Вот что я пробовал в httpd.conf:
WSGISocketPrefix /var/run/wsgi
NameVirtualHost *:80
<VirtualHost *:80>
ServerName myapp.com
WSGIScriptAlias / /var/www/myapp/myapp/myapp.wsgi
WSGIDaemonProcess myapp user=user group=user threads=5
<Directory /var/www/myapp/myapp>
WSGIProcessGroup myapp
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^/?(.*)$ https://www.myapp.com/$1 [R=301,L]
</VirtualHost>
<VirtualHost *:80>
ServerName blog.myapp.com
DocumentRoot "/var/www/html/wordpress"
</VirtualHost>
Служба HTTPD перезапускается без проблем, но когда я перехожу в http://myapp.com Я получаю тестовую страницу Apache. Можно ли делать то, что хочет мой клиент?
Мне удалось уговорить своего клиента изменить местоположение блога на:
myapp.com/blog
что значительно упростило решение, потребовав добавления только одной строки директивы alias:
ServerName myapp.com
Alias /blog /var/www/html/wordpress
WSGISocketPrefix /var/run/wsgi
WSGIScriptAlias / /var/www/myapp/myapp/myapp.wsgi
WSGIDaemonProcess myapp user=user group=user threads=5
<Directory /var/www/myapp/myapp>
WSGIProcessGroup myapp
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^/?(.*)$ https://www.myapp.com/$1 [R=301,L]