LNMP環境搭建 —— Linux + Nginx + MySQL + PHP

Table of Contents

LNMP定義

系統環境

LNMP安裝部署

安裝Nginx

解壓源碼包並進行語法檢測[通過字體顏色可以查看是否寫錯]

編譯

make && make install

隱藏版本號

關閉debug,減少編譯代碼量

修改nginx配置文件

開啓nginx

安裝MySQL

官網下載MySQL 

解壓MySQL

編譯MySQL

make && make install 安裝MySQL

配置過程一

配置過程二

安裝php

解壓

編譯

安裝

編輯配置文件

編輯啓動腳本

測試


LNMP定義

基於Linux操作系統,以Nginx作爲web服務器,Mysql作爲數據庫。Nginx會直接處理靜態請求,因爲Nginx本身不具備處理動態請求能力,它會把用戶的動態請求交給php服務(php-fpm)去處理,php服務可以和數據庫進行交互,將結果返回給Nginx,最終返回給用戶

流程:

靜態請求:client -> nginx(location) -> html -> client

動態請求:client -> nginx(location) -> fastcgi(快速通用網關接口) -> php-fpm(管理進程) -> wrapper(工作進程) -> php -> mysql(php連接數據庫)  -> php -> php-fpm -> fastcgi -> nginx -> http -> client 

系統環境

系統:rhel7.6

安裝包版本:

  • nginx-1.18.0
  • mysql-boost-5.7.30
  • php-7.4.5

LNMP安裝部署

安裝Nginx

解壓源碼包並進行語法檢測[通過字體顏色可以查看是否寫錯]

添加語法檢測:

編譯

yum install -y gcc gcc-c++ pcre-devel openssl-devel
[root@node1 nginx-1.18.0]# ./configure --prefix=/usr/local/lnmp/nginx \
> --with-http_ssl_module \
> --with-http_stub_status_module \
> --user=nginx --group=nginx 

make && make install

沒有報錯,make成功,同時在objs目錄下又添加了很多內容

/usr/local/lnmp/nginx/sbin/nginx -V  # 查看nginx系統版本內容

但是此時我們發現nginx版本號完全顯示出來,這在企業中是相對比較危險的,那麼接下來我們將其隱藏

隱藏版本號

vim src/core/nginx.h

關閉debug,減少編譯代碼量

vim auto/cc/gcc

關閉前:

關閉後:

修改nginx配置文件

# 默認不支持動態頁面訪問
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
###
打開php模塊,並進行修改
修改訪問順序,首先訪問index.php,沒有再進行訪問index.html
###

做軟鏈接來方便操作,直接通過nginx來充當命令

ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/

開啓nginx

nginx          # 開啓nginx
netstat -tnlp  # 查看端口

安裝MySQL

安裝和更新部分官方文檔:https://dev.mysql.com/doc/refman/5.7/en/source-installation-methods.html

官網下載MySQL 

 這裏咱們不用最新版本,選擇5.7.30版本

image widget

解壓MySQL

編譯MySQL

之前我們編譯時通過./cofigure,但是我們可以看到,當前目錄下並沒有configure,這是因爲MySQL是通過cmake來編譯

useradd -s /sbin/nologin -M mysql     # 創建MySQL用戶,用來啓動MySQL進程

yum install -y cmake                  # 安裝cmake用於編譯MySQL

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \           # 安裝MySQL
-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306

但是,這並不是結束,出現了錯誤

原因已經告知,缺少-DWITH_BOOST=<directory>模塊,添加該模塊再次運行

code snippet widget

並沒有結束,再次運行的結果仍然有錯誤,看錯誤提示,告知我們缺少ncurses-devel庫

yum install -y ncurses-devel

在這裏要注意,在重新預編譯時需要刪除上一次編譯的緩存文件CMakeCache.txt 

rm -fr CMakeCache.txt

再次編譯

報錯,需要添加C++編譯器

yum install -y gcc-c++

清理緩存後再次編譯,出現一個warning

yum install -y bison

 清理緩存,並再次編譯,編譯成功~編譯過程已經沒有錯誤

make && make install 安裝MySQL

安裝過程比較長,需要耐心等待一陣子。這裏我直接截取部分過程,代表已經安裝完成

配置過程一

  • 創建data目錄(編譯時選擇的參數,sock存放路徑),並更改所屬爲mysql
cd /usr/local/lnmp/mysql/
mkdir data
chown -R mysql data

  • 做軟鏈接
ln -s /usr/local/lnmp/mysql/bin/* /usr/local/bin/

這裏爲了後面可以快捷使用mysql,創建軟鏈接到/usr/local/bin/ 

  • 修改配置文件一
cd mysql-test/include/           # 切換到配置文件目錄下
mv /etc/my.cnf /etc/my.cnf.bak   # 將原先的/etc/my.cnf進行備份,命名爲/etc/my.cnf.bak
cp default_my.cnf /etc/my.cnf    # 將default_my.cnf複製到/etc/目錄下,且命名爲my.cnf
vim /etc/my.cnf                  # 編譯過程中所指定的配置文件目錄

cd support-files/
cp -a mysql.server /etc/init.d/mysqld    # 複製腳本
chmod +x /etc/init.d/mysqld              # 增加執行權限
chkconfig mysqld on                      # 設置開機啓動
chkconfig --list                         # 查看設置詳情
systemctl status mysqld                  # 查看當前mysqld狀態

  • 初始化
mysqld --user=mysql --initialize

  • 啓動mysqld image widget
systemctl start mysqld
systemctl status mysqld
  • 登錄mysql(這裏初始密碼即初始化時的默認密碼)
mysql -uroot -p       # 登錄數據庫

  • 重置密碼 
mysql_secure_installation   # 重置密碼,這裏我重置爲dsd

image widget

  • 測試訪問mysql
mysql -uroot -p

配置過程二

  • 修改配置文件
vim /etc/my.cnf  #編譯時指定了配置文件目錄

  • 初始化
./bin/mysqld --user=mysql --initialize

  • 啓動服務 
./support-files/mysql.server start

這裏我出現了下圖問題,不知道是不是大家都會出現,若出現可以參考一下我的解決辦法

mkdir /var/log/mariadb               # 創建mariadb目錄
touch /var/log/mariadb/mariadb.log   # 創建mariadb.log文件
chown -R mysql /var/log/mariadb/     # 修改使用者權限

啓動成功~~~ 

  • 重置密碼
./bin/mysql_secure_installation

image widget

安裝php

官方下載地址:https://www.php.net/downloads.php 

解壓

編譯

./configure --prefix=/usr/local/lnmp/php \
--with-config-file-path=/usr/local/lnmp/php/etc \
--with-mysqli=/usr/local/lnmp/mysql/bin/mysql_config \
--enable-soap \
--enable-mbstring=all \
--enable-sockets \
--with-pdo-mysql=/usr/local/lnmp/mysql \
--enable-gd \
--without-pear \
--enable-fpm 

安裝依賴

yum install libxml2-devel.x86_64 sqlite-devel.x86_64 libpng-devel.x86_64 -y

網上下載oniguruma包,並進行安裝

wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/o/oniguruma-5.9.5-3.el7.x86_64.rpm
## 下載oniguruma二進制包
wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/o/oniguruma-devel-5.9.5-3.el7.x86_64.rpm
## 下載oniguruma-devel二進制包
yum install oniguruma-5.9.5-3.el7.x86_64.rpm oniguruma-devel-5.9.5-3.el7.x86_64.rpm -y

依賴安裝完成,我們重新進行編譯

編譯成功~

安裝

make && make install

編輯配置文件

  • 修改php-fpm.conf配置文件

cp php-fpm.conf.default php-fpm.conf    #備份默認配置文件1
vim php-fpm.conf

  • 編輯擴展配置文件 
cd php-fpm.d/
cp www.conf.default www.conf # 備份默認配置文件2
vim www.conf                 # 編輯配置文件2
###
nginx只能處理靜態請求,當在接收到動態請求時會傳給php,因此php這裏接收的就是nginx的信息
###

  • 修改php主配置文件 
cd php-7.4.5/
cp php.ini-production /usr/local/lnmp/php/etc/php.ini # 拷貝主配置文件到安裝路徑下
cd /usr/local/lnmp/php/etc/
vim php.ini                                           # 編輯主配置文件
###
更改時區到上海
###

編輯啓動腳本

cd php-7.4.5/sapi/fpm
cp init.d.php-fpm /etc/init.d/php-fpm  # 複製啓動腳本到/etc/init.d/目錄下
chmod +x /etc/init.d/php-fpm           # 給該文件提供執行權限
/etc/init.d/php-fpm start

錯誤提示告知我們由於缺少nginx用戶,那麼我們就去新增一下

useradd -s /sbin/nologin -M nginx      # 新增nginx用戶
/etc/init.d/php-fpm start              # 啓動
netstat -tnlp                          # 查看我們開啓的端口

測試

cd /usr/local/lnmp/nginx/html
vim index.php
###
<?php
phpinfo() # 輸出php一個默認頁面
?>
###

訪問成功,顯示php的信息頁面

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章