Чего я хотел бы добиться, так это получить две отдельные ссылки, связанные с двумя разными приложениями.
http://имя хоста.com <--- вордпресс
http://hostname.com/openproject/ <--- openproject или в конечном итоге http://openproject.hostname.com/ но для этого, я думаю, потребуются действия с моим провайдером VPS.
Первым приложением будет блог WordPress с такой конфигурацией:
/etc/apache2/sites-enabled/wordpress.conf
<VirtualHost *:80>
ServerAdmin admin@HOSTNAME_HERE.com
DocumentRoot /var/www/HOSTNAME_HERE/wordpress/
Redirect / https://HOSTNAME_HERE.com/
<Directory /var/www/HOSTNAME_HERE/wordpress/>
Options +FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
/etc/apache2/conf-enabled/wordpress.conf
Псевдоним /wordpress /var/www/HOSTNAME_HERE/wordpress
<Каталог /var/www/HOSTNAME_HERE/wordpress>
Параметры
DirectoryIndex index.php
<IfModule mod_php.c>
<IfModule mod_mime.c>
Приложение AddType/x-httpd-php .php
</ЕслиМодуль>
<FilesMatch ".+\.php$">
Приложение SetHandler/x-httpd-php
</FilesMatch>
</ЕслиМодуль>
</Каталог>
<Каталог /usr/share/phpmyadmin/setup>
<IfModule mod_authz_core.c>
<IfModule mod_authn_file.c>
Основной тип авторизации
</ЕслиМодуль>
Требовать действительного пользователя
</ЕслиМодуль>
</Каталог>
<Каталог /usr/share/phpmyadmin/libraries>
Требовать все отказано
</Каталог>
<Каталог /usr/share/phpmyadmin/setup/lib>
Требовать все отказано
</Каталог>
доступен с SSL через
/etc/apache2/sites-enabled/default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin admin@HOSTNAME_HERE.com
ServerName ip.address.of.hostname
DocumentRoot /var/www/HOSTNAME_HERE/wordpress/
<Directory /var/www/HOSTNAME_HERE/wordpress/>
Options +FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384...
SSLHonorCipherOrder on
SSLCompression off
SSLSessionTickets off
SSLCertificateFile /etc/apache2/ssl/certificate.crt
SSLCertificateKeyFile /etc/apache2/ssl/pkey.key
SSLCertificateChainFile /etc/apache2/ssl/chain-ca.crt
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Второе приложение будет настроено openproject через:
etc/apache2/mods-enabled/passenger.load
LoadModule пассажирский_модуль /home/openproject/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/passenger-6.0.10/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /home/openproject/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/passenger-6.0.10
PassengerDefaultRuby /home/openproject/.rbenv/versions/2.7.3/bin/ruby
</ЕслиМодуль>
/etc/apache2/sites-enabled/openproject.conf
SetEnv EXECJS_RUNTIME отключен
<Виртуальный хост *:8080>
Имя сервера IP_ADDR_HERE
DocumentRoot /home/openproject/openproject/public
<Каталог /home/openproject/openproject/public>
РазрешитьПереопределить все
Параметры - Мультивиды
Требовать все предоставленные
</Каталог>
<Местоположение /активы/>
ExpiresActive On ExpiresDefault «доступ плюс 1 год»
</местоположение>
</ виртуальный хост>
Приложение доступно без SSL на http://HOSTNAME_HERE.com:8080, и любая конфигурация, которую я пробовал, подойдет для размещения этого приложения на http://HOSTNAME_HERE.com/openproject/
конфигурация, которую я пробовал /etc/apache2/sites-enabled/openproject.conf
SetEnv EXECJS_RUNTIME отключен
<Виртуальный хост *:80>
Имя сервера IP_ADDR_HERE
DocumentRoot /home/openproject/openproject/public
ProxyPass /openproject/ http://127.0.0.1:6002/openproject/ retry=0
ProxyPassReverse /openproject/ http://127.0.0.1:6002/openproject/
<Каталог /home/openproject/openproject/public>
РазрешитьПереопределить все
Параметры - Мультивиды
Требовать все предоставленные
</Каталог>
<Местоположение /активы/>
ExpiresActive On ExpiresDefault «доступ плюс 1 год»
</местоположение>
</ виртуальный хост>
Еще одна попытка:
SetEnv EXECJS_RUNTIME отключен
<Виртуальный хост *:80>
Имя сервера IP_ADDR_HERE
DocumentRoot /home/openproject/openproject/public
Псевдоним /openproject/ /home/openproject/openproject/public
<Каталог /home/openproject/openproject/public>
РазрешитьПереопределить все
Параметры - Мультивиды
Требовать все предоставленные
</Каталог>
<Местоположение /активы/>
ExpiresActive On ExpiresDefault «доступ плюс 1 год»
</местоположение>
</ виртуальный хост>
Еще одна попытка:
SetEnv EXECJS_RUNTIME отключен
<Виртуальный хост *:80>
Имя сервера IP_ADDR_HERE/openproject/
DocumentRoot /home/openproject/openproject/public
<Каталог /home/openproject/openproject/public>
РазрешитьПереопределить все
Параметры - Мультивиды
Требовать все предоставленные
</Каталог>
<Местоположение /активы/>
ExpiresActive On ExpiresDefault «доступ плюс 1 год»
</местоположение>
</ виртуальный хост>
и ничего не работало. Я получил либо 301, либо 403, либо 404 ошибки. Пожалуйста, помогите мне с моей настройкой.
Приложение PS внутренне работает на порту 6002