記一次 寫 CentOS 下 lnmp 一鍵編譯指令碼的經歷

jerrkill發表於2019-01-30

新購的雲伺服器需要配置 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

  1. wget tar.gz 包
  2. tar 解壓
  3. configure 引數並編編譯 make & make install
  4. 配置檔案
  5. 新增到 systemctl,新增環境變數
  6. 開機自啟 並 啟動
  7. 刪除包跟原始檔

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 編譯需要

  • mysql5.7 及以上版本 需要 boost_1_59_0 及以上版本 下載地址
  • cmake,cmak 的一些引數跟選項的意義 暫時先看這裡,得空了再整理

4.5 成功後啟的程式

由 root 啟 一個 master 程式,www-data 啟 work 程式。

file

  • 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 都有了更深的認識。
  • 多動手,多看日誌,多看註釋,多看官方文件,多看錯誤提示,多思考。

高度自律,深度思考,以勤補拙

相關文章