CentOS 7 安裝 Apache+PHP 7+MySQL+phpMyAdmin+FTP+SSH

2018/08/29 10:23 更新 MySQL 密碼說明的部分

進入系統時,先不要進行 yum update 更新套件指令,因為一旦更新,後續的安裝怕有依賴上的問題產生。建議等所有系統都安裝無誤以後,再回來執行 yum update。

  • 目前發現先 yum update 以後再安裝 MySQL 8.0 會造成預設密碼怎樣也無法登入的狀況

安裝 EPEL

這款套件管理提供各種企業級的 Linux 一些額外的高品質套件 (參考)


安裝 VIM


關閉 SELinux

為了避免權限問題,我們先把 SELinux 關閉


安裝 MySQL 8

參考網友

因為 8 出來了很不棒,所以放棄 MariaDB 囉!啟用 MySQL 的 YUM Repository 後,預設會讓 yum 安裝 MySQL 5.7,如要安裝 MySQL 8,需要加入 “–enablerepo=mysql80-community”

安裝時 MySQL 會自動替 root 添加亂數密碼,所以我們要查詢自動產生的密碼

看到這行

這個 Wh(/Pw.od5&V 就是自動產生給我的密碼,當然你的這組密碼也會不同。接著必須要修改 MySQL 新密碼 (參考),我們可以參考官方,這邊簡單看過下方列出的三種政策要求 (參考)

Policy Tests Performed
0 or LOW 長度
1 or MEDIUM 長度; 數字、大小寫、特殊字元
2 or STRONG 長度; 數字、大小寫、特殊字元、字典檔路徑
重要!如果你打算使用 phpMySQL 請這樣改密碼

MySQL 8.0 預設使用 caching_sha2_password 認證密碼,但是 PHP 7.2 尚不支援這是關鍵(參考),開發人員表示目前無能為力,不過也提到 PHP 正在開發支持這項功能,一旦 PHP 支持以後 phpMyAdmin 也將會跟進修正。所以現下我們若要使用 phpMyAdmin (PHP 開發的嘛…) 則必須修改 MySQL 的認證模式為 mysql_native_password

我們登入 mysql

接著我們不管下什麼指令都會被要求要修改密碼。我們先修改密碼再來解釋

我設定的密碼使用 a_A@123456 是有原因的,因為當我們查看當前驗證密碼政策 validate_password.policy,才知道密碼有什麼必須要求。進入 mysql 下指令後會看到這張表

  • policy:政策的程度叫做 MEDIUM (預設)
  • length:必須要的長度是 8 個字
  • mixed_case_count:必須要 1 個小寫 1 個大寫
  • number_count:必須要 1 個數字
  • special_char_count:必須要 1 個特殊符號
但如果你沒使用 phpMySQL 請這樣改密碼

因為沒有 PHP 支援的問題,所以用預設 caching_sha2_password 認證就好。

關於 MySQL 8 的 Password Validation 元件(可跳過)

看下面這個報錯的範例

會顯示「ERROR 1819 (HY000): Your password does not satisfy the current policy requirements」,官方說這是因為原始密碼值 ‘abc’ 不可被檢查所以會報錯,因此我們要寫 hash 過後的值,也就是下方的 “*0D3CED9BEC10A777AEC23CCC353A8C08A633045E”

這樣就成功更改了,我們重新啟動後密碼用 abc 登入看看

不過這是透過原始 hash 值來設定,我們當然不知道我們設定的密碼 hash 值是多少。所以還是使用 validate_password.policy 的規範來設置吧!(這段參考自官方)

安裝 MariaDB (目前不推薦)

雖然 MariaDB 成為 CentOS 預設,但現在 MySQL 8 出來了效能大幅提升,所以建議改用 MySQL 8 囉!

如果出現這樣的錯誤,那就重開 Linux 吧,比較快…

最後設定 MySQL 安全程序,如 root 是否要設定帳號密碼,會利用詢問回答的方式進行。


安裝 Apache

查看 localhost 就會出現畫面了。讓 Apache 可以支援 .htaccess ,須要把 AllowOverride 的功能開啟。如使用框架 Codeigniter 就須要設定。

因為我的網頁預設在

所以將 None 修改為 All

重新啟動

虛擬主機 VirtualHost 設定

如果我要建立新網站 IP:8089,並指向路徑 /var/www/html/website2.com,那麼先在 /etc/httpd/conf/httpd.conf 監聽 8089

建議一個網站,就新增一個設定檔,所以 website2.com 那就建立 /etc/httpd/conf.d/website2.com.conf

最後防火牆開啟 8089

參考


安裝 PHP (v7.2)

要尋找所有套件可以使用

我們安裝這些套件

php 根目錄會在 /var/www/html ,接著調整 PHP 的常用設定

參考這篇修改php.ini

重新啟動

日後擴充 PHP 掛件,可使用 『yum -y install 名稱』


安裝 Composer

為了使用最新的 phpMyAdmin 解決許多老舊 bug ,我需要使用 Composer 下載,因此我們先安裝。

  1. 複製安裝文件 PHP 檔案
  2. 認證下載的文檔是否正確 (我直接跳過,因為要打 hash 太長串…..XD)
  3. 執行安裝 composer
  4. 移除安裝文件

完成以後,我們要放到全域環境,這樣才能讓任何專案無須從新安裝 composer。記得 Composer 限制不可在最高權限 root 中執行。

參考網友


安裝 phpMyAdmin

因為 CentOS 上的 phpMyAdmin 都是支援舊版的 PHP 5,目前找不到 yum 方式可以安裝最新版本,所以我們使用 phpMyAdmin 其中一項的建議透過 composer 安裝。

1. CentOS 使用 yum 會安裝出現衝突 (這部分就不建議了,參考方法 2)

目前會造成 php72w-common conflicts with php-common-5.4.16-36.3.el7_2.x86_64 的衝突,暫時無解,若有好方法歡迎告知 : )

透過 vi 指令修改

修改成

接著再修改

將 $cfg[‘Servers’][$i][‘auth_type’] 改為使用 http 的方式

重新啟動伺服器

2. 用 composer 下載 (建議,因為版本最新,解決許多問題)

由 root 更改權限給使用者,如我的帳號叫 jason

因為是使用 composer 手動安裝,所以未來更新 phpMyAdmin 也只能透過 composer 而無法透過 yum 了,這點要注意。參考 phpMyAdmin 官網 安裝

網址打上就可以進入,預設使用 MySQL 帳號登入。詳細設定檔可參考 /var/www/html/phpmyadmin/libraries/config.default.php (千萬不要直接修改)。

如果遇到了 Authentication plugin ‘caching_sha2_password’ cannot be loaded 問題,請參考我上述 MySQL 修改密碼的方法。

接著我們複製預設的範例來製作設定檔

登入方式有兩種:
1. 若要由 Web 登入

指定 blowfish_secret 密碼要 32 個字。auth_type 使用 cookie。

2. 若要自動登入

不安全但很方便,建議僅在開發時使用,若為 config 則務必要指定 user、password。網址進入 phpmyadmin 就不需要輸入帳號密碼,當然也無法登出。

接著匯入 phpmyadmin 的設定資料庫,這樣我們在修改 phpmyadmin 的時候才能儲存設定

從網址連進 http://xxx.xxx.xxx.xxx/phpmyadmin/ 以後,應該就會看到資料庫多出 phpmyadmin 。這可以解決「尚未設定 phpMyAdmin 設定儲存空間,部份延伸功能將無法使用。」的問題。


建立FTP

透過 vi 修改為

接著下指令

啟動FTP

設置家目錄

接著就可以使用 Linux 原本系統已存在的使用者做登入。但是 root 預設不可登入

這時 Linux 預設的路徑可以看到整個系統,我們希望做一些限制,例如只能限制在 /var/www/html。

  1. 先修改使用者的家目錄
  2. 不可離開家目錄

    修改以下為開啟

    因為 vsftp 安全設定不允許你的家目錄有寫入權限,所以必須添加允許可寫入(參考網友)。在檔案中添加『不會被限制在家目錄的使用者』,如果沒有就保持空白

    使用者帳號的添加,一行一個。這樣 tom 跟 jason 都不會被限制在家目錄。

  3. 修改 /var/www/html 擁有人與群組
    因為 /var/www/html 預設屬於 root,我們要修改為 FTP 登入的使用者,這樣這個使用者才可以進行上傳、修改、刪除。詳細參考

SSH

修改一些參數

檢測是否開啟 port

參考網友

Comments

  1. 關於完整替代的部分 … 請問MariaDB如何操作使用 ?
    phpMyAdmin過去都可以用web的方式管理資料庫 ~
    一樣有套件可以抓嗎 ?

    • 基本上操作起來完全跟 MySQL 一樣喔!只是基底核心不一樣,仍然可以透過 phpMyAdmin 操作資料庫喔

  2. Tai-Shun Huang
    2016-05-18 - 10:59

    哇 每次搜尋php相關的東西 中文的 都會出現你的網站耶!!!

  3. 好讚,搜了好多教程都安裝不成功,一大堆問題,用這個直接一部成功
    能不能寫一篇文章,關於centos7下如何同時安裝php7和php5.6,具體怎麼去配置

  4. 安裝 PHP (v7.2)->我們安裝這些套件 裡面有個php72w-idap是php72w-ldap嗎?

  5. 有在國外查到說webtatic這個repo可能造成衝突,所以試著把remi跟remi-php72以外的repo通通禁用後yum clean all 在 yum install phpmyadmin就成功了,沒有再跳出衝突

發表迴響