新購的雲伺服器需要配置 lnmp 環境,想著每次都重頭手動編譯來一次,太麻煩了效率低下,用別人的又未必符合自己的習慣跟風格,決定自己寫一個一鍵安裝的指令碼。初出茅廬,歡迎指正,或建議或bug...後面考慮 做一個已經編譯好的版本可供直接使用無需編譯,以提升部署效率。
指令碼倉庫
- 編譯 nginx 並初始化配置
- 編譯 php 並初始化配置
- 編譯 mysql 並初始化配置
- nginx 、php 需要配置 www-data 使用者跟使用者組
- 建立各自所需要的目錄或者日誌
- 配置 nginx/php/mysql 的 systemctl 開機自啟,環境變數
變數
- start_dir 指令碼所在目錄
- install_dir 安裝目錄
- dl_dir 下載目錄
- nginx_version nginx 版本
- php_version php 版本
- mysql_version mysql 版本
- mysql_data_dir mysql data 存放目錄
函式
- init_yum
- init
- install_nginx
- install_php
- install_mysql
- print_conf
目錄結構
install_dir-+---
/php---+ #php配置檔案
/php-fpm.conf.default #
/php.ini.default #
/www.conf.default #
/nginx-+ #nginx 配置檔案
/default.conf #
/vhost.conf #
/pkg---+ #原始碼包
/boost_1_59_o.tar.gz
install.sh #安裝指令碼
4.1 init
init()
初始化一些基礎設定init_yum()
安裝所需要的依賴 如 wget 、gcc..
4.2 nginx
install_nginx()
安裝 nginx
- wget tar.gz 包
- tar 解壓
- configure 引數並編編譯 make & make install
- 配置檔案
- 新增到 systemctl,新增環境變數
- 開機自啟 並 啟動
- 刪除包跟原始檔
4.3 php
install_php()
- 下載 並解壓原始碼包
- configure 引數並編譯
- 配置檔案
- 新增到 systemctl,新增環境變數
- 開機自啟 並 啟動
- 刪除包跟原始檔
主意配置
配置檔案 php-fpm.conf 會 include www.conf
指令碼會 cp php/ 下面已經配置好的配置檔案
# php-fpm.conf
pid = run/php-fpm.pid
www.conf
# listen 127.0.0.1:9000 or listen =
user = www-data
group = www-data
listen = /usr/local/php7/var/run/run.sock
listen.owner = www-data
listen.group = www-data
4.4 mysql
mysql 編譯需要
4.5 成功後啟的程式
由 root 啟 一個 master 程式,www-data 啟 work 程式。
- nginx 的日誌目錄 owner 跟 group 為 www-data
- nginx php-fpm work 程式都由 www-data 啟
- php-fpm 的 unix socket 的使用者跟組都為 www-data
- /data/www www根目錄使用者跟使用者組為 www-data
- mysql 的 data 跟 log 目錄owner group 都為 mysql
- mysql mariadb 的 owner 跟 group 為 mysql
使用 unix socket 注意
nginx 通過 fast_cgi
將請求給 php-fpm
。
使用 unix socket 通訊,需要啟 nginx 的程式 與 php-fpm 的程式 對 unix socket 都要有 rw
許可權
倉庫地址
https://github.com/jerr123/centos-lnmp
- shell 指令碼還是很強大,裡面很多指令不夠熟悉。
- 對 php-fpm nginx mysql 以及 shell 都有了更深的認識。
- 多動手,多看日誌,多看註釋,多看官方文件,多看錯誤提示,多思考。