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

bla*_*sei 5 ubuntu virtualhost

我一直在为这个设置苦苦挣扎。我已经安装了 phpmydamin 的所有先决条件,它本身可以在 ip/phpmyadmin 上找到。现在我有一个我想指向它的子域。假设我想将 data.somedomain.com 指向 phpmyadmin 这样的方式,而不是 ip/phpmyadmin 我可以访问它作为 data.somedomain.com。我一直在做简单的 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>
Run Code Online (Sandbox Code Playgroud)

我添加的是<VirtualHost>标签包装器ServerName和这些Options All AllowOverride All Require all granted

当我访问该 url 时,它会抛出一个404代码:在此服务器上找不到请求的 URL /。

并且日志包含此条目:File does not exist: /etc/apache2/htdocs 感谢您的建议。

小智 9

您需要做的就是为 apache 设置一个子域。您可以通过在 /etc/apache2/sites-available 中创建配置文件来完成此操作。

这是我的..

<VirtualHost *:80>
   ServerAdmin adminn@example.local
   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>
Run Code Online (Sandbox Code Playgroud)

将其保存到 /etc/apache2/sites-available/phpmyadmin.conf 并启用子域。

a2ensite phpmyadmin
Run Code Online (Sandbox Code Playgroud)

并重启apache服务器

service apache2 reload
Run Code Online (Sandbox Code Playgroud)

现在您应该可以使用来自 phpmyadmin.example.local 的 phpmyadmin。


Ste*_*han 0

您真正需要的是带有 DNS 解决方案的 CNAME。例如,如果您使用类似 godaddy.com 的域名,您可以在其 DNS 管理页面上添加一个 cname data.somedomain.com,该域名解析为 somedomain.com。

粗略地浏览一下您的 nginx 虚拟主机,您可能希望首先从一个最小的配置开始,该配置只需将对 data.somedomain.com 的请求指向您的 /usr/share/phpmyadmin。我还建议使用 htaccess 锁定 phpmyadmin (没有什么比你的数据库被黑更糟糕的了。)