VirtualBox建置LNMP-2

安裝MariaDB

  1. 安裝 MariaDB 及 MariaDB-server套件

    1
    sudo yum groupinstall mariadb mariasb-client -y
  2. 啟動服務

    1
    sudo systemctl start mariadb
  3. 啟用開機自動啟動

    1
    sudo systemctl enable mariadb
  4. 檢查服務狀態

    1
    sudo systemctl status mariadb

    啟動狀態

  5. 加強 MariaDB 安裝的安全性(建議)

    1
    sudo mysql_secure_installation
  • 要求先輸入目前DB root 的密碼(預設無,直接按enter)
  • 詢問是否變更root 密碼(建議Y)
  • 是否移除匿名使用者(建議Y)
  • 是否關閉root 遠端登入(建議Y)
  • 是否移除 test DB(建議Y)
  • 是否重新載入權限資料表(Y)

完成後可檢查版本,確認安裝成功

1
mysql -V
  1. 連線進入

    1
    mysql -u root -p
  2. 建議另開user 及賦予權限 (可跳過)

    1
    2
    CREATE USER 'username'@'localhost';
    GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;

    安裝PHP

    因客戶家要求使用7.3.11 以上的版本,目前7.3的生命週期已經結束,所以這邊用7.4來做安裝

  3. 安裝 EPEL Yum 源,基本上就是一個額外的Linux軟體包

    1
    sudo yum install epel-release -y
  4. 安裝Remi的軟體包,這樣才可以把PHP7抓回來安裝

    1
    sudo yum localinstall <http://rpms.remirepo.net/enterprise/remi-release-7.rpm> -y
  5. 啟用php7.4

    1
    sudo yum-config-manager --enable remi-php74
  6. 安裝php

    1
    2
    3
    sudo yum --enablerepo=remi-php74 install php -y
    #or
    #sudo yum install php
  7. 確認php 版本

    1
    php -v
  8. 安裝php-fpm

    1
    sudo yum --enablerepo=remi-php73 install php-fpm -y
  9. 啟用php-fpm

    1
    2
    sudo systemctl start php-fpm
    sudo systemctl enable php-fpm
  10. 編輯nginx conf

    1
    sudo vi /etc/nginx/conf.d/default.conf 

    將紅框處註解打開
    將紅框處註解打開

  11. 編輯 php-fpm conf檔

    1
    sudo vi /etc/php-fpm.d/www.conf
  • 找到user & group,把apache 改成 nginx
  • 找到$HOSTNAME 將以下內容註解打開
    1
    2
    3
    4
    5
    6
    7
    8
    9
    env[HOSTNAME] = $HOSTNAME

    env[PATH] = /usr/local/bin:/usr/bin:/bin

    env[TMP] = /tmp

    env[TMPDIR] = /tmp

    env[TEMP] = /tmp
  1. 重新載入nginx
    1
    sudo systemctl reload nginx
  2. 在根目錄位置加上index.php
    1
    2
    sudo vi /usr/share/nginx/html/index.php
    # <?php phpinfo(); ?>
    這時可能會跳出找不到檔案的錯誤訊息,需要在default.conf加上這段
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
    root /usr/share/nginx/html;

    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }

重啟nginx 服務即可在ip_addr/index.php 看到目前的php 資訊

放上專案

預計要將專案放在/var/www/html中,所以我建立一個資料夾 project

1
sudo mkdir /var/www/html/project

並在裡面建立一個info.php 的檔案,內容一樣是先印出phpinfo

1
2
3
sudo vi /var/www/html/project/info.php

#<?php phpinfo(); ?>

以及一個index.html 的檔案,內容隨便,可以辨識有正確顯示畫面就好。

因為我沒有申請網域名,所以設定virtual host 的方式無法實現。
這邊我直接將 /etc/nginx/conf.d/default.conf中的root 設定指向
/var/www/html/project

location ~ .php的root 路徑也要記得改,重啟 nginx service 後,
ip_addr/ 會顯示index.html的內容;
ip_addr/info.php 則會顯示phpinfo

心得

以上過程遇到了不少奇奇怪怪的錯誤,希望透過此次整理可以在之後建環境順利一點。不過網路上找到的資訊,許多都不見得適用,其實也還有很多不懂為什麼加上這行就可以的地方,希望透過經驗的累積,未來可以再回來把這篇更新,並幫助到其他人。