我一直在努力完成这个设置。我已经安装了 phpmydamin 的所有先决条件,它本身可以在 ip/phpmyadmin 上使用。现在我有一个子域,我想指向它。假设我想将 data.somedomain.com 指向 phpmyadmin,这样我就可以作为 data.somedomain.com 而不是 ip/phpmyadmin 来访问它。我一直在做简单的 VirtualHost 创建,但我觉得我有点迷失在这个上面。这里是/etc/phpmyadmin/apache.conf
:
# phpMyAdmin default Apache configuration
<VirtualHost *:80>
ServerName data.somedomain.com
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
Options All
AllowOverride All
Require all granted
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_admin_flag allow_url_fopen Off
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/
</IfModule>
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_admin_flag allow_url_fopen Off
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/
</IfModule>
</Directory>
# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</Directory>
# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/libraries>
Order Deny,Allow
Deny from All
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Order Deny,Allow
Deny from All
</Directory>
</VirtualHost>
我添加的是<VirtualHost>
标签包装器和ServerName
这些Options All AllowOverride All Require all granted
当我访问该 URL 时,它会抛出一个404
代码:该服务器上未找到所请求的 URL /。
并且日志包含此条目:File does not exist: /etc/apache2/htdocs
感谢您的建议。
答案1
您需要做的就是为 apache 设置一个子域。您可以通过在 /etc/apache2/sites-available 中创建配置文件来完成此操作。
这是我的..
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName phpmyadmin.example.local
DocumentRoot /usr/share/phpmyadmin
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
LogLevel notice
CustomLog /var/log/apache2/access.log combined
ErrorLog /var/log/apache2/error.log
ServerSignature On
</VirtualHost>
将其保存到 /etc/apache2/sites-available/phpmyadmin.conf 并启用子域。
a2ensite phpmyadmin
并重新启动 apache 服务器
service apache2 reload
现在您应该能够从 phpmyadmin.example.local 使用 phpmyadmin。
答案2
您真正需要的是 DNS 解决方案的 CNAME。例如,如果您使用 godaddy.com 之类的域名,则应在其 DNS 管理页面上添加 cname data.somedomain.com,该域名解析为 somedomain.com。
粗略地浏览一下您的 nginx 虚拟主机,您可能希望首先从最小配置开始,只需将对 data.somedomain.com 的请求指向您的 /usr/share/phpmyadmin。我还建议使用 htaccess 锁定 phpmyadmin(没有什么比您的数据库被黑客入侵更糟糕的了。)
答案3
您提到的错误消息File does not exist: /etc/apache2/htdocs
肯定是虚拟主机的参数DocumentRoot
未正确指定。请确保将其指向正确的目录。
答案4
phpMyAdmin 仍然安装在路径下/phpmyadmin
,你应该发现http://data.example.com/phpmyadmin/Alias
有效。您可以将指令(和对 的其他引用/phpmyadmin
)更改为/
将其显示在根目录下:
Alias / /usr/share/phpmyadmin
或者您可以重定向/
至/phpmyadmin
:
RewriteRule ^/$ /phpmyadmin/ [R]