作為本入門系列最后一篇文章,將演示如何在CentOS7環(huán)境下搭建LNMP環(huán)境來構(gòu)建個(gè)人博客網(wǎng)站宋梧。
常見搭建網(wǎng)站的方式有LAMP捂龄、LNMP倦沧、IIS展融、Nginx告希、Tomcat等等燕偶,本文演示比較流行的基于LNMP方式來搭建動(dòng)態(tài)WEB網(wǎng)站。
正如前文“l(fā)inux入門系列6--軟件包管理之rpm和yum倉(cāng)庫(kù)”所述伯诬,在Linux上安裝軟件通常有幾種方式:通過編譯源碼安裝姑廉、通過RPM安裝桥言、通過YUM倉(cāng)庫(kù)安裝号阿。截至目前扔涧,前面的文章都是通過yum或rpm方式進(jìn)行安裝枯夜,本文演示通過源碼包方式進(jìn)行安裝湖雹。
一摔吏、LNMP環(huán)境概述
先來看兩個(gè)比較常見的概念:LAMP据某、LNMP癣籽。
1.1 LAMP
LAMP指的是在Linux操作系統(tǒng)中分別安裝 Apache網(wǎng)頁(yè)服務(wù)器才避、MySQL數(shù)據(jù)庫(kù)服務(wù)器和PHP開發(fā)服務(wù)器桑逝,以及一些對(duì)應(yīng)的擴(kuò)展軟件楞遏。
LAMP簡(jiǎn)單說就是:Linux+Apache+MySQL+PHP寡喝。
LAMP是當(dāng)前極為流行的搭建動(dòng)態(tài)網(wǎng)站的開源軟件系統(tǒng),擁有良好的穩(wěn)定性及兼容性格二。很多企業(yè)和個(gè)人都選擇在LAMP開發(fā)平臺(tái)上搭建自己的網(wǎng)站顶猜。
1.2 LNMP
LNMP指的是在Linux 操作系統(tǒng)中分別安裝Nginx網(wǎng)頁(yè)服務(wù)器长窄、MySQL數(shù)據(jù)庫(kù)服務(wù)器和PHP開發(fā)服務(wù)器挠日,以及一些對(duì)應(yīng)的擴(kuò)展軟件矗愧。
LNMP簡(jiǎn)單說就是:Linux+Nginx+MySQL+PHP。
相較于LAMP犯犁,LNMP使用Nginx 網(wǎng)頁(yè)服務(wù)器取代了Apache網(wǎng)頁(yè)服務(wù)器酸役。Nginx是一款高性能的HTTP網(wǎng)頁(yè)服務(wù)器和反向代理服務(wù)器涣澡,它的執(zhí)行效率極高,配置相比Apache也較為簡(jiǎn)單抗愁,所以在短時(shí)間內(nèi)被國(guó)內(nèi)外很多大型公司所采用蜘腌,大有取代 Apache 的勢(shì)頭(目前Apache和Ngnix使用量基本持平)撮珠,這也是本文采用LNMP的原因勺届。
二涮因、Linux軟件安裝方式
正如前文所述养泡,Linux中安裝軟件的方式主要有:通過編譯源碼安裝澜掩、通過RPM安裝、通過YUM倉(cāng)庫(kù)安裝株汉、第三方或自制一鍵式安裝包乔妈。
下面分別介紹幾種安裝方式的區(qū)別路召。
2.1 RPM方式安裝
RPM即紅帽軟件包管理器,他是為了解決安裝服務(wù)程序時(shí)的一些依賴問題而設(shè)計(jì)唯灵,類似Windows系統(tǒng)中的控制面板早敬,會(huì)建立統(tǒng)一的數(shù)據(jù)庫(kù)文件,詳細(xì)記錄軟件信息并能夠自動(dòng)分析依賴關(guān)系琐驴,當(dāng)確實(shí)依賴是給出提示信息绝淡,從而降低安裝的難度悬包,安裝人員只需要安裝提示安裝指定的依賴即可布近。
RPM最開始專為為RedHat設(shè)計(jì)撑瞧,它的優(yōu)勢(shì)已經(jīng)被公眾所認(rèn)可,使用范圍也已不局限在紅帽系統(tǒng)中了酬诀。目前基本上大部分的軟件在發(fā)行時(shí)都提供了RPM安裝包可以直接使用料滥。
2.2 YUM倉(cāng)庫(kù)方式安裝
盡管RPM自動(dòng)解決了軟件服務(wù)之間的一些依賴關(guān)系,但仍然需要安裝人員自行安裝相應(yīng)的依賴服務(wù)屿岂。隨著軟件技術(shù)的發(fā)展,一些大型軟件可能依賴非常多的一些其他服務(wù)运授,而如果要手動(dòng)解決這些問題吁朦,依然效率非常低。
因此為了解決這個(gè)問題纺讲,進(jìn)一步降低軟件安裝的難度,YUM軟件倉(cāng)庫(kù)就誕生了歉备。Yum軟件倉(cāng)庫(kù)可以根據(jù)用戶的要求自動(dòng)分析出所需軟件包及其相關(guān)的依賴關(guān)系碌嘀,然后自動(dòng)從服務(wù)器下載軟件包并安裝到系統(tǒng)。
Yum軟件倉(cāng)庫(kù)中的RPM軟件包可以是由紅帽官方發(fā)布的角钩,也可以是第三方發(fā)布的递礼,當(dāng) 然也可以是自己編寫的。這種方式非常方便将硝,推薦使用。
2.3 源碼方式安裝
在RPM公布之前律罢,要想在 Linux 系統(tǒng)中安裝軟件只能采取源碼包的方式安裝误辑。需要安裝人員自行編譯代碼并解決許多的軟件依賴關(guān)系歌逢,在安裝巾钉、升級(jí)、卸載服務(wù)程序時(shí)還要考慮到其他程序趋翻、庫(kù)的依賴關(guān)系睛琳,所以在進(jìn)行校驗(yàn)盒蟆、安裝师骗、 卸載历等、查詢、升級(jí)等管理軟件操作時(shí)難度都比較大辟癌。
一般當(dāng)軟件服務(wù)程序只提供了源代碼的方式時(shí)寒屯,才采用此方式進(jìn)行安裝。
2.4 第三方一鍵式安裝包
這種方式最為簡(jiǎn)單黍少,一些第三方公司為了更進(jìn)一步簡(jiǎn)化安裝過程寡夹,已經(jīng)寫好了寫成的安裝腳本,只需要安裝腳本即可完成復(fù)雜環(huán)境的部署厂置。
LNMP一鍵集成環(huán)境安裝包非常多菩掏,熟知的有l(wèi)nmp一鍵安裝包,不過我沒有用過昵济,大家可以自行去官網(wǎng)了解智绸。
官網(wǎng)為:https://lnmp.org/
2.5 如何選擇
我們?cè)趯?shí)際生產(chǎn)環(huán)境中安裝軟件應(yīng)該考慮的順序一般是:YUM--RPM--源碼--其他方式。通常先考慮使用YUM倉(cāng)庫(kù)方式安裝访忿,如果YUM倉(cāng)庫(kù)中沒有我們?cè)诳紤]RPM安裝包的形式進(jìn)行安裝瞧栗,如果RPM也沒有,我們?cè)诳紤]通過編譯源碼的形式進(jìn)行安裝海铆。
本文演示通過源碼的方式來進(jìn)行安裝LNMP環(huán)境迹恐。
三、編譯源碼方式安裝LNMP
3.1 環(huán)境準(zhǔn)備
先克隆準(zhǔn)備一臺(tái)虛擬機(jī)卧斟,并做一個(gè)快照殴边,防止安裝過程中萬一有問題可以快速恢復(fù)到初始狀態(tài),節(jié)約時(shí)間珍语。
3.1.1 防火墻及SELinux設(shè)置
為了簡(jiǎn)化安裝難度找都,先關(guān)閉防火墻和SELinux。
生產(chǎn)環(huán)境中有的企業(yè)是通過硬件防火墻來防護(hù)廊酣,有的則是通過軟件防火墻來防護(hù),根據(jù)實(shí)際需要進(jìn)行設(shè)置即可赏枚。
[root@lnmp ~]# firewall-cmd --state
running
[root@lnmp ~]# systemctl stop firewalld.service
[root@lnmp ~]# systemctl disable firewalld
[root@lnmp ~]# firewall-cmd --state
not running
[root@lnmp ~]# getenforce
Enforcing
[root@lnmp ~]# setenforce 0
[root@lnmp ~]# vim /etc/selinux/config
...省略部分內(nèi)容
SELINUX=disabled
...省略部分內(nèi)容
[root@lnmp ~]# getenforce
Disabled
修改/etc/selinux/config文件亡驰,禁用selinux保存退出。
每步的含義就不再多說了饿幅,忘記的返回去看前面的文章即可凡辱。
3.1.2 設(shè)置網(wǎng)絡(luò)YUM
由于CentOS自帶的yum下載會(huì)表較慢,因此把yum換為阿里的栗恩。
阿里centos7的yum為:http://mirrors.aliyun.com/repo/Centos-7.repo
還需要安裝擴(kuò)展yum:http://mirrors.aliyun.com/repo/epel-7.repo
[root@lnmp ~]# cd /etc/yum.repos.d/
[root@lnmp yum.repos.d]# rm -rf *
[root@lnmp yum.repos.d]# wget http://mirrors.aliyun.com/repo/Centos-7.repo
...省略顯示內(nèi)容
[root@lnmp yum.repos.d]# wget http://mirrors.aliyun.com/repo/epel-7.repo
...省略顯示內(nèi)容
[root@lnmp yum.repos.d]# ls
Centos-7.repo epel-7.repo
[root@lnmp yum.repos.d]# yum clean all
...省略顯示內(nèi)容
[root@lnmp yum.repos.d]# yum makecache
...省略顯示內(nèi)容
3.1.3 安裝編譯工具和依賴軟件包
要編譯源碼透乾,需要安裝cmake、gcc等如下一些工具和依賴包:gcc gcc-c++ pcre-devel openssl openssl-devel zlib-devel ncurses-devel cmake bison libxml2-devel
[root@lnmp yum.repos.d]# yum -y install gcc gcc-c++ pcre-devel openssl openssl-devel zlib-devel ncurses-devel cmake bison libxml2-devel libpng-devel
...省略顯示內(nèi)容
3.1.4 下載各個(gè)組件的源碼包
本例采用的源碼版本分別為:
組件 | 版本及包名 |
---|---|
nginx | nginx-1.12.2.tar.gz |
mysql | mysql-5.5.62.tar.gz |
php | php-7.1.29.tar.gz |
由于考慮到下載包有時(shí)候會(huì)比較慢,我上傳到了網(wǎng)盤乳乌,即可下載相關(guān)包捧韵。
如果需要不同版本的源碼包的,去對(duì)應(yīng)官網(wǎng)下載即可
mysql官網(wǎng):https://www.mysql.com/
nginx官網(wǎng):http://nginx.org/
php官網(wǎng):https://www.php.net/
在官網(wǎng)找到對(duì)應(yīng)的版本包地址后汉操,可以直接在虛擬機(jī)內(nèi)通過wget命令下載再来,也可以直接用我準(zhǔn)備好的包上傳到虛擬機(jī)內(nèi)。
本演示直接將以上幾個(gè)包上傳到虛擬機(jī)內(nèi)磷瘤,先在root家目錄創(chuàng)建lnmp目錄芒篷,然后將源碼上上傳到此目錄下
[root@lnmp ~]# pwd
/root
[root@lnmp ~]# mkdir lnmp
[root@lnmp ~]# cd lnmp
[root@lnmp lnmp]# pwd
/root/lnmp
[root@lnmp lnmp]# ls
mysql-5.5.62.tar.gz nginx-1.12.2.tar.gz php-7.1.29.tar.gz
這樣就準(zhǔn)備好了源碼包,接下來一個(gè)個(gè)進(jìn)行安裝采缚。
3.2 Nginx安裝
以前采用rpm或yum安裝程序的時(shí)候针炉,會(huì)幫我們做很多自動(dòng)化的操作,由于現(xiàn)在是自己通過編譯源碼安裝扳抽,因此急需要自己做編譯篡帕、創(chuàng)建用戶等工作。
3.2.1 創(chuàng)建nginx用戶
[root@lnmp lnmp]# useradd -r -s /sbin/nologin nginx
3.2.2 解壓源碼包
[root@lnmp lnmp]# pwd
/root/lnmp
[root@lnmp lnmp]# tar -zxvf nginx-1.12.2.tar.gz
...省略顯示內(nèi)容
3.2.3 編譯源碼
[root@lnmp lnmp]# cd nginx-1.12.2/
[root@lnmp nginx-1.12.2]# pwd
/root/lnmp/nginx-1.12.2
[root@lnmp nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
...省略顯示內(nèi)容
[root@lnmp nginx-1.12.2]# echo $?
0
[root@lnmp nginx-1.12.2]#
$? 如果為0說明沒有問題摔蓝,如果為1就要根據(jù)錯(cuò)誤赂苗,解決相關(guān)依賴問題
3.2.4 生成安裝文件
[root@lnmp nginx-1.12.2]# make
...省略顯示內(nèi)容
3.2.5 執(zhí)行安裝
[root@lnmp nginx-1.12.2]# make install
...省略顯示內(nèi)容
3.2.6 編寫啟動(dòng)shell腳本
nginx官方?jīng)]有提供啟動(dòng)腳本,因此如果要想讓nginx隨開機(jī)啟動(dòng)贮尉,需要自己編寫shell腳本拌滋。
在/etc/init.d/目錄下創(chuàng)建nginx自定義shell腳本文件并輸入一下內(nèi)容
[root@lnmp nginx-1.12.2]# vim /etc/init.d/nginx
#!/bin/bash
#author:heimatengyun
#chkconfig:2345 99 33
#description:nginx server tools
ngxc="/usr/local/nginx/sbin/nginx"
pidf="/usr/local/nginx/logs/nginx.pid"
ngxc_fpm="/usr/local/php/sbin/php-fpm"
pidf_fpm="/usr/local/php/var/run/php-fpm.pid"
case "$1" in
start)
$ngxc -t &> /dev/null
if [ $? -eq 0 ];then
$ngxc
$ngxc_fpm
echo "nginx service start sucess!"
else
$ngxc -t
fi
;;
stop)
kill -s QUIT $(cat $pidf)
kill -s QUIT $(cat $pidf_fpm)
echo "nginx service stop sucess!"
;;
restart)
$0 stop
$0 start
;;
reload)
$ngxc -t &> /dev/null
if [ $? -eq 0 ];then
kill -s HUP $(cat $pidf)
kill -s HUP $(cat $pidf_fpm)
echo "reload nginx config success!"
else
$ngxc -t
fi
;;
*)
echo "please input stop|start|restart|reload."
exit 1
esac
保存并退出。
該文件也隨安裝包一起提供猜谚,公號(hào)回復(fù)lnmp即可败砂。如果shell腳本相關(guān)語(yǔ)法忘記了,可以返回去查看文章:“l(fā)inux入門系列8--shell編程”
剛創(chuàng)建的腳本沒有執(zhí)行權(quán)限魏铅,為其添加執(zhí)行權(quán)限
[root@lnmp nginx-1.12.2]# ll /etc/init.d/nginx
-rw-r--r-- 1 root root 1082 Feb 16 13:55 /etc/init.d/nginx
[root@lnmp nginx-1.12.2]# chmod +x /etc/init.d/nginx
[root@lnmp nginx-1.12.2]# ll /etc/init.d/nginx
-rwxr-xr-x 1 root root 1082 Feb 16 13:55 /etc/init.d/nginx
[root@lnmp nginx-1.12.2]#
將該腳本加入開機(jī)啟動(dòng)項(xiàng)
[root@lnmp nginx-1.12.2]# chkconfig --add nginx
3.2.7 測(cè)試nginx
[root@lnmp nginx-1.12.2]# systemctl start nginx
[root@lnmp nginx-1.12.2]# netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19501/nginx: master
...省略部分內(nèi)容
看到有80端口啟動(dòng)了昌犹,這些妥了
在瀏覽器進(jìn)行訪問,可以看到歡迎界面览芳,說明nginx安裝成功斜姥。
3.3 MySQL安裝
接下來開始安裝mysql
3.3.1 創(chuàng)建mysql用戶
[root@lnmp lnmp]# useradd -r -s /sbin/nologin mysql
3.3.2 解壓源碼包
[root@lnmp lnmp]# cd /root/lnmp/
[root@lnmp lnmp]# ls
mysql-5.5.62.tar.gz nginx-1.12.2 php-7.1.29.tar.gz
nginx nginx-1.12.2.tar.gz
[root@lnmp lnmp]# tar -zxvf mysql-5.5.62.tar.gz
...省略顯示內(nèi)容
[root@lnmp lnmp]# cd mysql-5.5.62/
3.3.3 編譯源碼
[root@lnmp mysql-5.5.62]# pwd
/root/lnmp/mysql-5.5.62
[root@lnmp mysql-5.5.62]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/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
...省略顯示內(nèi)容
3.3.4 生成安裝文件
[root@lnmp mysql-5.5.62]# make
...省略顯示內(nèi)容
生成過程大概10分鐘
3.3.5 執(zhí)行安裝
[root@lnmp mysql-5.5.62]# make install
...省略顯示內(nèi)容
安裝完成后為了方便執(zhí)行命令,添加軟連接
[root@lnmp mysql-5.5.62]# ln -s /usr/local/mysql/bin/* /usr/local/bin
3.3.6 初始配置
(1)修改數(shù)據(jù)目錄權(quán)限
切換到mysql安裝目錄沧竟,修改目錄權(quán)限铸敏,把data目錄屬主權(quán)限改為mysql
[root@lnmp mysql-5.5.62]# cd /usr/local/mysql/
[root@lnmp mysql]# ll
total 56
drwxr-xr-x 2 root root 4096 Feb 16 14:23 bin
-rw-r--r-- 1 root root 17987 Aug 29 2018 COPYING
drwxr-xr-x 3 root root 17 Feb 16 14:23 data
drwxr-xr-x 2 root root 52 Feb 16 14:23 docs
drwxr-xr-x 3 root root 4096 Feb 16 14:23 include
-rw-r--r-- 1 root root 301 Aug 29 2018 INSTALL-BINARY
drwxr-xr-x 3 root root 4096 Feb 16 14:23 lib
drwxr-xr-x 4 root root 28 Feb 16 14:23 man
drwxr-xr-x 10 root root 4096 Feb 16 14:23 mysql-test
-rw-r--r-- 1 root root 2496 Aug 29 2018 README
drwxr-xr-x 2 root root 29 Feb 16 14:23 scripts
drwxr-xr-x 27 root root 4096 Feb 16 14:23 share
drwxr-xr-x 4 root root 4096 Feb 16 14:23 sql-bench
drwxr-xr-x 2 root root 4096 Feb 16 14:23 support-files
[root@lnmp mysql]# chown -R root .
[root@lnmp mysql]# chown -R mysql data
[root@lnmp mysql]# ll
total 56
drwxr-xr-x 2 root root 4096 Feb 16 14:23 bin
-rw-r--r-- 1 root root 17987 Aug 29 2018 COPYING
drwxr-xr-x 3 mysql root 17 Feb 16 14:23 data
drwxr-xr-x 2 root root 52 Feb 16 14:23 docs
drwxr-xr-x 3 root root 4096 Feb 16 14:23 include
-rw-r--r-- 1 root root 301 Aug 29 2018 INSTALL-BINARY
drwxr-xr-x 3 root root 4096 Feb 16 14:23 lib
drwxr-xr-x 4 root root 28 Feb 16 14:23 man
drwxr-xr-x 10 root root 4096 Feb 16 14:23 mysql-test
-rw-r--r-- 1 root root 2496 Aug 29 2018 README
drwxr-xr-x 2 root root 29 Feb 16 14:23 scripts
drwxr-xr-x 27 root root 4096 Feb 16 14:23 share
drwxr-xr-x 4 root root 4096 Feb 16 14:23 sql-bench
drwxr-xr-x 2 root root 4096 Feb 16 14:23 support-files
[root@lnmp mysql]#
(2)生成mysql配置文件
原來/etc/my.cnf文件默認(rèn)存在,直接將安裝后my-medium.cnf 文件拷貝并覆蓋即可
[root@lnmp mysql]# cp -a /root/lnmp/mysql-5.5.62/support-files/my-medium.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y
[root@lnmp mysql]#
(3)mysql初始化
利用官方自帶的mysql_install_db腳本初始化悟泵,生成授權(quán)表
[root@lnmp mysql]# cd /usr/local/mysql
[root@lnmp mysql]# ./scripts/mysql_install_db --user=mysql
...省略顯示內(nèi)容
3.3.7 msyql設(shè)置開機(jī)啟動(dòng)
不像nginx要自己編寫開機(jī)啟動(dòng)shell腳本杈笔,msyql官方已經(jīng)提供好了,文件mysql-5.5.62/support-files/mysql.server即為啟動(dòng)腳本糕非,該腳本默認(rèn)沒有執(zhí)行權(quán)限蒙具,需要手動(dòng)添加球榆。
[root@lnmp mysql]# ll /etc/init.d/mysqld #該文件事先是不存在的
ls: cannot access /etc/init.d/mysqld: No such file or directory
[root@lnmp mysql]# cd /root/lnmp/mysql-5.5.62/support-files/
[root@lnmp support-files]# cp -a mysql.server /etc/init.d/mysqld
[root@lnmp support-files]# ll /etc/init.d/mysqld
-rw-r--r-- 1 root root 10565 Feb 16 14:17 /etc/init.d/mysqld
[root@lnmp support-files]# chmod +x /etc/init.d/mysqld
[root@lnmp support-files]# chkconfig --add mysqld #加入開機(jī)啟動(dòng)項(xiàng)
[root@lnmp support-files]# chkconfig mysqld on #允許服務(wù)自啟動(dòng)
3.3.8 啟動(dòng)并測(cè)試mysql
[root@lnmp support-files]# systemctl start mysqld
[root@lnmp support-files]# netstat -antp
...省略輸出內(nèi)容
如果看到有3306端口,表示mysql啟動(dòng)成功禁筏。啟動(dòng)成功后持钉,此時(shí)root沒有密碼,直接可以登錄融师。
[root@lnmp support-files]# mysql -uroot -p
Enter password: #初始沒有密碼右钾,回車即可
...省略部分內(nèi)容
mysql> exit
Bye
[root@lnmp support-files]#
為root管理員設(shè)置登錄密碼
[root@lnmp support-files]# mysqladmin -uroot password 123456
[root@lnmp support-files]# mysql -uroot -p123456
...省略部分內(nèi)容
mysql> exit
Bye
[root@lnmp support-files]#
通過mysqladmin命令修改密碼后再次登錄就需要密碼了。
至此旱爆,msyql安裝成功舀射。
3.4 PHP7安裝
3.4.1 解壓縮并安裝
[root@lnmp support-files]# cd /root/lnmp/
[root@lnmp lnmp]# tar -zxvf php-7.1.29.tar.gz
...省略部分內(nèi)容
[root@lnmp lnmp]# cd php-7.1.29/
3.4.2 編譯源碼
[root@lnmp lnmp]# cd php-7.1.29/
[root@lnmp php-7.1.29]# ./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets --with-pdo-mysql=/usr/local/mysql --with-gd --without-pear --enable-fpm
...省略部分內(nèi)容
3.4.3 生成文件
[root@lnmp php-7.1.29]# make
...省略輸出內(nèi)容
生成過程大概10分鐘左右
3.4.5 執(zhí)行安裝
[root@lnmp php-7.1.29]# make install
...省略輸出內(nèi)容
3.4.6 生成配置文件
將源碼包的php.ini-production文件拷貝到/usr/local/php/etc/并改名為php.ini
[root@lnmp php-7.1.29]# ll /usr/local/php/etc/php.ini
ls: cannot access /usr/local/php/etc/php.ini: No such file or directory
[root@lnmp php-7.1.29]# cp -a /root/lnmp/php-7.1.29/php.ini-production /usr/local/php/etc/php.ini
[root@lnmp php-7.1.29]#
創(chuàng)建軟連接,方便使用php命令
[root@lnmp php-7.1.29]# ln -s /usr/local/php/bin/* /usr/local/bin/
[root@lnmp php-7.1.29]# ln -s /usr/local/php/sbin/* /usr/local/sbin/
php安裝完成后怀伦,還需要通過配置使得Nginx能夠連接到PHP脆烟,從而能夠解析php文件。
3.5 配置Nginx連接PHP
3.5.1 配置php
針對(duì)php7房待,主要涉及2個(gè)文件需要修改:/usr/local/php/etc/php-fpm.conf和/usr/local/php/etc/php-fpm.d/www.conf邢羔。注意初始時(shí)這2個(gè)文件不存在,都需要通過官方提供的模板文件來進(jìn)行修改桑孩。
php-fpm.conf文件拜鹤,在17行,將;pid = run/php-fpm.pid前面的的注釋取消
[root@lnmp php-7.1.29]# cd /usr/local/php/etc/
[root@lnmp etc]# cp -a php-fpm.conf.default php-fpm.conf
[root@lnmp etc]# vim php-fpm.conf
...省略部分內(nèi)容
pid = run/php-fpm.pid
...省略部分內(nèi)容
保存并退出流椒。
www.conf文件敏簿,默認(rèn)不存在,需要將/usr/local/php/etc/php-fpm.d/www.conf.default改為名www.conf宣虾,然后進(jìn)行修改惯裕。在23-24行,將用戶名由默認(rèn)的nobody改為nginx
[root@lnmp etc]# cd /usr/local/php/etc/php-fpm.d/
[root@lnmp php-fpm.d]# cp -a www.conf.default www.conf
[root@lnmp php-fpm.d]# vim www.conf
...省略部分內(nèi)容
user = nginx
group = nginx
...省略部分內(nèi)容
3.5.2 配置nginx
為了讓能nginx能處理php文件绣硝,還需要對(duì)之前裝好的nginx進(jìn)行配置蜻势。對(duì)/usr/local/nginx/conf/nginx.conf進(jìn)行配置,主要修改兩個(gè)地方鹉胖,一是取消第2行注釋握玛,并把user 改為nginx;二是65-71行取消注釋甫菠,并將70行include 后的fastcgi_params
改為fastcgi.conf败许。
[root@lnmp php-fpm.d]# vim /usr/local/nginx/conf/nginx.conf
...省略部分內(nèi)容
user nginx;
...省略部分內(nèi)容
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
...省略部分內(nèi)容
通過以上配置nginx就能識(shí)別.php后綴文件
還需要設(shè)置默認(rèn)加載的頁(yè)面及優(yōu)先級(jí),使其自動(dòng)加載php文件
[root@lnmp html]# vim /usr/local/nginx/conf/nginx.conf
...省略部分內(nèi)容
location / {
root html;
index index.php index.html;
}
...省略部分內(nèi)容
修改完成之后淑蔚,重啟配置,重啟nginx服務(wù)
[root@lnmp php-fpm.d]# systemctl daemon-reload
[root@lnmp php-fpm.d]# systemctl restart nginx
至此lnmp環(huán)境各個(gè)組件都搭建完了愕撰,下面進(jìn)行測(cè)試是否已經(jīng)安裝完成
3.6 安裝測(cè)試
在網(wǎng)站目錄 /usr/local/nginx/html/下創(chuàng)建一個(gè)php文件進(jìn)行測(cè)試
[root@lnmp php-fpm.d]# cd /usr/local/nginx/html/
[root@lnmp html]# ls
50x.html index.html
[root@lnmp html]# vim index.php
<?php
phpinof();
保存并退出刹衫,在瀏覽器中進(jìn)行測(cè)試訪問此文件醋寝,如果能出現(xiàn)如下界面就說明環(huán)境全部配好了
至此,LNMP環(huán)境搭建就緒带迟。
四音羞、個(gè)人博客網(wǎng)站搭建
現(xiàn)在開源的CMS、博客仓犬、個(gè)人網(wǎng)站非常多嗅绰,甚至都無須編寫一行代碼即可輕松擁有一個(gè)專屬的個(gè)人網(wǎng)站。其中Discuz! X是國(guó)內(nèi)非常成熟的老牌社區(qū)論壇系統(tǒng)搀继,它基于PHP+MySQL開發(fā)窘面,經(jīng)過十多年的研發(fā)后已經(jīng)成為了全球成熟度最高、覆蓋率最廣的論壇網(wǎng)站系統(tǒng)之一叽躯。
本例基于Discuz_X3.4進(jìn)行演示财边,同時(shí)也檢測(cè)前面搭建的LNMP環(huán)境是否正常。我已將Discuz_X3.4壓縮包和LNMP環(huán)境源碼包放一起了点骑,需要的在公號(hào)恢復(fù)lnm即可獲取本文所有的包和腳本酣难。你也可以根據(jù)需要自行在官網(wǎng)下載對(duì)應(yīng)的版本。
官方下載地址
https://gitee.com/3dming/DiscuzL/attach_files
4.1 上傳并解壓
繼續(xù)之前的實(shí)驗(yàn)黑滴,將dz源碼上傳至/root/lnmp/dz文件夾下,解壓后將upload目錄下的內(nèi)容拷貝到nginx的網(wǎng)站數(shù)據(jù)目錄/usr/local/nginx/html下
[root@lnmp lnmp]# pwd
/root/lnmp
[root@lnmp lnmp]# mkdir dz
[root@lnmp lnmp]# cd dz/
[root@lnmp dz]# ls
Discuz_X3.4_SC_UTF8.zip
[root@lnmp lnmp]# unzip Discuz_X3.4_SC_UTF8.zip
...省略顯示內(nèi)容
[root@lnmp dz]# ls
Discuz_X3.4_SC_UTF8.zip qqqun.png readme readme.html upload utility
[root@lnmp dz]# ll /usr/local/nginx/html/
total 12
-rw-r--r-- 1 root root 537 Feb 16 13:51 50x.html
-rw-r--r-- 1 root root 612 Feb 16 13:51 index.html
-rw-r--r-- 1 root root 19 Feb 16 15:39 index.php
[root@lnmp dz]# rm -rf /usr/local/nginx/html/*
[root@lnmp dz]# ll /usr/local/nginx/html/
total 0
[root@lnmp dz]# cp -r upload/* /usr/local/nginx/html/
[root@lnmp html]# chown -Rf nginx:nginx /usr/local/nginx/html
[root@lnmp html]# chmod -Rf 755 /usr/local/nginx/html/
拷貝網(wǎng)站內(nèi)容后將其目錄權(quán)限用戶修改為之前創(chuàng)建的nginx用戶憨募,讀寫權(quán)限為755。
權(quán)限設(shè)置務(wù)必正確袁辈,否則4.3檢測(cè)不會(huì)通過菜谣。
4.2 接受許可開始安裝
瀏覽器輸入ip地址,自動(dòng)進(jìn)入安裝界面吵瞻,同意協(xié)議進(jìn)入下一步
4.3 檢查安裝環(huán)境及目錄權(quán)限
目錄權(quán)限檢測(cè)通過后葛菇,點(diǎn)擊下一步
4.4 選擇安裝模式
保持默認(rèn)選擇,點(diǎn)擊下一步橡羞。UCenter Server是站點(diǎn)的管理平臺(tái)眯停,能夠在多個(gè)站點(diǎn)之間同步會(huì)員賬戶及密碼信息。
4.5 配置數(shù)據(jù)庫(kù)信息
配置之前創(chuàng)建的mysql數(shù)據(jù)庫(kù)連接信息卿泽,數(shù)據(jù)庫(kù)會(huì)自動(dòng)創(chuàng)建莺债。填寫完成后點(diǎn)擊下一步
4.6 安裝完成并訪問
以上步驟填寫無誤,會(huì)自動(dòng)創(chuàng)建數(shù)據(jù)签夭、初始化網(wǎng)站齐邦。完成后自動(dòng)進(jìn)入網(wǎng)站首頁(yè)
首頁(yè)
通過4.5中設(shè)置的網(wǎng)站賬戶和密碼即可登錄。
這樣就很簡(jiǎn)單的搭建了一個(gè)個(gè)人論壇第租。其他個(gè)人博客搭建也是一樣的方法措拇。so easy!
結(jié)語(yǔ)
到此慎宾,本套Linux入門系列文章就結(jié)束了丐吓,相信大家通過本入門系列的學(xué)習(xí)已經(jīng)初步入門了Linux系統(tǒng)的基本管理以及常用服務(wù)的配置和使用浅悉。
作為最基礎(chǔ)的入門知識(shí),是一定要掌握的券犁,只要多敲幾遍术健,多照著步驟做幾遍,自然而然就熟悉了粘衬。掌握這些基本知識(shí)后荞估,在企業(yè)中已可以勝任常規(guī)的管理工作。
Linux用途非常廣泛稚新,針對(duì)不同的角色和崗位要求掌握的技能也有所不同勘伺。如果你是大數(shù)據(jù)開發(fā)者,有了這些知識(shí)儲(chǔ)備就繼續(xù)后邊大數(shù)據(jù)之旅了枷莉;如果你是運(yùn)維人員娇昙,這些知識(shí)還遠(yuǎn)遠(yuǎn)不夠,后續(xù)如果有時(shí)間我會(huì)推出完整的Linux運(yùn)維和進(jìn)階系列笤妙。