[phpMyAdmin] CentOS 8.2 + Nginx + MariaDB 10 + php-fpm + phpMyAdmin

說到使用 MySQL/MariaDB 就會想到 phpMyAdmin這個使用者圖像介面,他是用 php 做出來操作 MySQL/MariaDB 的介面,所以若要使用,必須先安裝網頁伺服器與php。

(環境:CentOS8.2)
  1. 安裝由Fedora社群打造的第三方源 EPEL(Extra Packages for Enterprise Linux),其中包含比官方 repository 要新的伺服器版本
    [user@localhost ~]$ sudo dnf -y install epel-release
    
  2. 安裝 Nginx,詳細過程參考([Nginx] 安裝網頁伺服器Nginx (CentOS8.2)),安裝好後從瀏覽器輸入「localhost」確定可看到 Nginx 預設頁面
    [user@localhost ~]$ sudo dnf -y install nginx
    [user@localhost ~]$ sudo systemctl start nginx
    [user@localhost ~]$ sudo systemctl enable nginx
    
  3. [user@localhost ~]$ sudo dnf -y install mariadb-server mariadb
    [user@localhost ~]$ sudo systemctl start mariadb
    [user@localhost ~]$ sudo systemctl enable mariadb
    
  4. 安裝 php,這裡使用安裝預設版本(目前是7.2版),若有其它版本需求,請自行研究如何安裝指定版本的 php
    [user@localhost ~]$ sudo dnf -y install php php-fpm php-json php-mysqlnd php-mbstring
    
  5. 修改「/etc/php-fpm.d/www.conf」檔案內容
    1. 改『user = apache』為『user = nginx』
    2. 改『group = apache』為『group = nginx』
    3. 改『listen = /run/php-fpm/www.sock』為『listen = /var/run/php-fpm/php-fpm.sock』
    4. 拿掉『;listen.owner = nobody』的分號,並改為『listen.owner = nginx』
    5. 拿掉『;listen.group = nobody』的分號,並改為『listen.group = nginx』
    6. 拿掉『;listen.mode = 0660』的分號
  6. 啟動 php-fpm 服務
    [user@localhost ~]$ sudo systemctl start php-fpm
    [user@localhost ~]$ sudo systemctl enable php-fpm
    
  7. 修改「/etc/nginx/conf.d/php-fpm.conf」檔案內容
    1. 改『server unix:/run/php-fpm/www.sock;』為『server unix:/var/run/php-fpm/php-fpm.sock;』
  8. 新增「/etc/nginx/conf.d/phpmyadmin.conf」檔案,內容如下
    server {
    	listen       80;
    	server_name  server_domain_or_IP;
    
    	root   /usr/share/nginx/html;
    	index index.php index.html index.htm;
    
    	location / {
    		try_files $uri $uri/ =404;
    	}
    	error_page 404 /404.html;
    	error_page 500 502 503 504 /50x.html;
    
    	location = /50x.html {
    		root /usr/share/nginx/html;
    	}
    
    	location ~ \.php$ {
    		try_files $uri =404;
    		fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    		fastcgi_index index.php;
    		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    		include fastcgi_params;
    	}
    }
    
  9. Nginx 重新載入設定檔,要看到「ok」與「/etc/nginx/nginx.conf test is successful」才是對的哦!
    [user@localhost ~]$ sudo systemctl reload nginx
    [user@localhost ~]$ sudo nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    
  10. 確定 nginx + php-fpm 可以正常運作
    1. 創建「/usr/share/nginx/html/info.php」其內容如下
      <?php
      phpinfo();
      
    2. 這時從瀏覽器輸入「localhost/info.php」確定可看到 phpinfo 的頁面,若看得到代表 nginx + php-fpm 有在正常運作囉
  11. 打開 Nginx 對 php session 的權限
    [user@localhost ~]$ sudo chown nginx:nginx /var/lib/php/session/
    
  12. 下載 phpmyadmin 並解壓縮到/usr/share/nginx/html下
    [user@localhost ~]$ unzip Downloads/phpMyAdmin-5.0.2-all-languages.zip 
    [user@localhost ~]$ sudo mv phpMyAdmin-5.0.2-all-languages/ /usr/share/nginx/html/phpMyAdmin
    
  13. 修改 phpMyAdmin 的安全性文本,讓 Nginx 可以有權限可以讀寫,否則 SELinux 會阻檔,然後在瀏覽器出現403的錯誤碼
    [user@localhost ~]$ sudo chcon -R -t httpd_sys_rw_content_t /usr/share/nginx/html/phpMyAdmin
    
  14. 創建「phpMyAdmin/tmp/」並賦予 Nginx 權限
    [user@localhost ~]$ sudo mkdir /usr/share/nginx/html/phpMyAdmin/tmp
    [user@localhost ~]$ sudo chown nginx:nginx /usr/share/nginx/html/phpMyAdmin/tmp
    [user@localhost ~]$ sudo chmod 755 /usr/share/nginx/html/phpMyAdmin/tmp
    
  15. 給phpMyAdmin blowfish_secret密鑰
    1. 先將創建一個「config.inc.php」
      [user@localhost ~]$ sudo cp /usr/share/nginx/html/phpMyAdmin/config.sample.inc.php  /usr/share/nginx/html/phpMyAdmin/config.inc.php
      
    2. 從這個網址拿到較安全的密鑰
    3. 將密鑰貼給$cfg['blowfish_secret'] = '' 中的 '',也可以選擇自己決定密鑰是甚麼。但上面的是幫忙產生一個較安全的密鑰
  16. 在瀏覽器網址輸入 localhost/phpMyAdmin 就可以如同 xampp 一般,使用 phpMyAdmin 操作作資料庫啦!
How To Install Linux, Nginx, MySQL, PHP (LEMP) stack On CentOS 7

留言

這個網誌中的熱門文章