LNMP環境搭建與配置


lnmp就是 Linux+nginx + mysql + PHP,把Apache替換為Nginx;

這里我用到的Linux環境為為centos,接下來就分步驟來一步步安裝及測試。

 

一、安裝php

參考鏈接:https://zhuanlan.zhihu.com/p/34422328
在安裝PHP之前需要安裝一些依賴包,執行下面的命令就可以了,如果安裝過請忽略
yum install vim gcc gcc++ wget libxml2-devel wget -y

1.下載php

cd /usr/local/src/
wget http://cn2.php.net/distributions/php-5.6.36.tar.gz

 解壓源碼包,創建賬號

tar zxf php-5.6.36.tar.gz
useradd -s /sbin/nologin php-fpm

 其中php-5.6.36就是我們需要用到的壓縮包,讓我們進入目錄進行安裝

cd php-5.6.34

然后我們編譯PHP文件生成makefile 文件,這里需要普及一個小的知識點,那就是fastcgi;

php本來的請求是,當一個請求出現,PHP會啟動一個進程來完成請求,然后關閉,但是這很耗費系統的資源,不符合我們的要求,我們需要php-fpm,然后可以監聽php請求 ,如果有請求出現,那么開始提供進程來執行,如果業務多的話會創建一個新的,如果沒有多余的請求的時候,php-fpm會釋放掉多余的資源,而fastcgi就是php-fpm使用的前提,編譯安裝的時候必須加上這個參數。所以編譯的時候需要加上--enable-fpm 選項

./configure --prefix=/usr/local/php --enable-fpm

./configure 就是就是編譯makefile文件的工具 --prefix 就是指定安裝PHP到哪個目錄,執行完成之后下面的命令

make && make install

我們執行完成./configure 只是把我們的配置寫入makefile文件,還沒有安裝,make 命令就是安裝,到此我們就安裝完成PHP;
這時我們可以隨意一個目錄,建個文件index.php執行測試下
touch index.php

寫入內容:
<?php
echo "hello world";

然后保存退出,執行
/usr/local/php/bin/php index.php

這個時候輸出hello world就代表文件執行成功,/usr/local/php/bin/php PHP文件執行的入口,如果我們要將PHP寫如Linux環境變量,需要加入的目錄為/usr/local/php/bin
(補充)
添加環境變量
vim /etc/profile
export PATH=$PATH:/usr/local/php/bin

關閉shell窗口后都需要再執行一次source /etc/profile才能生效,這個問題需要在~/.bashrc文件最后添加source /etc/profile,這樣問題便得到解決;

 

二、安裝mysql

參考鏈接https://www.jianshu.com/p/276d59cbc529

(安裝過程務必保持文件路徑的前后統一,否則可能會導致不可預期的結果)

1、檢查是否已經安裝過mysql,執行命令

rpm -qa | grep mysql

如果有安裝,則會顯示該目錄,刪除即可:

rpm -e –nodeps 該目錄

2、查詢所有Mysql對應的文件夾

whereis mysql

 存在就刪除相關目錄文件

rm -rf /usr/lib64/mysql /usr/local/mysql /usr/share/mysql

驗證是否檢查完畢

whereis mysql
find / -name mysql

3.下載mysql安裝包

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

也可以直接到mysql官網: https://downloads.mysql.com/archives/community/ 選擇對應版本進行下載

在執行wget命令的目錄下或你的上傳目錄下找到Mysql安裝包:mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

4.執行解壓命令

tar xzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
ls

解壓完成后,可以看到當前目錄下多了一個解壓文件,移動該文件到/usr/local/下,並將文件夾名稱修改為mysql

mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/
cd /usr/local/
mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql

(
如果/usr/local/下不存在mysql文件夾,直接執行如下命令,也可達到上述效果:
mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql
)

/usr/local/mysql目錄下創建data目錄

mkdir /usr/local/mysql/data

更改mysql目錄下所有的目錄及文件夾所屬的用戶組和用戶,以及權限
chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql

5.編譯安裝並初始化mysql,務必記住初始化輸出日志末尾的密碼(數據庫管理員臨時密碼)
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql

這里可能會出現這種錯誤

  出現該問題首先檢查該鏈接庫文件有沒有安裝使用,命令進行核查

rpm -qa|grep libaio
運行命令后發現系統中無該鏈接庫文件:
yum install  libaio-devel.x86_64
安裝成功后,繼續運行數據庫的初始化命令,此時可能會出現如下錯誤:

執行如下命令后:

yum -y install numactl

執行無誤之后,再重新執行第5步初始化命令,無誤之后再進行下一步操作;

運行初始化命令成功后,輸出日志如下:

 記錄日志最末尾位置root@localhost:后的字符串,此字符串為mysql管理員臨時登錄密碼;

6、編輯配置文件my.cnf,添加配置如下:

 
        
vi /etc/my.cnf

[mysqld]
datadir=/usr/local/mysql/data
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=600
innodb_file_per_table=1
lower_case_table_names=1
character_set_server=utf8

lower_case_table_names:是否區分大小寫,1表示存儲時表名為小寫,操作時不區分大小寫;0表示區分大小寫;不能動態設置,修改后,必須重啟才能生效:
character_set_server
:設置數據庫默認字符集,如果不設置默認為latin1
innodb_file_per_table
:是否將每個表的數據單獨存儲,1表示單獨存儲;0表示關閉獨立表空間,可以通過查看數據目錄,查看文件結構的區別;

7、測試啟動mysql服務器

/usr/local/mysql/support-files/mysql.server start

這里報錯,說明沒啟動成功,報錯原因有多種,要根據其原因去解決

因為沒有路徑也沒有權限,所以創建此路徑並授權給mysql用戶:

mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/

再執行啟動命令:

說明啟動成功;

查看是否存在mysqlmysqld的服務:

ps -ef|grep mysql | grep -v grep
ps -ef|grep mysqld | grep -v grep

8、添加軟連接,並重啟mysql服務:

ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
service mysql restart

 登錄mysql,修改密碼(密碼為步驟5生成的臨時密碼)

 
         
 
         
mysql -u root -p
set password for root@localhost =password('想改的密碼');

 開放遠程連接:

use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;

9.設置開機自動啟動

將服務文件拷貝到init.d下,並重命名為mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
賦予可執行權限
chmod +x /etc/init.d/mysqld
添加服務
chkconfig --add mysqld
顯示服務列表
chkconfig –list

 到這mysql安裝完成;

 

三、安裝nginx

1.安裝nginx之前先安裝一個擴展pcre,這個是正則匹配用到的擴展,官方網址:
http://www.pcre.org/,選擇自己下載的版本
cd ~
wget https://ftp.pcre.org/pub/pcre/pcre-8.00.tar.gz
tar zxvf pcre-8.00.tar.gz
cd pcre-8.00
./configure
make & make install

2. 下載nginx

nginx的官方網址:http://nginx.org/,選擇下載自己的版本,這里以最新版為例:

cd ~
wget http://nginx.org/download/nginx-1.19.10.tar.gz
tar zxvf nginx-1.19.10.tar.gz
cd nginx-1.19.10
./configure --prefix=/usr/local/nginx --with-pcre=/root/pcre-8.00
make & make install

如果出現該錯誤,重新執行下編譯安裝

./configure --prefix=/usr/local/nginx --with-pcre=/root/pcre-8.00

make & make install

3.然后啟動nginx

/usr/local/nginx/sbin/nginx

4. 查看是否已經啟動

ps aux | grep nginx

5. 然后訪問

127.0.0.1 //如果打印輸出Welcome to nginx! 說明安裝成功

(個人服務器就訪問對應服務器IP)

6. 增加nginxPHP的支持

假設我設定PHP的目錄為

/home/www

打開nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf 

然后將這段代碼改成下面這樣(#號所注釋)

location ~ \.php$ {
            root           /home/www; //網站目錄
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
}

然后wq保存退出

然后重啟phpnginx

/usr/local/nginx/sbin/nginx

(出現這錯誤,端口被綁定,殺死進程繼續啟動

fuser -k 80/tcp

)

/usr/local/php/sbin/php-fpm

(如果出現該錯誤,執行后再執行下重啟php

cd /usr/local/php/etc

cp php-fpm.conf.default php-fpm.conf

打開瀏覽器,輸入

127.0.0.1/index.php

(個人服務器IP

(

如果出現

首先可以查看nginx錯誤日志,這里說下配置錯誤日志:

重啟nginx,再訪問,可以去查看該日志

cat logs/error_nginx_php.log

這里可以查看下nginx.confphp-fpm.conf 中的usergroup配置項和nginx.conf文件中的 user配置項是否一致

這里有各種錯誤,具體查看錯誤日志提示去解決即可;文件權限不足等,依個排查

如出現這個錯誤

FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream,..

檢查nginx.conf

fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
修改為
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

然后重啟即可

 

如果輸出hello world 代表着成功,lnmp環境已經搭建完畢,具體還是需要自己搭建一遍遇到問題依次排查解決,會比較清晰。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM