У меня есть многоцелевой сервер под управлением ArchLinux, который в настоящее время обслуживает несколько виртуальных хостов из /var/www/domains/EXAMPLE.COM/html /var/www/domains/EXAMPLE2.COM/html
Я развертываю эти веб-сайты (в основном с использованием фреймворка Kohana), используя задание Jenkins, проверяя проект, удаляя папку .git, копируя ssh tar.gz в / var / www / domains / на сервере и распаковывая его.
Поскольку я не хочу переустанавливать phpMyAdmin после каждого развертывания, я решил использовать псевдоним.
Я бы хотел, чтобы псевдоним был чем-то вроде /.tools/phpMyAdmin/, чтобы у меня было больше «инструментов» позже, если бы я захотел.
Я попытался просто изменить httpd-phpmyadmin.conf по умолчанию, который был установлен, следуя официальному WIKI: https://wiki.archlinux.org/index.php/Phpmyadmin
Alias /.tools/phpMyAdmin/ "/usr/share/webapps/phpMyAdmin"
<Directory "/usr/share/webapps/phpMyAdmin">
AllowOverride All
Options FollowSymlinks
Order allow,deny
Allow from all
php_admin_value open_basedir "/var/www/:/tmp/:/usr/share/webapps/:/etc/webapps:/usr/share/pear/"
</Directory>
Изменение только этого, похоже, не работает с моей текущей настройкой на сервере, и apache перенаправляет запрос в фреймворк, который 404s (поскольку нет маршрута для обработки /.tools/phpAdmin).
У меня включен массовый виртуальный хостинг и настроен следующим образом:
#
# Use name-based virtual hosting.
#
NameVirtualHost *:8000
# get the server name from the Host: header
UseCanonicalName On
# splittable logs
LogFormat "%{Host}i %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon
<Directory /var/www/domains>
# ExecCGI is needed here because we can't force
# CGI execution in the way that ScriptAlias does
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
RewriteEngine On
# a ServerName derived from a Host: header may be any case at all
RewriteMap lowercase int:tolower
## deal with normal documents first:
# allow Alias /icons/ to work - repeat for other aliases
RewriteCond %{REQUEST_URI} !^/icons/
# allow CGIs to work
RewriteCond %{REQUEST_URI} !^/cgi-bin/
# do the magic
RewriteCond %{SERVER_NAME} ^(www\.|)(.*)
RewriteRule ^/(.*)$ /var/www/domains/${lowercase:%2}/html/$1
## and now deal with CGIs - we have to force a MIME type
RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteRule ^/(.*)$ /var/www/domains/${lowercase:%{SERVER_NAME}}/cgi-bin/$1 [T=application/x-httpd-cgi]
На этом сервере также работает nginx на 80-м порту в качестве обратного прокси для Apache:
location ~ \.php$ {
proxy_pass http://127.0.0.1:8000;
}
Все остальное было настроено в соответствии с официальным WIKI, поэтому я не думаю, что это вызовет проблемы. Нужно ли мне иметь псевдоним для настройки phpMyAdmin на массовом виртуальном хостинге или он может быть в отдельном включаемом файле, чтобы этот псевдоним работал?
+ Изменить
Alias /.tools/phpMyAdmin/ "/usr/share/webapps/phpMyAdmin"
к
Alias /.tools/phpMyAdmin/ "/usr/share/webapps/phpMyAdmin/"
перезапустите apache и попробуйте еще раз
Изменить: что-то интересное на kb.ucla.edu/articles/ ... Итак, я предполагаю, что речь идет о mod_alias vs mod_rewrite, и вы можете попробовать добавить это
RewriteCond %{REQUEST_URI} !^/.tools/phpMyAdmin/
до этого
RewriteCond %{REQUEST_URI} !^/icons/