将子域名指向安装在 ubuntu 12.04 上的 phpmyadmin

将子域名指向安装在 ubuntu 12.04 上的 phpmyadmin

我一直在努力完成这个设置。我已经安装了 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]

相关内容