日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

第20章 使用LNMP架构部署动态网站环境

發(fā)布時間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第20章 使用LNMP架构部署动态网站环境 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
章節(jié)概述:

本章節(jié)將從Linux系統(tǒng)的軟件安裝方式講起,帶領(lǐng)讀者分辨RPM軟件包與源碼安裝的區(qū)別、并能夠理解它們的優(yōu)缺點。

Nginx是一款相當(dāng)優(yōu)秀的用于部署動態(tài)網(wǎng)站的服務(wù)程序,Nginx具有不錯的穩(wěn)定性、豐富的功能以及占用較少的系統(tǒng)資源等獨特特性。

通過部署Linux+Nginx+MYSQL+PHP這四種開源軟件,便擁有了一個免費、高效、擴展性強、資源消耗低的LNMP動態(tài)網(wǎng)站架構(gòu)了。

本章目錄結(jié)構(gòu)

  • 20.1 源碼安裝程序
  • 20.2 部署LNMP架構(gòu)
    • 20.2.1 配置Mysql服務(wù)
    • 20.2.2 配置Nginx服務(wù)
    • 20.2.3 配置php服務(wù)
  • 20.3 選購服務(wù)器主機
  • 20.4 搭建discuz論壇
20.1 源碼安裝程序

在前面的章節(jié)中提到過在紅帽軟件包管理器(RPM)公布之前要想在Linux系統(tǒng)中安裝軟件只能采取“源碼包”的方式安裝服務(wù)程序,但是源碼安裝程序真是一件非常困難,耗費耐心的事情,不僅需要運維人員掌握更多的知識、高超的技能、甚至要很有耐心才能安裝好一個程序,并且在安裝、升級、卸載時還要考慮到其他程序、庫的依賴關(guān)系,所以我們在前面的課程中都依賴于YUM倉庫或RPM來安裝服務(wù)程序,但這樣也會有一些弊端。

?

很多軟件產(chǎn)品只會以源碼包的方式發(fā)布,如果只會用RPM命令就只能去互聯(lián)網(wǎng)大海洋中慢慢尋找到由第三方組織或黑客們編寫的RPM軟件包后才能安裝程序了,并且源碼程序的可移植性非常好,可以針對不同的系統(tǒng)架構(gòu)而正確運行,但RPM軟件包則必需嚴(yán)格符合限制使用的平臺和架構(gòu)后才能順利安裝,所以建議即便在工作中可以很舒服的用Yum倉庫來安裝服務(wù)程序,源碼安裝的流程也一定要記清:
第1步,解壓文件:

源碼包通常會使用tar工具歸檔然后用gzip或bzip2進行壓縮,后綴格式會分別為.tar.gz與tar.bz2 ,解壓方法:

[root@linuxprobe ~]# tar xzvf FileName.tar.gz

[root@linuxprobe ~]# tar jxvf FileName.tar.bz2

第2步,切換到解壓后的目錄:

[root@linuxprobe ~]# cd FileDirectory

第3步:準(zhǔn)備編譯工作:

在開始安裝服務(wù)程序之前,需要執(zhí)行configure腳本,他會自動的對當(dāng)前系統(tǒng)進行一系列的評估,如源文件、軟件依賴性庫、編譯器、匯編器、連接器檢查等等,如果有需求,還可以使用--prefix參數(shù)來指定程序的安裝路徑(很實用),而當(dāng)腳本檢查系統(tǒng)環(huán)境符合要求后,則會在當(dāng)前目錄下生成一個Makefile文件

[root@linuxprobe ~]# ./configure --prefix=/usr/local/program

第4步:生成安裝程序:

剛剛生成的Makefile文件會保存有系統(tǒng)環(huán)境依賴關(guān)系和安裝規(guī)則,接下來需要使用make命令來根據(jù)MakeFile文件提供的規(guī)則使用合適的SHELL來編譯所有依賴的源碼,然后make命令會生成一個最終可執(zhí)行的安裝程序。

[root@linuxprobe ~]# make

第5步:安裝服務(wù)程序:

如果在configure腳本階段中沒有使用--prefix參數(shù),那么程序一般會被默認(rèn)安裝到/usr/local/bin目錄中。

[root@linuxprobe ~]# make install

第6步:清理臨時文件(可選):

[root@linuxprobe ~]# make clean

卸載服務(wù)程序的命令(請不要隨便執(zhí)行!!!):

[root@linuxprobe ~]# make uninstall

其實讀者可能最納悶的是漫長的configure與make步驟,RPM包為什么就可以那么有效率的安裝,而不需要檢測系統(tǒng)環(huán)境呢?
其實原因很簡單,RPM軟件包是根據(jù)特定系統(tǒng)和平臺而指定的,經(jīng)常一種程序會提供很多RPM包的格式(如i386/x86_64等等),用戶需要找到適合當(dāng)前自己系統(tǒng)的RPM包后才能順利的安裝,而源碼包的程序作者肯定希望自己的軟件能夠被安裝到更多的系統(tǒng)中,被更多的用戶使用,所以就必需要用configure腳本來檢查用戶當(dāng)前系統(tǒng)的情況,最終制定出一份可行的安裝方案。
出現(xiàn)問題?大膽提問!

因讀者們硬件不同或操作錯誤都可能導(dǎo)致實驗配置出錯,請耐心再仔細(xì)看看操作步驟吧,不要氣餒~

Linux技術(shù)交流請加A群:560843(滿),B群:340829(推薦),C群:463590(推薦),點此查看全國群。

*本群特色:通過口令驗證確保每一個群員都是《Linux就該這么學(xué)》的讀者,答疑更有針對性,不定期免費領(lǐng)取定制禮品。

20.2 部署LNMP架構(gòu)

LNMP(即Linux+Nginx+MYSQL+PHP)是目前非常熱門的動態(tài)網(wǎng)站部署架構(gòu),一般是指:

Linux:如RHEL、Centos、Debian、Fedora、Ubuntu等系統(tǒng)。

Nginx:高性能、低消耗的HTTP與反向代理服務(wù)程序。

MYSQL:熱門常用的數(shù)據(jù)庫管理軟件。

PHP:一種能夠在服務(wù)器端執(zhí)行的嵌入HTML文檔的腳本語言。

通過將這四種開源軟件部署在一起,便成為了一個免費、高效、擴展性強、資源消耗低的動態(tài)網(wǎng)站環(huán)境了。

設(shè)置防火墻允許數(shù)據(jù)庫與網(wǎng)站服務(wù)策略:

[root@linuxprobe ~]# iptables -F
[root@linuxprobe ~]# firewall-cmd --permanent --add-service=mysql
success
[root@linuxprobe ~]# firewall-cmd --permanent --add-service=http
success
[root@linuxprobe ~]# firewall-cmd --reload
success

下載所有需要使用的軟件包到/usr/local/src目錄(17個文件):

[root@linuxprobe ~]# cd /usr/local/src
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/cmake-2.8.11.2.tar.gz
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/Discuz_X3.2_SC_GBK.zip
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/freetype-2.5.3.tar.gz
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/jpegsrc.v9a.tar.gz
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/libgd-2.1.0.tar.gz
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/libmcrypt-2.5.8.tar.gz
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/libpng-1.6.12.tar.gz
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/libvpx-v1.3.0.tar.bz2
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/mysql-5.6.19.tar.gz
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/nginx-1.6.0.tar.gz
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/openssl-1.0.1h.tar.gz
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/php-5.5.14.tar.gz
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/pcre-8.35.tar.gz
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/t1lib-5.1.2.tar.gz
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/tiff-4.0.3.tar.gz
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/yasm-1.2.0.tar.gz
[root@linuxprobe src]# wget http://down.linuxprobe.com/Tools/zlib-1.2.8.tar.gz

安裝編譯工具及庫文件(需要安裝的程序比較多,請復(fù)制全!):

[root@linuxprobe ~]# yum install -y apr* autoconf automake bison bzip2 bzip2* compat* cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gd gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libtiff libtiff* make mpfr ncurses* ntp openssl openssl-devel patch pcre-devel perl php-common php-gd policycoreutils telnet t1lib t1lib* nasm nasm* wget zlib-devel
Loaded plugins: langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
………………省略部分安裝過程………………
Installing:apr                         x86_64       1.4.8-3.el7               rhel7       103 kapr-devel                   x86_64       1.4.8-3.el7               rhel7       188 kapr-util                    x86_64       1.5.2-6.el7               rhel7        92 kapr-util-devel              x86_64       1.5.2-6.el7               rhel7        76 kautoconf                    noarch       2.69-11.el7               rhel7       701 kautomake                    noarch       1.13.4-3.el7              rhel7       679 kbison                       x86_64       2.7-4.el7                 rhel7       578 kbzip2-devel                 x86_64       1.0.6-12.el7              rhel7       218 kcompat-dapl                 x86_64       1:1.2.19-3.el7            rhel7       109 kcompat-db-headers           noarch       4.7.25-27.el7             rhel7        48 kcompat-db47                 x86_64       4.7.25-27.el7             rhel7       795 kcompat-gcc-44               x86_64       4.4.7-8.el7               rhel7        10 Mcompat-gcc-44-c++           x86_64       4.4.7-8.el7               rhel7       6.3 Mcompat-glibc                x86_64       1:2.12-4.el7              rhel7       1.2 Mcompat-glibc-headers        x86_64       1:2.12-4.el7              rhel7       452 kcompat-libcap1              x86_64       1.10-7.el7                rhel7        19 kcompat-libf2c-34            x86_64       3.4.6-32.el7              rhel7       155 kcompat-libgfortran-41       x86_64       4.1.2-44.el7              rhel7       142 kcompat-libtiff3             x86_64       3.9.4-11.el7              rhel7       135 kcompat-openldap             x86_64       1:2.3.43-5.el7            rhel7       174 kcpp                         x86_64       4.8.2-16.el7              rhel7       5.9 Mfontconfig-devel            x86_64       2.10.95-7.el7             rhel7       128 kfreetype-devel              x86_64       2.4.11-9.el7              rhel7       355 kgcc                         x86_64       4.8.2-16.el7              rhel7        16 Mgcc-c++                     x86_64       4.8.2-16.el7              rhel7       7.1 Mgettext-devel               x86_64       0.18.2.1-4.el7            rhel7       315 kkernel-headers              x86_64       3.10.0-123.el7            rhel7       1.4 Mkeyutils-libs-devel         x86_64       1.5.8-3.el7               rhel7        37 kkrb5-devel                  x86_64       1.11.3-49.el7             rhel7       611 klibXpm-devel                x86_64       3.5.10-5.1.el7            rhel7        36 klibcom_err-devel            x86_64       1.42.9-4.el7              rhel7        30 klibcurl-devel               x86_64       7.29.0-19.el7             rhel7       296 klibjpeg-turbo-devel         x86_64       1.2.90-5.el7              rhel7        99 klibpng-devel                x86_64       2:1.5.13-5.el7            rhel7       122 klibselinux-devel            x86_64       2.2.2-6.el7               rhel7       174 klibsepol-devel              x86_64       2.1.9-3.el7               rhel7        71 klibstdc++-devel             x86_64       4.8.2-16.el7              rhel7       1.5 Mlibtiff-devel               x86_64       4.0.3-14.el7              rhel7       471 klibtool                     x86_64       2.4.2-20.el7              rhel7       588 klibtool-ltdl-devel          x86_64       2.4.2-20.el7              rhel7       167 klibxml2-devel               x86_64       2.9.1-5.el7               rhel7       1.0 Mmpfr                        x86_64       3.1.1-4.el7               rhel7       203 knasm                        x86_64       2.10.07-7.el7             rhel7       402 kncurses-devel               x86_64       5.9-13.20130511.el7       rhel7       713 kncurses-term                noarch       5.9-13.20130511.el7       rhel7       543 kntp                         x86_64       4.2.6p5-18.el7            rhel7       539 kopenssl-devel               x86_64       1:1.0.1e-34.el7           rhel7       1.2 Mpatch                       x86_64       2.7.1-8.el7               rhel7       110 kpcre-devel                  x86_64       8.32-12.el7               rhel7       477 kphp-common                  x86_64       5.4.16-21.el7             rhel7       559 kphp-gd                      x86_64       5.4.16-21.el7             rhel7       122 kt1lib                       x86_64       5.1.2-14.el7              rhel7       166 ktelnet                      x86_64       1:0.17-59.el7             rhel7        63 kzlib-devel                  x86_64       1.2.7-13.el7              rhel7        49 k
Installing for dependencies:cyrus-sasl-devel            x86_64       2.1.26-17.el7             rhel7       309 kexpat-devel                 x86_64       2.1.0-8.el7               rhel7        56 kgettext-common-devel        noarch       0.18.2.1-4.el7            rhel7       368 kgit                         x86_64       1.8.3.1-4.el7             rhel7       4.3 Mglibc-devel                 x86_64       2.17-55.el7               rhel7       1.0 Mglibc-headers               x86_64       2.17-55.el7               rhel7       650 klibX11-devel                x86_64       1.6.0-2.1.el7             rhel7       979 klibXau-devel                x86_64       1.0.8-2.1.el7             rhel7        14 klibdb-devel                 x86_64       5.3.21-17.el7             rhel7        38 klibmpc                      x86_64       1.0.1-3.el7               rhel7        51 klibverto-devel              x86_64       0.2.5-4.el7               rhel7        12 klibxcb-devel                x86_64       1.9-5.el7                 rhel7       1.0 Mlibzip                      x86_64       0.10.1-8.el7              rhel7        49 km4                          x86_64       1.4.16-9.el7              rhel7       256 kopenldap-devel              x86_64       2.4.39-3.el7              rhel7       796 kperl-Data-Dumper            x86_64       2.145-3.el7               rhel7        47 kperl-Error                  noarch       1:0.17020-2.el7           rhel7        32 kperl-Git                    noarch       1.8.3.1-4.el7             rhel7        52 kperl-TermReadKey            x86_64       2.30-20.el7               rhel7        31 kperl-Test-Harness           noarch       3.28-2.el7                rhel7       302 kperl-Thread-Queue           noarch       3.02-2.el7                rhel7        17 kxorg-x11-proto-devel        noarch       7.7-8.el7.1               rhel7       281 kxz-devel                    x86_64       5.1.2-8alpha.el7          rhel7        44 k
………………省略部分安裝過程………………
Complete!

安裝cmake編譯工具(解壓與編譯過程已省略):

[root@linuxprobe ~]# cd /usr/local/src
[root@linuxprobe src]# ls
zlib-1.2.8.tar.gz       libmcrypt-2.5.8.tar.gz  pcre-8.35.tar.gz
cmake-2.8.11.2.tar.gz   libpng-1.6.12.tar.gz    php-5.5.14.tar.gz
Discuz_X3.2_SC_GBK.zip  libvpx-v1.3.0.tar.bz2   t1lib-5.1.2.tar.gz
freetype-2.5.3.tar.gz   mysql-5.6.19.tar.gz     tiff-4.0.3.tar.gz
jpegsrc.v9a.tar.gz      nginx-1.6.0.tar.gz      yasm-1.2.0.tar.gz
libgd-2.1.0.tar.gz      openssl-1.0.1h.tar.gz
[root@linuxprobe src]# tar xzvf cmake-2.8.11.2.tar.gz
[root@linuxprobe src]# cd cmake-2.8.11.2/
[root@linuxprobe cmake-2.8.11.2]# ./configure
[root@linuxprobe cmake-2.8.11.2]# make 
[root@linuxprobe cmake-2.8.11.2]# make install
20.2.1 配置Mysql服務(wù)

在前面的章節(jié)中我們學(xué)習(xí)了MariaDB數(shù)據(jù)庫管理系統(tǒng),那么這次實驗就學(xué)習(xí)下如何使用Mysql來管理數(shù)據(jù)庫吧。
創(chuàng)建用于執(zhí)行mysql服務(wù)程序的帳號:

[root@linuxprobe cmake-2.8.11.2]# cd ..
[root@linuxprobe src]# useradd mysql -s /sbin/nologin

創(chuàng)建數(shù)據(jù)庫程序和文件的目錄,并設(shè)置目錄的所屬與所組:

[root@linuxprobe src]# mkdir -p /usr/local/mysql/var
[root@linuxprobe src]# chown -Rf mysql:mysql /usr/local/mysql

安裝Mysql服務(wù)程序(解壓與編譯過程已省略):

[root@linuxprobe src]# tar xzvf mysql-5.6.19.tar.gz
[root@linuxprobe src]# cd mysql-5.6.19/
[root@linuxprobe mysql-5.6.19]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/var -DSYSCONFDIR=/etc
[root@linuxprobe mysql-5.6.19]# make
[root@linuxprobe mysql-5.6.19]# make install

刪除系統(tǒng)默認(rèn)的配置文件:

[root@linuxprobe mysql-5.6.19]# rm -rf /etc/my.cnf

生成系統(tǒng)數(shù)據(jù)庫(生成信息已省略):

[root@linuxprobe mysql-5.6.19]# cd /usr/local/mysql
[root@linuxprobe mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var

創(chuàng)建配置文件的軟連接文件:

[root@linuxprobe mysql]# ln -s my.cnf /etc/my.cnf 

將mysqld服務(wù)程序添加到開機啟動項:

[root@linuxprobe mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@linuxprobe mysql]# chmod 755 /etc/rc.d/init.d/mysqld
[root@linuxprobe mysql]# chkconfig mysqld on

編輯啟動項的配置文件:

[root@linuxprobe mysql]# vim /etc/rc.d/init.d/mysqld 
//分別修改第46與47行,basedir為程序安裝路徑,datadir為數(shù)據(jù)庫存放目錄。
basedir=/usr/local/mysql
datadir=/usr/local/mysql/var

重啟mysqld服務(wù)程序:

[root@localhost mysql]# service mysqld start
Starting MySQL. SUCCESS! 

把mysql服務(wù)程序命令目錄添加到環(huán)境變量中(永久生效):

[root@linuxprobe mysql]# vim /etc/profile
//在配置文件的最下面追加:
export PATH=$PATH:/usr/local/mysql/bin
[root@linuxprobe mysql]# source /etc/profile

將mysqld服務(wù)程序的庫文件鏈接到默認(rèn)的位置:

[root@linuxprobe mysql]# mkdir /var/lib/mysql
[root@linuxprobe mysql]# ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
[root@linuxprobe mysql]# ln -s /usr/local/mysql/include/mysql /usr/include/mysql
[root@linuxprobe mysql]# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

初始化mysqld服務(wù)程序:

[root@linuxprobe mysql]# mysql_secure_installation 
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQLSERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): 
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
Set root password? [Y/n] y  
New password: 輸入要為root用戶設(shè)置的數(shù)據(jù)庫密碼。
Re-enter new password: 重復(fù)再輸入一次密碼。
Password updated successfully!
Reloading privilege tables..... Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y(刪除匿名帳號)... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y(禁止root用戶從遠程登陸)... Success!
By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y(刪除test數(shù)據(jù)庫并取消對其的訪問權(quán)限)- Dropping test database...... Success!- Removing privileges on test database...... Success!Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.Reload privilege tables now? [Y/n] y(刷新授權(quán)表,讓初始化后的設(shè)定立即生效)... Success!
All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
Cleaning up...

?

20.2.2 配置Nginx服務(wù)

Nginx是一款相當(dāng)優(yōu)秀的用于部署動態(tài)網(wǎng)站的服務(wù)程序,Nginx最初是為俄羅斯門戶站點而設(shè)計的網(wǎng)站服務(wù)軟件,作為一款輕量級的網(wǎng)站服務(wù)軟件,因其穩(wěn)定性和豐富的功能而深受信賴,但最最最被認(rèn)可的是低系統(tǒng)資源、占用內(nèi)存少并發(fā)能力強,目前國內(nèi)如新浪、網(wǎng)易、騰訊等門戶站均在使用,市場占有份額一直保持在15-16%左右(2015年最新數(shù)據(jù))。

Nginx程序的穩(wěn)定性來自于它采用了分階段的資源分配技術(shù),使得CPU與內(nèi)存占用率會非常低,所以使用Nginx程序部署動態(tài)網(wǎng)站環(huán)境不僅十分的穩(wěn)定、高效,而且消耗更少的系統(tǒng)資源,豐富的模塊功能也幾乎與Apache程序數(shù)量相同,現(xiàn)在已經(jīng)完全的支持了proxy、rewrite、mod_fcgi、ssl、vhosts等常用模塊。而且還支持了熱部署技術(shù),即能夠可以7*24不間斷提供服務(wù),即便運行數(shù)月也無須重啟,而且還可以在不暫停服務(wù)的情況下直接對Nginx服務(wù)程序進行升級。

坦白來講,雖然Nginx程序的代碼質(zhì)量非常高,代碼很規(guī)范,技術(shù)成熟,模塊擴展也很容易,但Nginx依然存在不少問題,比如Nginx是由俄羅斯人創(chuàng)建的,所以在資料文檔方面還并不完善,中文教材的質(zhì)量更是魚龍混雜,但Nginx近年來增長勢頭迅猛,預(yù)測未來應(yīng)該能夠在輕量級HTTP服務(wù)器市場有不錯的未來。

安裝PCRE(Perl兼容的正則表達式庫,解壓與編譯過程已省略):

[root@linuxprobe ~]# cd /usr/local/src
[root@linuxprobe src]# mkdir /usr/local/pcre
[root@linuxprobe src]# tar xzvf pcre-8.35.tar.gz 
[root@linuxprobe src]# cd pcre-8.35
[root@linuxprobe pcre-8.35]# ./configure --prefix=/usr/local/pcre
[root@linuxprobe pcre-8.35]# make
[root@linuxprobe pcre-8.35]# make install 

安裝openssl服務(wù)程序(解壓與編譯過程已省略):

[root@linuxprobe pcre-8.35]# cd /usr/local/src
[root@linuxprobe src]# mkdir /usr/local/openssl
[root@linuxprobe src]# tar xzvf openssl-1.0.1h.tar.gz
[root@linuxprobe src]# cd openssl-1.0.1h
[root@linuxprobe openssl-1.0.1h]# ./config --prefix=/usr/local/openssl
[root@linuxprobe openssl-1.0.1h]# make
[root@linuxprobe openssl-1.0.1h]# make install 

把openssl服務(wù)程序命令目錄添加到環(huán)境變量中(永久生效):

[root@linuxprobe pcre-8.35]# vim /etc/profile
//將配置文件最下面的參數(shù)追加參數(shù)為:
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/openssl/bin
[root@linuxprobe pcre-8.35]# source /etc/profile

安裝zlib數(shù)據(jù)壓縮函數(shù)庫(解壓與編譯過程已省略):

[root@linuxprobe pcre-8.35]# cd /usr/local/src
[root@linuxprobe src]# mkdir /usr/local/zlib
[root@linuxprobe src]# tar xzvf zlib-1.2.8.tar.gz 
[root@linuxprobe src]# cd zlib-1.2.8
[root@linuxprobe zlib-1.2.8]# ./configure --prefix=/usr/local/zlib
[root@linuxprobe zlib-1.2.8]# make
[root@linuxprobe zlib-1.2.8]# make install

創(chuàng)建用于執(zhí)行nginx服務(wù)的用戶:

[root@linuxprobe zlib-1.2.8]# cd ..
[root@linuxprobe src]# useradd www -s /sbin/nologin

安裝nginx服務(wù)程序(openssl,zlib,pcre要寫成源碼解壓路徑!!!):

[root@linuxprobe src]# tar xzvf nginx-1.6.0.tar.gz 
[root@linuxprobe src]# cd nginx-1.6.0/
[root@linuxprobe nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=/usr/local/src/openssl-1.0.1h --with-zlib=/usr/local/src/zlib-1.2.8 --with-pcre=/usr/local/src/pcre-8.35
[root@linuxprobe nginx-1.6.0]# make
[root@linuxprobe nginx-1.6.0]# make install

創(chuàng)建nginx程序腳本(將下面的參數(shù)直接復(fù)制進去即可):

[root@linuxprobe nginx-1.6.0]# vim /etc/rc.d/init.d/nginx
#!/bin/bash
# nginx - this script starts and stops the nginx daemon
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`if [ -z "`grep $user /etc/passwd`" ]; thenuseradd -M -s /bin/nologin $userfi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; doif [ `echo $opt | grep '.*-temp-path'` ]; thenvalue=`echo $opt | cut -d "=" -f 2`if [ ! -d "$value" ]; then# echo "creating" $valuemkdir -p $value && chown -R $user $valuefifi
done
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
#configtest || return $?
stop
sleep 1
start
}
reload() {
#configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)rh_status_q && exit 0$1;;
stop)rh_status_q || exit 0$1;;
restart|configtest)
$1
;;
reload)rh_status_q || exit 7$1;;
force-reload)force_reload;;
status)rh_status;;
condrestart|try-restart)rh_status_q || exit 0;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
[root@linuxprobe nginx-1.6.0]# chmod 755 /etc/rc.d/init.d/nginx

重啟nginx服務(wù)程序并添加到開機啟動項:

[root@linuxprobe nginx-1.6.0]# /etc/rc.d/init.d/nginx restart
Restarting nginx (via systemctl):                          [  OK  ]
[root@linuxprobe nginx-1.6.0]# chkconfig nginx on

此時可以通過訪問IP來判斷nginx服務(wù)是否順利運行:

20.2.3 配置php服務(wù)

安裝yasm匯編器(解壓與編譯過程已省略):

[root@linuxprobe nginx-1.6.0]# cd /usr/local/src
[root@linuxprobe src]# tar zxvf yasm-1.2.0.tar.gz
[root@linuxprobe src]# cd yasm-1.2.0
[root@linuxprobe yasm-1.2.0]# ./configure
[root@linuxprobe yasm-1.2.0]# make
[root@linuxprobe yasm-1.2.0]# make install

安裝libmcrypt加密算法擴展庫(解壓與編譯過程已省略):

[root@linuxprobe yasm-1.2.0]# cd /usr/local/src
[root@linuxprobe src]# tar zxvf libmcrypt-2.5.8.tar.gz
[root@linuxprobe src]# cd libmcrypt-2.5.8
[root@linuxprobe libmcrypt-2.5.8]# ./configure
[root@linuxprobe libmcrypt-2.5.8]# make
[root@linuxprobe libmcrypt-2.5.8]# make install

安裝libvpx視頻編碼器(解壓與編譯過程已省略):

[root@linuxprobe libmcrypt-2.5.8]# cd /usr/local/src
[root@linuxprobe src]# tar xjvf libvpx-v1.3.0.tar.bz2
[root@linuxprobe src]# cd libvpx-v1.3.0
[root@linuxprobe libvpx-v1.3.0]# ./configure --prefix=/usr/local/libvpx --enable-shared --enable-vp9
[root@linuxprobe libvpx-v1.3.0]# make
[root@linuxprobe libvpx-v1.3.0]# make install

安裝Tiff標(biāo)簽圖像文件格式(解壓與編譯過程已省略):

[root@linuxprobe libvpx-v1.3.0]# cd /usr/local/src
[root@linuxprobe src]# tar zxvf tiff-4.0.3.tar.gz
[root@linuxprobe src]# cd tiff-4.0.3
[root@linuxprobe tiff-4.0.3]# ./configure --prefix=/usr/local/tiff --enable-shared
[root@linuxprobe tiff-4.0.3]# make
[root@linuxprobe tiff-4.0.3]# make install

安裝libpng圖片(png格式)函數(shù)庫(解壓與編譯過程已省略):

[root@linuxprobe tiff-4.0.3]# cd /usr/local/src
[root@linuxprobe src]# tar zxvf libpng-1.6.12.tar.gz
[root@linuxprobe src]# cd libpng-1.6.12
[root@linuxprobe libpng-1.6.12]# ./configure --prefix=/usr/local/libpng --enable-shared
[root@linuxprobe libpng-1.6.12]# make
[root@linuxprobe libpng-1.6.12]# make install

安裝freetype字體引擎(解壓與編譯過程已省略):

[root@linuxprobe libpng-1.6.12]# cd /usr/local/src
[root@linuxprobe src]# tar zxvf freetype-2.5.3.tar.gz
[root@linuxprobe src]# cd freetype-2.5.3
[root@linuxprobe freetype-2.5.3]# ./configure --prefix=/usr/local/freetype --enable-shared
[root@linuxprobe freetype-2.5.3]# make
[root@linuxprobe freetype-2.5.3]# make install

安裝jpeg圖片(jpeg格式)函數(shù)庫(解壓與編譯過程已省略):

[root@linuxprobe freetype-2.5.3]# cd /usr/local/src
[root@linuxprobe src]# tar zxvf jpegsrc.v9a.tar.gz
[root@linuxprobe src]# cd jpeg-9a
[root@linuxprobe jpeg-9a]# ./configure --prefix=/usr/local/jpeg --enable-shared
[root@linuxprobe jpeg-9a]# make
[root@linuxprobe jpeg-9a]# make install

安裝libgd圖像處理程序(解壓與編譯過程已省略):

[root@linuxprobe jpeg-9a]# cd /usr/local/src
[root@linuxprobe src]# tar zxvf libgd-2.1.0.tar.gz
[root@linuxprobe src]# cd libgd-2.1.0
[root@linuxprobe libgd-2.1.0]# ./configure --prefix=/usr/local/libgd --enable-shared --with-jpeg=/usr/local/jpeg --with-png=/usr/local/libpng --with-freetype=/usr/local/freetype --with-fontconfig=/usr/local/freetype --with-xpm=/usr/ --with-tiff=/usr/local/tiff --with-vpx=/usr/local/libvpx
[root@linuxprobe libgd-2.1.0]# make
[root@linuxprobe libgd-2.1.0]# make install

安裝t1lib圖片生成函數(shù)庫(解壓與編譯過程已省略):

[root@linuxprobe cd libgd-2.1.0]# cd /usr/local/src
[root@linuxprobe src]# tar zxvf t1lib-5.1.2.tar.gz
[root@linuxprobe src]# cd t1lib-5.1.2
[root@linuxprobe t1lib-5.1.2]# ./configure --prefix=/usr/local/t1lib --enable-shared
[root@linuxprobe t1lib-5.1.2]# make
[root@linuxprobe t1lib-5.1.2]# make install

將函數(shù)庫文件放至合適的位置:

[root@linuxprobe t1lib-5.1.2]# cd /usr/local/src
[root@linuxprobe src]# ln -s /usr/lib64/libltdl.so /usr/lib/libltdl.so
[root@linuxprobe src]# cp -frp /usr/lib64/libXpm.so* /usr/lib/

安裝php服務(wù)程序(命令比較長,請一定要復(fù)制完整!!!):

[root@linuxprobe src]# tar -zvxf php-5.5.14.tar.gz
[root@linuxprobe src]# cd php-5.5.14
[root@linuxprobe php-5.5.14]# export LD_LIBRARY_PATH=/usr/local/libgd/lib
[root@linuxprobe php-5.5.14]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-pdo-mysql=/usr/local/mysql --with-gd --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-xpm-dir=/usr/ --with-vpx-dir=/usr/local/libvpx/ --with-zlib-dir=/usr/local/zlib --with-t1lib=/usr/local/t1lib --with-iconv --enable-libxml --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-opcache --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl --enable-ctype
[root@linuxprobe php-5.5.14]# make
[root@linuxprobe php-5.5.14]# make install

復(fù)制php服務(wù)程序的配置文件到安裝目錄:

[root@linuxprobe php-5.5.14]# cp php.ini-production /usr/local/php/etc/php.ini

刪除默認(rèn)的php配置文件:

[root@linuxprobe php-5.5.14]# rm -rf /etc/php.ini

創(chuàng)建php配置文件的軟連接到/etc/目錄中:

[root@linuxprobe php-5.5.14]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@linuxprobe php-5.5.14]# ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf
[root@linuxprobe php-5.5.14]# ln -s /usr/local/php/etc/php.ini /etc/php.ini

編輯php服務(wù)程序的配置文件:

[root@linuxprobe php-5.5.14]# vim /usr/local/php/etc/php-fpm.conf
//將第25行參數(shù)前面的分號去掉。
pid = run/php-fpm.pid
//修改第148和149行,將user與group修改為www。
user = www
group = www

添加php-fpm服務(wù)程序到開機啟動項:

[root@linuxprobe php-5.5.14]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
[root@linuxprobe php-5.5.14]# chmod +x /etc/rc.d/init.d/php-fpm
[root@linuxprobe php-5.5.14]# chkconfig php-fpm on

為了保障網(wǎng)站的安全性,禁用掉不安全的功能:

[root@linuxprobe php-5.5.14]# vim /usr/local/php/etc/php.ini
//修改第305行的disable_functions參數(shù),追加參數(shù)為:
disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

配置nginx服務(wù)程序支持php:

[root@linuxprobe php-5.5.14]# vim /usr/local/nginx/conf/nginx.conf
//將第2行前面的#號去掉并修改為user www www ;
//將第45行參數(shù)修改為index index.html index.htm index.php;
//將第65-71行前面的#號去掉,修改為:
location ~ \.php$ {root           html;fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;include        fastcgi_params;}

重啟nginx與php-fpm服務(wù)程序:

[root@linuxprobe php-5.5.14]# systemctl restart nginx
[root@linuxprobe php-5.5.14]# systemctl restart php-fpm
20.3 選購服務(wù)器主機

網(wǎng)站是由域名網(wǎng)頁源程序主機空間組成的,其中主機空間則是用于存放網(wǎng)頁源代碼并能夠?qū)⒕W(wǎng)頁內(nèi)容展示給用戶,雖然本小節(jié)與Apache服務(wù)沒有直接關(guān)系,但如果您想要在互聯(lián)網(wǎng)中搭建網(wǎng)站并被順利訪問,主機空間一定不能選錯。 常見的主機空間包括虛擬主機VPS云服務(wù)器獨立服務(wù)器

虛擬主機:在一臺服務(wù)器中分出一定的磁盤空間供用戶放置網(wǎng)站、存放數(shù)據(jù)等,僅提供基礎(chǔ)的網(wǎng)站訪問、數(shù)據(jù)存放與傳輸流量功能,能夠極大的降低用戶費用,也幾乎不需要管理員維護除網(wǎng)站數(shù)據(jù)以外的服務(wù),適合小型網(wǎng)站。

VPS(Virtual Private Server):在一臺服務(wù)器中利用OpenVZ、Xen或KVM等虛擬化技術(shù)模擬出多個“主機”,每個主機都有獨立的IP地址、操作系統(tǒng),實現(xiàn)不同VPS之間磁盤空間、內(nèi)存、CPU資源、進程與系統(tǒng)配置間的完全隔離,管理員可自由使用分配到的主機中的所有資源,所以需要有一定的維護系統(tǒng)的能力,適合小型網(wǎng)站。

云服務(wù)器(ECS):是一種整合了計算、存儲、網(wǎng)絡(luò),能夠做到彈性伸縮的計算服務(wù),其使用起來與VPS幾乎一樣,但差別是云服務(wù)器建立在一組集群服務(wù)器中,每個服務(wù)器都會保存一個主機的鏡像(備份),大大的提升了安全穩(wěn)定性,另外還具備了靈活性與擴展性,用戶只需按使用量付費的即可,適合大中小型網(wǎng)站。

獨立服務(wù)器:這臺服務(wù)器僅提供給您使用,詳細(xì)來講又可以區(qū)分為租用方式托管方式

租用方式:用戶只需將硬件配置要求告知IDC服務(wù)商,服務(wù)器硬件設(shè)備由機房負(fù)責(zé)維護,運維管理員一般需要自行安裝相應(yīng)的軟件并部署網(wǎng)站服務(wù),租期可以為月、季、年,減輕了用戶初期對硬件設(shè)備的投入,適合大中型網(wǎng)站。 托管方式:用戶需要自行購置服務(wù)器后交給IDC服務(wù)供應(yīng)商的機房進行管理(繳納管理服務(wù)費用),用戶對服務(wù)器硬件配置有完全的控制權(quán),自主性強,但需要自行維護、修理服務(wù)器硬件設(shè)備,適合大中型網(wǎng)站。
另外有必要提醒讀者,選擇主機空間供應(yīng)商時請一定要注意看口碑,綜合分析再決定購買,某些供應(yīng)商會有限制功能強制添加廣告隱藏扣費或強制扣費等惡劣行為,一定一定不要上當(dāng)!
20.4 搭建discuz論壇

將discuz論壇數(shù)據(jù)放至網(wǎng)站目錄(解壓過程已省略):

[root@linuxprobe ~ ]# cd /usr/local/src/
[root@linuxprobe src]# unzip Discuz_X3.2_SC_GBK.zip
[root@linuxprobe src]# rm -rf /usr/local/nginx/html/{index.html,50x.html}
[root@linuxprobe src]# mv upload/* /usr/local/nginx/html/
[root@linuxprobe src]# chown -Rf www:www /usr/local/nginx/html
[root@linuxprobe src]# chmod -Rf 755 /usr/local/nginx/html

第1步,接受許可協(xié)議:

第2步,檢查部署環(huán)境:

第3步,選擇全新安裝discuzX論壇:

第4步,填寫數(shù)據(jù)庫與論壇管理員信息:

第5步,等待安裝完畢:

第6步,discuz論壇順利安裝完畢:

第7步,訪問論壇主頁面:

轉(zhuǎn)載于:https://www.cnblogs.com/linux130/p/5789580.html

總結(jié)

以上是生活随笔為你收集整理的第20章 使用LNMP架构部署动态网站环境的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。