在Debian 10 Buster上安装phpMyAdmin和Apache (LAMP )

分享于 

14分钟阅读

Debian

  繁體

本教程向您展示如何在Debian 10 Buster上使用Apache,MariaDB,PHP7.3(LAMP)安装phpMyAdmin。

步骤1:在Debian 10服务器上下载phpMyAdmin

phpMyAdmin未包含在Debian 10软件存储库中,因此我们必须手动下载该软件。转到phpMyAdmin下载页面检查最新的稳定版本,然后运行以下命令下载它。

wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.zip

提示:你始终可以使用上面的URL格式下载最新的稳定版phpMyAdmin。只需用最新的版本号替换4.9.0.1.

然后提取出来。

sudo apt install unzip
unzip phpMyAdmin-4.9.0.1-all-languages.zip

将phpMyadmin 4.9移动到/usr/share/目录。

sudo mv phpMyAdmin-4.9.0.1-all-languages /usr/share/phpmyadmin

然后使web服务器用户(www-data )作为此目录的所有者。

sudo chown -R www-data:www-data /usr/share/phpmyadmin

步骤2:为MariaDB数据库和用户创建phpMyAdmin

现在我们需要登录到MariaDB控制台,并为phpMyAdmin创建数据库和用户,默认情况下,Debian上的MaraiDB包使用unix_套接字来验证用户登录,这意味着你可以使用操作系统的用户名和密码登录到MariaDB控制台,可以运行以下命令登录而不提供MariaDB root密码。

sudo mysql -u root

接下来,使用以下SQL命令为phpMyAdmin创建一个新数据库,本教程将它命名为phpmyadmin,可以使用你喜欢的数据库名称。

CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON phpmyadmin.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY 'your_preferred_password';

刷新权限表,并退出MariaDB控制台。

FLUSH PRIVILEGES;
EXIT;

步骤3:安装必需的和推荐的PHP模块,

运行以下命令安装phpMyAdmin需要或推荐的PHP模块。

sudo apt install php-imagick php-phpseclib php-php-gettext php7.3-common php7.3-mysql php7.3-gd php7.3-imap php7.3-json php7.3-curl php7.3-zip php7.3-xml php7.3-mbstring php7.3-bz2 php7.3-intl php7.3-gmp

然后重启Apache。

sudo systemctl restart apache2

步骤4:为phpMyAdmin创建Apache Configuration

如果要从子目录访问phpMyAdmin web interface,请使用以下命令创建一个配置片段。

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

将以下文本粘贴到文件中。

# phpMyAdmin default Apache configuration
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
 Options SymLinksIfOwnerMatch
 DirectoryIndex index.php
 <IfModule mod_php5.c>
 <IfModule mod_mime.c>
 AddType application/x-httpd-php .php
 </IfModule>
 <FilesMatch".+.php$">
 SetHandler application/x-httpd-php
 </FilesMatch>
 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/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
 php_admin_value mbstring.func_overload 0
 </IfModule>
 <IfModule mod_php.c>
 <IfModule mod_mime.c>
 AddType application/x-httpd-php .php
 </IfModule>
 <FilesMatch".+.php$">
 SetHandler application/x-httpd-php
 </FilesMatch>
 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/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
 php_admin_value mbstring.func_overload 0
 </IfModule>
</Directory>
# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
 Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
 Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
 Require all denied
</Directory>

保存,并管理文件,然后启用此配置片段。

sudo a2enconf phpmyadmin.conf

我们还需要创建phpMyAdmin temp文件夹。

sudo mkdir -p /var/lib/phpmyadmin/tmp
sudo chown www-data:www-data /var/lib/phpmyadmin/tmp

重新加载Apache以便让更改生效。

sudo systemctl reload apache2

现在你可以访问phpMyAdmin web界面

your-server-ip/phpmyadmin

如果phpMyAdmin安装在你的本地Debian计算机上,那么通过在浏览器地址栏中输入以下文本来访问phpMyAdmin web界面。

localhost/phpmyadmin

如果连接被拒绝或无法完成,就可能存在阻止HTTP请求的防火墙。如果使用的是iptables firewall,那么你需要运行以下命令来打开TCP端口80和443.

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT

如果使用UFW firewall,就运行此命令打开TCP端口80和443.

sudo ufw allow http
sudo ufw allow https

步骤5:从子域名访问phpMyAdmin

有时,你需要使用子域名来访问phpMyAdmin web界面,这样,你就可以启用HTTPS来加密通信。

首先,我们需要为phpMyAdmin创建Apache虚拟主机,现有的phpMyAdmin配置片段可以用作模板,把它复制到新文件。

sudo cp /etc/apache2/conf-enabled/phpmyadmin.conf /etc/apache2/sites-available/phpmyadmin.conf

然后使用命令行文本编辑器编辑新文件,比如Nano。

sudo nano /etc/apache2/sites-available/phpmyadmin.conf

在该文件的开头添加以下行,将pma.example.com替换为phpMyAdmin的首选子域名,不要忘记为此子域名创建DNS记录。

<VirtualHost *:80>
 ServerName pma.example.com
 DocumentRoot /usr/share/phpmyadmin
 ErrorLog ${APACHE_LOG_DIR}/pma.error.log
 CustomLog ${APACHE_LOG_DIR}/pma.access.log combined

在这个文件的末尾添加以下行。

</VirtualHost>

保存,并管理文件,要在Nano text编辑器中保存文件,请按Ctrl+O,然后按Enter确认,要退出,请按Ctrl+X,然后启用此虚拟主机。

sudo a2ensite phpmyadmin.conf

重新加载Apache web服务器以便让更改生效。

sudo systemctl reload apache2

现在你应该能够通过phpMyAdmin web界面

pma.example.com

在登录表单中输入用户凭据之前,启用HTTPS。

步骤6:使用Apache在phpMyAdmin上启用HTTPS

为了保护phpMyadmin web界面,我们可以安装一个免费的let's Encrypt TLS证书,运行以下命令从Debian 10软件存储库安装let's Encrypt客户端(证书机器人)。

sudo apt install certbot python3-certbot-apache

Python3-certbot-apache是Certbot的Apache插件,现在运行以下命令获取,并安装TLS证书。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --must-staple -d pma.example.com --email [email protected]

说明:

  • -apache:使用Apache验证器和安装程序
  • -agree-tos:同意let's Encrypt服务条款
  • -redirect:添加301重定向,
  • -hsts:将Strict-Transport-Security头添加到每个HTTP响应,
  • -staple-ocsp:启用OCSP装订,
  • -must-staple:在证书中添加OCSP必须装订扩展,
  • -d标志后跟一个域名列表,用逗号分隔,最多可以添加100个域名,
  • -email:用于注册和恢复联系人的电子邮件,
  • 步骤7:运行phpMyAdmin设置脚本

    在浏览器地址栏中输入以下内容。

    your-server-ip/phpmyadmin/setup

    或者

    pma.example.com/setup

    单击New Server按钮配置服务器。

    然后单击Apply按钮。

    接下来,单击Display按钮以显示配置文件。

    /usr/share/phpmyadmin/目录中,创建config.inc.php文件。

    sudo nano /usr/share/phpmyadmin/config.inc.php

    config.inc.php的内容从phpMyAdmin设置页面复制,并粘贴到 /usr/share/phpmyadmin/config.inc.php 文件。

    步骤8:phpMyAdmin登录错误疑难解答

    现在如果尝试使用phpMyAdmin MariaDB root帐户登录,看到以下错误。

    #1698 - Access denied for user 'root '@'localhost'

    mysqli_real_connect(): (HY000/1698): Access denied for user 'root '@'localhost'

    如果使用用户phpmyadmin登录,将看不到上面的错误,但是,用户phpmyadmin只能用于管理phpmyadmin数据库,错误的原因在于,默认情况下MariDB root用户通过unix_socket插件进行身份验证,而不是使用mysql_native_password插件,为了解决这个问题,我们可以创建另一个admin用户,并向新的admin用户授予所有权限。

    从MariaDB登录到命令行服务器。

    sudo mysql -u root

    使用密码验证创建管理员用户。

    create user [email protected] identified by 'your-preferred-password';

    授予所有数据库的所有权限。

    grant all privileges on *.* to [email protected] with grant option;

    刷新权限,并退出;

    FLUSH PRIVILEGES;
    EXIT;

    现在你可以使用phpMyAmin帐户登录到admin,并管理所有数据库。

    步骤9:设置phpMyAdmin配置存储

    现在在phpMyAdmin控制面板中,可以看到一条警告消息。

    The phpMyAdmin configuration storage is not completely configured, some extended features have been deactivated. Find out why. 
    Or alternately go to 'Operations' tab of any database to set it up there.

    点击查找原因链接,然后单击Create链接在phpmyadmin数据库中创建表。

    步骤10:限制对/setup目录的访问

    为了限制对/setup目录的访问,我们可以使用Apache web服务器启用基本密码认证,运行以下命令为用户admin设置密码,/etc/apache2/htpasswd文件用于存储用户名和密码。

    sudo htpasswd -c /etc/apache2/htpasswd admin

    然后编辑phpMyAdmin的Apache配置文件

    sudo nano /etc/apache2/sites-available/phpmyadmin-le-ssl.conf

    或者

    sudo nano /etc/apache2/conf-available/phpmyadmin.conf
    # Authorize for setup
    <Directory /usr/share/phpmyadmin/setup>
     <IfModule mod_authz_core.c>
     <IfModule mod_authn_file.c>
     AuthType Basic
     AuthName"phpMyAdmin Setup"
     AuthUserFile /etc/apache2/htpasswd
     </IfModule>
     Require valid-user
     </IfModule>
    </Directory>

    保存,并管理文件,然后重新加载Apache以便让更改生效。

    sudo systemctl reload apache2

    如果再次访问phpMyAdmin设置脚本,将要求你输入用户名和密码。


    PHP  DEB  Apache  总线  Debian  LAMP