我有一个运行 ArchLinux 的多用途服务器,目前为来自 /var/www/domains/EXAMPLE.COM/html /var/www/domains/EXAMPLE2.COM/html 的多个虚拟主机提供服务
我使用 Jenkins 作业部署这些网站(主要使用 Kohana 框架),通过检出项目,删除 .git 文件夹并将 tar.gz 通过 ssh 复制到服务器上的 /var/www/domains/ 并解压它。
由于我不想在每次部署后重新安装 phpMyAdmin,因此我决定使用别名。
我希望别名类似于 /.tools/phpMyAdmin/,以便我以后可以拥有更多“工具”。
我已尝试更改按照官方 WIKI 安装的默认 httpd-phpmyadmin.conf: 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将请求转发到404框架(因为没有处理/.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]
该服务器上的 80 端口还运行有 nginx,作为 Apache 的反向代理:
location ~ \.php$ {
proxy_pass http://127.0.0.1:8000;
}
其余一切都是按照官方 WIKI 设置的,所以我认为这些不会造成麻烦。我是否需要在批量虚拟主机中设置 phpMyAdmin 的别名,或者是否可以将其放在单独的包含文件中以使该别名正常工作?
答案1
改变
Alias /.tools/phpMyAdmin/ "/usr/share/webapps/phpMyAdmin"
到
Alias /.tools/phpMyAdmin/ "/usr/share/webapps/phpMyAdmin/"
重新启动 apache 并重试
编辑:kb.ucla.edu/articles/上有一些有趣的东西,所以我想这是关于 mod_alias 与 mod_rewrite 的,你可以尝试添加这个
RewriteCond %{REQUEST_URI} !^/.tools/phpMyAdmin/
在这之前
RewriteCond %{REQUEST_URI} !^/icons/