搭建LNMP架構的辛酸歷程-----源碼編譯MYSQL,PHP,NGINX

搭建LNMP架構的辛酸歷程-----源碼編譯MYSQL,PHP,nginx

1.LNMP是什麼?

LNMP = Linux+Nginx+Mysql+PHP
LNMP代表的就是Linux系統下Nginx+MySQL+PHP這種網站服務器架構

Nginx中的PHP是以fastcgi的方式結合Nginx的,可以理解爲Nginx代理了PHP的fastcgi。

LNMP和LAMP唯一不同是指提供web服務的是Nginx而不是Apache,在Apache中,PHP是作爲一個模塊存在的。而在Nginx中,PHP是作爲一個獨立服務存在的,這個服務叫做php-fpm. ;Nginx直接處理靜態請求,動態請求會轉發給php-fpm.

2.LNMP的工作原理

瀏覽器發送http request請求到服務器(Nginx)
服務器響應並處理web請求,將一些靜態資源(CSS,圖片,視頻等)保存服務器上,然後將php腳本通過接口傳輸協議(網關協議)PHP-FCGI(fast-cgi)傳輸給PHP-FPM(進程管理程序)
PHP-FPM不做處理,然後PHP-FPM調用PHP解析器進程,PHP解析器解析php腳本信息。
PHP解析器進程可以啓動多個,進行併發執行。然後將解析後的腳本返回到PHP-FPM
PHP-FPM再通過fast-cgi的形式將腳本信息傳送給Nginx
服務器再通過Http response的形式傳送給瀏覽器。
瀏覽器再進行解析與渲染然後進行呈現。

3.MYSQL數據庫的源碼編譯

第一步:解壓安裝 mysql

解壓安裝 mysql:
tar zxf mysql-boost-5.7.30.tar.gz

在這裏插入圖片描述

第二步:創建 mysql 用戶

創建 mysql 用戶:
useradd -s /sbin/nologin -M mysql

第三步:編譯MYSQL

cmake跨平臺工具是用來預編譯mysql源碼的,用於設置mysql的編譯參數。如:安裝目錄、數據存放目錄、字符編碼、排序規則等

yum install -y cmake	#編譯mysql需要用的包

cd mysql-5.7.28	#進入mysql解壓後的目錄
#以下命令爲編譯:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \			#安裝位置
> -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \ 	#指定套接字文件位置
> -DEXTRA_CHARSETS=all \ 										#擴展字符集
> -DDEFAULT_CHARSET=utf8 \										#默認字符集
> -DDEFAULT_COLLATION=utf8_general_ci \							#默認字符校對
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \							#安裝myisam 存儲引擎
> -DWITH_MYISAM_STORAGE_ENGINE=1 \								#安裝innodb存儲引擎
> -DWITH_MEMORY_STORAGE_ENGINE=1 \								#安裝memory存儲引擎
> -DWITH_READLINE=1 \											#支持readline庫
> -DENABLED_LOCAL_INFILE=1 \									#啓用加載本地數據
> -DMYSQL_USER=mysql \											#指定mysql運行用戶
> -DMYSQL_TCP_PORT=3306											#指定mysql端口

在這裏插入圖片描述
在這裏插入圖片描述
根據提示解決依賴性問題:

yum install -y gcc gcc-c++ -y

重新編譯:

又出現報錯
在這裏插入圖片描述
解決辦法:

缺少 -DWITH_BOOST=<directory>參數
重新編譯時加上下面的參數: 
-DWITH_BOOST=boost/boost_1_59_0/

注意:在解決問題之前,,,一定一定要重新編譯時,需要清除原來的對象文件和緩存信息(!!!!!)

重新編譯時,需要清除原來的對象文件和緩存信息:
make clean
rm -fr CmakeCache.txt

在這裏插入圖片描述
繼續編譯動作:
又出錯了
在這裏插入圖片描述
yum install openssl-devel -y
安裝之後,先清除對象文件和緩存,在進行編譯

又錯了
在這裏插入圖片描述

yum install ncurses-devel -y
安裝之後,先清除對象文件和緩存,在進行編譯

在這裏插入圖片描述
編譯成功,但是有一個警告!!!

在這裏插入圖片描述
解決:
yum install -y bison

第四步:安裝

安裝:
make && make install 

在這裏插入圖片描述
安裝完成!!!!

第五步:修改權限

修改權限:
cd /usr/local/lnmp/mysql
mkdir data
chown -R root .
chown -R mysql data
ln -s /usr/local/lnmp/mysql/bin/* /usr/local/bin/

在這裏插入圖片描述
第六步:複製配置文件

cd /usr/local/lnmp/mysql/mysql-test/include
cp default_my.cnf /etc/my.cnf
cd /usr/local/lnmp/mysql/support-files
cp -a mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig mysqld on
systemctl status mysqld

在這裏插入圖片描述
第七步:初始化


mysqld --user=mysql --initialize	#以mysql 用戶身份初始化
注意:初始化會生成一個臨時密碼,用於登錄 mysql(要記住此密碼)
比如:2020-05-05T16:19:05.101684Z 1 [Note] A temporary password is generated for root@localhost: g%KBW3mygi9G

g%KBW3mygi9G就是臨時密碼

啓動mysql:

systemctl start mysqld

進入 mysql:

mysql -uroot -pg%KBW3mygi9G

在這裏插入圖片描述
在這裏插入圖片描述
所以這時候需要進行安全初始化

mysql_secure_installation #然後會提示是否啓用密碼檢測插件,直接回車不啓用,否則會要求密碼有大小寫和特殊字符等要求;剩餘全部選 y

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

mysql安裝配置完成!!!!!!!!!!

4.PHP源碼編譯

第一步:解壓安裝包

解壓安裝包:
tar zxf php-7.4.1.tar.gz

在這裏插入圖片描述
第二部:進入解壓後的目錄,開始編譯

./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 -y libxml2-devel

繼續編譯:
在這裏插入圖片描述
yum install -y sqlite-devel.x86_64

繼續:

在這裏插入圖片描述
yum install -y libpng-devel
繼續:
在這裏插入圖片描述
這個包yum倉庫裏面沒有,所以需要下載,下載之後安裝
在這裏插入圖片描述

繼續:
在這裏插入圖片描述

第四步:安裝

make && make install

在這裏插入圖片描述
安裝完成!!!!!!!

第五步:拷貝更改配置文件

cd /usr/local/lnmp/php/etc
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf		#開啓17行:pid = run/php-fpm.pid

在這裏插入圖片描述
在這裏插入圖片描述
第六步:拷貝子配置文件

cd /usr/local/lnmp/php/etc/php-fpm.d
cp www.conf.default www.conf
vim www.conf	#更改2324行內容如下
user = nginx
group = nginx

在這裏插入圖片描述
在這裏插入圖片描述
第七步:拷貝更改php主配置文件

cd php-7.4.1
cp php.ini-production /usr/local/lnmp/php/etc/php.ini
vim /usr/local/lnmp/php/etc/php.ini	#961行修改時區如下
date.timezone = Asia/Shanghai

在這裏插入圖片描述
在這裏插入圖片描述

第八步:拷貝php啓動腳本至/etc/init.d/

cd /root/lnmp/php-7.4.1/sapi/fpm
cp init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm	#添加執行權限

注意:需要手動創建nginx用戶,不然啓動失敗
useradd -u 900 nginx

在這裏插入圖片描述
在這裏插入圖片描述
php安裝配置完成!!!!!!!!!

5.nginx的源碼編譯

第一步:解壓

解壓安裝包
tar zxf nginx-1.18.0.tar.gz 

第二步:去掉nginx的版本號

cd /root/lnmp/nginx-1.18.0/src/core
vim nginx.h    #去掉版本號,防止攻擊

在這裏插入圖片描述
第三步:關閉debug日誌

因爲debug的日誌非常多,企業中一般不需要開啓

vim auto/cc/gcc
做如下修改:
# debug
#CFLAGS="$CFLAGS -g" (將這2行註釋調,關閉debug)

在這裏插入圖片描述
在這裏插入圖片描述
第四步:編譯安裝

./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --user=nginx --group=nginx

make && make install

在這裏插入圖片描述
在這裏插入圖片描述
第五步:修改nginx配置文件,開啓php模塊

cd /usr/local/lnmp/nginx/conf
vim nginx.conf

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

將nginx啓動腳本鏈接到/usr/local/sbin/

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

第六步:開啓nginx

開啓nginx:
nginx -t ##檢測語法
nginx

在這裏插入圖片描述
這裏出錯的原因是之前裝過apache並且開啓着,80端口被佔着,所以關閉就行

開啓成功之後測試

在這裏插入圖片描述

在nginx默認發佈目錄添加index.php

vim /usr/local/lnmp/nginx/html/index.php
寫入:
<?php
phpinfo()
?>

在這裏插入圖片描述
在這裏插入圖片描述
nginx配置完成!!!!!!!!!!!

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