13-使用LNMP架构部署动态网站环境

[toc]

一、源码包程序

源码包安装服务程序两个优势:

  • 源码包的可移植性非常好,几乎可以在任何Linux系统中安装使用,而RPM软件包是针对特定系统和架构编写的指令集,必须严格地符合执行环境才能顺利安装
  • 使用源码包安装服务程序时会有一个编译过程,因此可以更好地适应安装主机的系统环境,运行效率和优化程度都会强于使用RPM软件包安装的服务程序。

缺点:

  • 源码包程序的安装、管理、卸载和维护都比较麻烦。

一般情况下,在安装软件时,如果能通过Yum软件仓库来安装,就用Yum方式;反之则去寻找合适的RPM软件包来安装;如果实在没有资源可用,那就只能使用源码包来安装了。

安装步骤

第一步:下载及解压源码包文件

源码包的后缀名一般为.tar.gz.tar.bz2

wget命令:从指定的URL下载文件。例如:

[root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.46.tar.gz
[root@localhost ~]# ls
anaconda-ks.cfg  httpd-2.4.46.tar.gz  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面 

使用源码包安装服务程序,必须先把里面的内容解压出来,然后再切换到源码包文件的目录。

[root@localhost ~]# tar -zxvf filename.tar.gz
[root@localhost ~]# cd fileDiretory
第二步:编译源码包代码。

可以根据需要来追加--prefix参数,以指定稍后源码包程序的安装路径。当编译工作结束后,如果系统环境符合安装要求,一般会自动在当前目录下生成一个Makefile安装文件。

[root@localhost ~]# ./configure --prefix=/usr/local/program
第三步:生成二进制安装程序。

使用make命令来根据Makefile文件内容提供的合适规则编译生成出真正可供用户安装服务程序的二进制可执行文件了。

[root@localhost ~]# make
第四步:运行二进制的服务程序安装包

如果在源码包编译阶段使用了--prefix参数,那么此时服务程序就会被安装到那个目录,如果没有自行使用参数定义目录的话,一般会被默认安装到/usr/local/bin目录中。

[root@localhost ~]# make install
第五步:清理源码包临时文件。
[root@localhost ~]# make clean

二、LNMP动态网站架构

LNMP动态网站部署架构是一套由Linux + Nginx + MySQL + PHP组成的动态网站系统解决方案。

image

1、安装环境准备以及源码包下载

在使用源码包安装服务程序,需要要让安装主机具备编译程序源码的环境,他需要具备C语言C++语言Perl语言的编译器,以及各种常见的编译支持函数库程序。执行下面命令进行环境安装。

[root@localhost src]# 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

布署架构所需的软件源码包,切换到/usr/local/src目录执行下面命令进行下载。

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

安装CMake

CMakeLinux系统中一款常用的编译工具。

[root@localhost src]# tar xzvf cmake-2.8.11.2.tar.gz
[root@localhost src]# cd cmake-2.8.11.2/
[root@localhost cmake-2.8.11.2]# ./configure
[root@localhost cmake-2.8.11.2]# make
[root@localhost cmake-2.8.11.2]# make install

2、配置Mysql服务

① 创建mysql用户,专门用于负责运行MySQL数据库。请记得要把这类账户的Bash终端设置成nologin解释器,避免黑客通过该用户登录到服务器中,从而提高系统安全性。

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

② 创建MySQL数据库程序和数据库文件的目录,并将目录所有者和所属组身份修改为mysql

  • /usr/local/mysql:用于保存MySQL数据库服务程序的目录
  • /usr/local/mysql/var:用于保存真实数据库文件的目录
[root@localhost src]# mkdir -p /usr/local/mysql/var
[root@localhost src]# chown -Rf mysql:mysql /usr/local/mysql

③ 解压、编译、安装MySQL数据库服务程序。

在编译数据库时使用的是cmake命令:

  • -DCMAKE_INSTALL_PREFIX:用于定义数据库服务程序的保存目录
  • -DMYSQL_DATADIR:用于定义真实数据库文件的目录
  • -DSYSCONFDIR:定义MySQL数据库配置文件的保存目录
[root@localhost src]# tar xzvf mysql-5.6.19.tar.gz
[root@localhost src]# cd mysql-5.6.19/
[root@localhost mysql-5.6.19]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/var -DSYSCONFDIR=/etc
[root@localhost mysql-5.6.19]# make
[root@localhost mysql-5.6.19]# make install

④ 删除/etc/目录中的默认配置文件,然后在MySQL数据库程序的保存目录scripts内找到一个名为mysql_install_db的脚本程序,执行这个脚本程序,生成出新的MySQL服务配置文件。

  • --user:指定MySQL服务的对应账号名称
  • --basedir:指定MySQL服务程序的保存目录
  • --datadir:指定MySQL真实数据库的文件保存目录
[root@localhost mysql-5.6.19]# rm -rf /etc/my.cnf
[root@localhost mysql-5.6.19]# cd /usr/local/mysql/
[root@localhost mysql-5.6.19]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var

⑤ 生成的MySQL数据库配置文件链接到/etc目录中,然后把程序目录中的开机程序文件复制到/etc/rc.d/init.d目录中

注意:要把数据库脚本文件的权限修改成755,便于让用户有执行该脚本的权限

[root@localhost mysql]# ln -s my.cnf /etc/my.cnf
[root@localhost mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost mysql]# chmod 755 /etc/rc.d/init.d/mysqld

⑥ 编辑刚复制的/etc/rc.d/init.d/mysqld数据库脚本文件,把basedirdatadir参数修改为真实目录

[root@localhost mysql]# vim /etc/rc.d/init.d/mysqld

image

⑦ 启动mysql,使用chkconfig命令把mysqld服务加入到开机启动项

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

⑧ 在/etc/profile文件中配置环境变量export PATH=$PATH:/usr/local/mysql/bin,在任何地方都可使用mysql操作命令

[root@localhost mysql]# vim /etc/profile
[root@localhost mysql]# source /etc/profile

image

⑨ 配置符号连接,使mysql可以调用一些程序文件函数库文件

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

⑩ 对MySQL数据库进行初始化

[root@localhost mysql]# mysql_secure_installation 
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS 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(要为root管理员设置数据库的密码)
New password: 输入要为root管理员设置的数据库密码
Re-enter new password: 再输入一次密码
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数据库并取消对其的访问权限)
 - 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 (刷新授权表,让初始化后的设定立即生效)
 ... 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...

3、配置Nginx服务

Nginx是一款相当优秀的用于部署动态网站的轻量级服务程序,它最初是为俄罗斯门户站点而开发的,因其稳定性、功能丰富、占用内存少且并发能力强而备受用户的信赖。目前国内诸如新浪、网易、腾讯等门户站点均已使用了此服务。

3.1、安装Nginx相关依赖软件
3.1.1、pcre软件包

提供Perl语言兼容的正则表达式库的软件包,Nginx服务程序用于实现伪静态功能必不可少的依赖包。

[root@localhost src]# tar zxvf pcre-8.35.tar.gz 
[root@localhost pcre-8.35]# ./configure --prefix=/usr/local/pcre
[root@localhost pcre-8.35]# make
[root@localhost pcre-8.35]# make install
3.1.2、openssl软件包

用于提供网站加密证书服务的程序文件。

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

openssl软件包安装后默认会在/usr/local/openssl/bin目录中提供很多的可用命令,如果需要在任何地方使用,需配置环境变量

[root@localhost mysql]# vim /etc/profile
[root@localhost mysql]# source /etc/profile

image

3.1.3、zlib软件包

zlib软件包是用于提供压缩功能的函数库文件。

[root@localhost src]# tar zxvf zlib-1.2.8.tar.gz 
[root@localhost src]# cd zlib-1.2.8/
[root@localhost zlib-1.2.8]# ./configure --prefix=/usr/local/zlib
[root@localhost zlib-1.2.8]# make
[root@localhost zlib-1.2.8]# make install
3.2、安装配置Nginx服务

① 用于执行Nginx服务程序的账户,名称随意

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

② 编译安装Nginx服务程序

  • --prefix:用于定义服务程序稍后安装到的位置
  • --user:指定执行Nginx服务程序的用户名
  • --group:指定执行Nginx服务程序的用户组
  • --with-openssl:openssl源码包解压路径目录
  • --with-zlib:zlib源码包解压路径目录
  • --with-pcre:pcre源码包解压路径目录
[root@localhost src]# tar xzvf nginx-1.6.0.tar.gz 
[root@localhost 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@localhost nginx-1.6.0]# make
[root@localhost nginx-1.6.0]# make install

③ 安装完成后,Nginx默认没有提供开机启动项脚本文件,需自行创建。

/etc/rc.d/init.d/目录中创建脚本文件,并复制下面脚本内容即可

[root@localhost src]# vim /etc/rc.d/init.d/nginx
# 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`" ]; then
                useradd -M -s /bin/nologin $user
        fi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
        if [ `echo $opt | grep '.*-temp-path'` ]; then
                value=`echo $opt | cut -d "=" -f 2`
                if [ ! -d "$value" ]; then
                        # echo "creating" $value
                        mkdir -p $value && chown -R $user $value
                fi
        fi
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

④ 保存脚本文件后赋予755权限,以绝对路径启动nginx服务,使用chkconfig命令将Nginx服务程序添加至开机启动项。

[root@localhost nginx-1.6.0]# chmod 755 /etc/rc.d/init.d/nginx
[root@localhost nginx-1.6.0]# /etc/rc.d/init.d/nginx restart
Reloading systemd:                                         [  确定  ]
Restarting nginx (via systemctl):                          [  确定  ]
[root@localhost nginx-1.6.0]# chkconfig nginx on

⑤ 在游览器查看默认网页

[root@localhost nginx-1.6.0]# firefox localhost &

image

4、配置php服务

PHPHypertxt Preprocessor,超文本预处理器)是一种通用的开源脚本语言,发明于1995年,它吸取了C语言Java语言Perl语言的很多优点,具有开源、免费、快捷、跨平台性强、效率高等优良特性。

4.1、安装php服务相关依赖软件

需要先安装部署将近十个用于搭建网站页面的软件程序包。

4.1.1、yasm源码包

是一款常见的开源汇编器。

[root@localhost nginx-1.6.0]# cd ..
[root@localhost src]# tar zxvf yasm-1.2.0.tar.gz 
[root@localhost src]# cd yasm-1.2.0/
[root@localhost yasm-1.2.0]# ./configure 
[root@localhost yasm-1.2.0]# make
[root@localhost yasm-1.2.0]# make install
4.1.2、libmcrypt源码包

是用于加密算法的扩展库程序。

[root@localhost yasm-1.2.0]# cd ..
[root@localhost src]# tar zxvf libmcrypt-2.5.8.tar.gz
[root@localhost src]# cd libmcrypt-2.5.8/
[root@localhost libmcrypt-2.5.8]# ./configure 
[root@localhost libmcrypt-2.5.8]# make
[root@localhost libmcrypt-2.5.8]# make install
4.1.3、libvpx源码包

用于提供视频编码器的服务程序。libvpx源码包后缀名为.tar.bz2,所以解压参数为xjvf

[root@localhost libmcrypt-2.5.8]# cd ..
[root@localhost src]# tar xjvf libvpx-v1.3.0.tar.bz2 
[root@localhost src]# cd libvpx-v1.3.0/
[root@localhost libvpx-v1.3.0]# ./configure --prefix=/usr/local/libvpx --enable-shared --enable-vp9
[root@localhost libvpx-v1.3.0]# make
[root@localhost libvpx-v1.3.0]# make install
4.1.4、tiff源码包

是用于提供标签图像文件格式的服务程序。

[root@localhost libvpx-v1.3.0]# cd ..
[root@localhost src]# tar zxvf tiff-4.0.3.tar.gz
[root@localhost src]# cd tiff-4.0.3/
[root@localhost tiff-4.0.3]# ./configure --prefix=/usr/local/tiff --enable-shared
[root@localhost tiff-4.0.3]# make
[root@localhost tiff-4.0.3]# make install
4.1.5、libpng源码包

是用于提供png图片格式支持函数库的服务程序

[root@localhost tiff-4.0.3]# cd ..
[root@localhost src]# tar zxvf libpng-1.6.12.tar.gz 
[root@localhost src]# cd libpng-1.6.12/
[root@localhost libpng-1.6.12]# ./configure --prefix=/usr/local/libpng --enable-shared
[root@localhost libpng-1.6.12]# make
[root@localhost libpng-1.6.12]# make install
4.1.6、freetype源码包

是用于提供字体支持引擎的服务程序

[root@localhost libpng-1.6.12]# cd ..
[root@localhost src]# tar zxvf freetype-2.5.3.tar.gz
[root@localhost src]# cd freetype-2.5.3/
[root@localhost freetype-2.5.3]# ./configure --prefix=/usr/local/freetype --enable-shared
[root@localhost freetype-2.5.3]# make
[root@localhost freetype-2.5.3]# make install
4.1.7、jpeg源码包

是用于提供jpeg图片格式支持函数库的服务程序

[root@localhost freetype-2.5.3]# cd ..
[root@localhost src]# tar zxvf jpegsrc.v9a.tar.gz 
[root@localhost src]# cd jpeg-9a/
[root@localhost jpeg-9a]# ./configure --prefix=/usr/local/jpeg --enable-shared
[root@localhost jpeg-9a]# make
[root@localhost jpeg-9a]# make install
4.1.8、libgd源码包

是用于提供图形处理的服务程序,在编译libgd源码包时,需写入的jpeglibpngfreetypetifflibvpx等服务程序在系统中的安装路径。

[root@localhost jpeg-9a]# cd ..
[root@localhost src]# tar zxvf libgd-2.1.0.tar.gz 
[root@localhost src]# cd libgd-2.1.0/
[root@localhost 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@localhost libgd-2.1.0]# make
[root@localhost libgd-2.1.0]# make install
4.1.9、t1lib源码包

是用于提供图片生成函数库的服务程序,安装后需要把/usr/lib64目录中的函数文件链接到/usr/lib目录中,以便系统能够顺利调取到函数文件

[root@localhost libgd-2.1.0]# cd ..
[root@localhost src]# tar zxvf t1lib-5.1.2.tar.gz 
[root@localhost src]# cd t1lib-5.1.2/
[root@localhost t1lib-5.1.2]# ./configure --prefix=/usr/local/t1lib --enable-shared
[root@localhost t1lib-5.1.2]# make
[root@localhost t1lib-5.1.2]# make install
3.2、安装编译php服务

① 解压源码包进行编译

创建全局变量LD_LIBRARY_PATH,作用是帮助系统找到指定的动态链接库文件,这些文件是编译php服务源码包的必须元素之一。

编译php服务源码包时,除了定义要安装到的目录以外,还需要依次定义配置php服务程序配置文件的保存目录、MySQL数据库服务程序所在目录、MySQL数据库服务程序配置文件所在目录,以及libpngjpegfreetypelibvpxzlibt1lib等服务程序的安装目录路径,并通过参数启动php服务程序的诸多默认功能

[root@localhost t1lib-5.1.2]# cd ..
[root@localhost src]# tar zxvf php-5.5.14.tar.gz 
[root@localhost src]# cd php-5.5.14/
[root@localhost php-5.5.14]# export LD_LIBRARY_PATH=/usr/local/libgd/lib
[root@localhost 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@localhost php-5.5.14]# make
[root@localhost php-5.5.14]# make install

② 删除当前默认的配置文件,然后将php服务程序目录中相应的配置文件复制过来

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

③ 配置php-fpm.conf

  • 启用该配置文件中第25行左右的pid文件保存目录
  • 148和149行的user与group参数分别修改为www账户和用户组名称
[root@localhost php-5.5.14]#  vim /usr/local/php/etc/php-fpm.conf
 21 [global]
 22 ; Pid file
 23 ; Note: the default prefix is /usr/local/php/var
 24 ; Default Value: none
 25 pid = run/php-fpm.pid # 将前面";"号去掉
 # 省略部分输出信息
 148 user = www
 149 group = www
 # 省略部分输出信息

④ 管理php服务的脚本文件复制到/etc/rc.d/init.d目录中,同时赋予755权限,最后把php-fpm服务程序加入到开机启动项中。

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

⑤ 编辑/usr/local/php/etc/php.ini配置文件,在305行的disable_functions参数后面追加上要禁止的功能
禁用功能名单根据自身工作需求酌情删减

[root@localhost php-5.5.14]# vim /usr/local/php/etc/php.ini
………………省略部分输出信息………………
 305 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服务程序的主配置文件/usr/local/nginx/conf/nginx.conf

  • 2行的井号(#)删除
  • 追加负责运行Nginx服务程序的账户名称和用户组名称
  • 45行的index参数后面写上网站的首页名称
  • 65~71行参数前的井号(#)删除来启用参数
  • 69行的脚本名称路径参数:
    • $document_root:变量即为网站信息存储的根目录路径
[root@localhost php-5.5.14]# vim /usr/local/nginx/conf/nginx.conf
 2 user www www;
 43         location / {
 44             root   html;
 45             index  index.html index.htm index.php; # 将index.php加进去
 46         }
 ………………省略部分输出信息………………
 65         location ~ \.php$ {
 66             root           html;
 67             fastcgi_pass   127.0.0.1:9000;
 68             fastcgi_index  index.php;
 69             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
 70             include        fastcgi_params;
 71         }
[root@localhost php-5.5.14]# systemctl restart nginx
[root@localhost php-5.5.14]# systemctl restart php-fpm

三、搭建Discuz论坛

Discuz! X3.2是国内最常见的社区论坛系统,搭建使用Discuz论坛系统来验证LNMP动态网站环境是否配置妥当。

① 解压Discuz! X3.2软件包

Discuz! X3.2软件包的后缀是.zip格式,可使用unzip命令进行解压。

解压后会在当前目录中出现一个名为upload的文件目录,这里面保存的就是Discuz!论坛的系统程序。

[root@localhost src]# unzip Discuz_X3.2_SC_GBK.zip -d  ./discuz

image

② 将Nginx服务程序网站根目录的内容清空后,把upload目录中的文件都复制进去,Nginx服务程序的网站根目录的所有者和所属组修改为本地的www用户,并赋予755权限

[root@localhost src]# rm -rf /usr/local/nginx/html/{index.html,50x.html}*
[root@localhost src]# mv discuz/upload/* /usr/local/nginx/html/
[root@localhost src]# chown -Rf www:www /usr/local/nginx/html
[root@localhost src]# chmod -Rf 755 /usr/local/nginx/html

③ 接受Discuz!安装向导的许可协议

刷新浏览器页面,自动跳转到Discuz! X3.2论坛系统的安装界面,此处需单击“我同意”按钮,进入下一步的安装过程中

image

④ 检查Discuz! X3.2论坛系统的安装环境及目录权限,单击“下一步”按钮

image

⑤ 选择“全新安装Discuz! X(含UCenter Server)”,台,能够在多个站点之间同步会员账户及密码信息,单击“下一步”按钮

image

⑥ 填写服务器的数据库信息与论坛系统管理员信息。

image

image

image


作业

1、使用源码包的方式来安装软件服务的大致步骤是什么?

答:基本分为5个步骤,分别为下载及解压源码包文件、编译源码包代码、生成二进制安装程序、运行二进制的服务程序安装包,清理源码包临时文件。

2、LNMP动态网站部署架构通常包含了哪些服务程序?

答:LNMP动态网站部署架构通常包含Linux系统、Nginx网站服务、MySQL数据库管理系统,以及PHP脚本语言。

3、在MySQL数据库服务程序中,/usr/local/mysql与/usr/local/mysql/var目录的作用是什么?

答:/usr/local/mysql用于保存MySQL数据库服务程序的目录,/usr/local/mysql/var则用于保存真实数据库文件的目录。

4、如何禁止php服务程序中不安全的功能?

答:编辑php服务程序的配置文件(/usr/local/php/etc/php.ini),把要禁用的功能追加到disable_functions参数之后即可。

刚学java菜鸡,永劫无间蚀月,王者荣耀王者,金铲铲小铂金,第五人格菜鸡,原神开服玩家,星穹铁道菜鸡,崩坏的菜鸡,闪耀暖暖,和平精英,LOL,CSGO,以及三A大作收集者等等。。。