在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設置腳本,將要求你輸入用戶名和密碼。


    相关文章