超簡單易懂的LNMP架構

&π_π&發表於2020-10-07

1. Nginx的安裝與配置

1.1 Nginx的工作原理

Nginx 由核心和模組組成。

Nginx 本身做的工作實際很少,當它接到一個 HTTP 請求時, 它僅僅是通過查詢配置檔案將此次請求對映到一個 location block,而此 location 中所配 置的各個指令則會啟動不同的模組去完成工作,因此模組可以看做 Nginx 真正的勞動工作者。

Nginx 的模組從結構上分為核心模組、基礎模組和第三方模組:

核心模組:HTTP 模組、EVENT 模組和 MAIL 模組;

基礎模組:HTTP Access 模組、HTTP FastCGI 模組、HTTP Proxy 模組和 HTTP Rewrite 模組;

第三方模組:HTTP Upstream Request Hash 模組、Notice 模組和 HTTP Access Key 模 塊。

1.2 Nginx的配置

上傳nginx-1.15.9.tar.gz 到opt目錄下

 yum -y install gcc gcc-c++ make pcre-devel zlib-devel   ###預先安裝好需要的環境
useradd -M -s /sbin/nologin nginx
cd /opt
tar zxvf nginx-1.15.9.tar.gz
cd nginx-1.15.9/
./configure
 --prefix=/usr/local/nginx  ##指定位置
--user=nginx    ###使用者
--group=nginx   ##組使用者
--with-http_stub_status_module   
make -j3
make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
ls -l /usr/local/sbin/nginx
nginx
netstat -anpt |grep nginx   ###如果找不到netstat
vim /lib/systemd/system/nginx.service    ##新增Nginx系統服務
[Unit]Description=nginx          ### 描述用的什麼網頁服務
After=network.target    ### 描述服務型別
[Service]Type=forking           ### 後臺執行形式
PIDFile=/usr/local/nginx/logs/nginx.pid     ###PID檔案位置
ExecStart= /usr/local/nginx/sbin/nginx       ##啟動服務
ExecrReload= /usr/bin/kill -s HUP $MAINPID   ###根據PID過載配置
ExecrStop= /usr/bin/kill -s QUIT $MAINPID     ###根據PID終止程式
PrivateTmp=ture
[Install]
WantedBy=multi-user.target

 
chmod 754 /lib/systemd/system/nginx.service    
systemctl start nginx.service         
systemctl enable nginx.service 

2. Mysql的安裝與配置

#########安裝mysql######

yum -y install \
ncurses \ 
ncurses-devel \
bison \

cmake useradd -s /sbin/nologin  mysql


編譯安裝
###上傳mysql-boost-5.7.20.tar.gz到opt目錄下###

cd /opt
tar xzvf mysql-boost-5.7.20.tar.gz
cd /opt/mysql-5.7.20/ 
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \        ##開啟儲存引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \             ##開啟儲存引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \        ##開啟儲存引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \    ##開啟儲存引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \    -DWITH_BOOST=boost \
-DWITH_SYSTEMD=1    ###自己的id號
make && make install
chown -R mysql:mysql /usr/local/mysql/

####配置選項含義###
1、DCMAKE_INSTALL_PREFIX:指定將 mysql 資料庫程式安裝到某目錄下,如目錄/usr/local/ mysql。
2、DSYSCONFDIR:指定初始化引數檔案目錄
3、DDEFAULT_CHARSET:指定預設使用的字符集編碼,如 utf8。
4、DDEFAULT_COLLATION:指定預設使用的字符集校對規則,utf8_general_ci是適用於 UTF-8 字符集的通用規則。
5、DWITH_EXTRA_CHARSETS:指定額外支援的其他字符集編碼。


#####建立調整配置檔案########

vi /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sockserver-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

chown mysql:mysql /etc/my.cnf

#######設定環境變數####

echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile

cd /usr/local/mysql/
bin/mysqld \     ###初始化資料庫
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld
netstat -anpt | grep 3306

mysqladmin -u root -p password 回車第一個直接回車,到第二個new passwd 輸入密碼,回車,再次確認密碼//剛開始沒密碼是空的直接回車,然後輸入密碼abc123,在此確認abc123,這是在root賬戶下執行的

mysql -u root -p ##這個命令敲下,提示要輸入密碼,這個就是剛才設定的密碼abc123

3.0 PHP的安裝和配置

####################安裝PHP環境#####

yum -y install \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \   ###字型樣式
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel \      ###定位遠端資源openssl openssl-devel

編譯安裝

cd /opt
tar xjvf php-7.1.10.tar.bz2
cd php-7.1.10

./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \    ##開啟傳遞會話
--enable-ftp \      ###開啟ftp服務
--enable-pdo \     ###連線資料庫的驅動
--enable-tokenizer \   ###身份認證令牌
--enable-zip      ##壓縮 
make && make install
cp php.ini-development /usr/local/php/lib/php.ini
vi /usr/local/php/lib/php.ini
mysqli.default_socket = /usr/local/mysql/mysql.sock
date.timezone = Asia/Shanghai

配置及優化FPM模組

cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
cd /usr/local/php/etc/
vi php-fpm.conf 
;pid = run/php-fpm.pid   搜到這一段
;user = nginx     自己手打的
;group = nginx    自己手打

/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php-ini
netstat -anpt |grep 9000
ln -s /usr/local/php/bin/* /usr/local/bin/
ps aux |grep -c "php-fpm"

編輯測試頁

vi /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
systemctl restart nginx.service 

在瀏覽器上面測試一下

相關文章