(内容真的很多,我也看的很崩溃,但其实分块来看,也就是前面讲的几个步骤,不用死记硬背,因为你记不住的,只需要理解关键的几个地方!)


        并非所有的软件都能用yum来安装。一般来讲,在安装软件时,如果能通过Yum软件仓库来安装,就用Yum方式;反之则去寻找合适的RPM软件包来安装;如果是在没有资源可用,那就只能使用源码包来安装了,可见源码包安装也是需要掌握的知识。

本次使用源码包安装的方式来搭建LNMP环境。

 

源码包安装的基本步骤:
1、下载及解压源码包文件。(涉及命令:wgettar

 

2、编译源码包代码。(涉及命令:./configure 执行编译前的检查,同时可以增加参数指定安装后的软件配置)

 

3、生成二进制安装程序。(涉及命令:make

 

4、运行二进制的服务程序安装包。(涉及命令:make install

 

5、清理源码包临时文件。(涉及命令:make clean

 

什么是LNMP

就是Linux + Nginx + MySQL + PHP组成的动态网站系统解决方案。

 

下面开始搭建环境:

1、编译环境配置

在使用源码包安装服务程序之前,首先要让安装主机具备编译程序源码的环境,他需要具备C语言、C++语言、Perl语言的编译器,以及各种常见的编译支持函数库程序。因此请先配置妥当Yum软件仓库(不会的,参考2-4),然后把下面列出的这些软件包都统统安装上。

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

 

2、软件包下载

安装LNMP动态网站部署架构所需的16个软件源码包1个用于检查效果的论坛网站系统软件包使用wget命令下载这些源码包文件。建议把要安装的软件包存放在/usr/local/src目录中。(也可以widnwos环境下载好,通过FTP软件上传到Linux服务器,或者U盘)

[root@linuxprobe ~]# cd /usr/local/src

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/cmake-2.8.11.2.tar.gz

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/Discuz_X3.2_SC_GBK.zip

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/freetype-2.5.3.tar.gz

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/jpegsrc.v9a.tar.gz

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/libgd-2.1.0.tar.gz

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/libmcrypt-2.5.8.tar.gz

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/libpng-1.6.12.tar.gz

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/libvpx-v1.3.0.tar.bz2

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/mysql-5.6.19.tar.gz

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/nginx-1.6.0.tar.gz

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/openssl-1.0.1h.tar.gz

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/php-5.5.14.tar.gz

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/pcre-8.35.tar.gz

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/t1lib-5.1.2.tar.gz

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/tiff-4.0.3.tar.gz

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/yasm-1.2.0.tar.gz

[root@linuxprobe src] # wget https://www.linuxprobe.com/Software/zlib-1.2.8.tar.gz

[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

 

3、安装软件包

 ///////////////////////////////////////////////CMake//////////////////////////////////////////////////////////////////////////////

CMakeLinux系统中一款常用的编译工具,通过源码包来安装它,所以首先安装它。

[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

 

////////////////////////////////////////////////MySQL////////////////////////////////////////////////////////////////////////

安装MySQL,之前用yum安装MariaDB真的很快,简单,但是这里也学一下源码包安装的方式,在安装指定版本的Mysql时,非常有用。

针对MySQL数据库来讲,我们需要在系统中创建一个名为mysql的用户,专门用于负责运行MySQL数据库。请记得要把这类账户的Bash终端设置成nologin,避免黑客通过该用户登录到服务器中,从而提高系统安全性。(yum安装的时候,这件事默认替你做了,但源码安装就得自己动手了!)

[root@linuxprobe cmake-2.8.11.2]# cd ..

[root@linuxprobe src]# useradd mysql -s /sbin/nologin

 

   创建一个用于保存MySQL数据库程序和数据库文件的目录,并把该目录的所有者和所属组身份修改为mysql。其中,/usr/local/mysql是用于保存MySQL数据库服务程序的目录,/usr/local/mysql/var则是用于保存真实数据库文件的目录。

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

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

 

编译和安装:在编译数据库时使用的是cmake命令,其中,-DCMAKE_INSTALL_PREFIX参数用于定义数据库服务程序的保存目录,-DMYSQL_DATADIR参数用于定义真实数据库文件的目录,-DSYSCONFDIR则是定义MySQL数据库配置文件的保存目录。

 

[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

 

为了让MySQL数据库程序正常运转起来,需要先删除/etc目录中的默认配置文件,然后在MySQL数据库程序的保存目录scripts找到一个名为mysql_install_db的脚本程序,执行这个脚本程序并使用--user参数指定MySQL服务的对应账号名称(在前面步骤已经创建),使用--basedir参数指定MySQL服务程序的保存目录,使用--datadir参数指定MySQL真实数据库的文件保存目录,这样即可生成系统数据库文件,也会生成出新的MySQL服务配置文件。

[root@linuxprobe mysql-5.6.19]# rm -rf /etc/my.cnf   //删除默认mysql配置文件

[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

 

把系统新生成的MySQL数据库配置文件链接到/etc目录中,然后把程序目录中的开机程序文件复制到/etc/rc.d/init.d目录中,以便通过service命令来管理MySQL数据库服务程序。记得把数据库脚本文件的权限修改成755以便于让用户有执行该脚本的权限:

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

[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

 

编辑刚复制的MySQL数据库脚本文件,把第4647行的basedirdatadir参数分别修改为MySQL数据库程序的保存目录和真实数据库的文件内容。

[root@linuxprobe mysql]# vi  /etc/rc.d/init.d/mysqld 

………………省略部分输出信息………………

 39 #

 40 # If you want to affect other MySQL variables, you should make your changes

 41 # in the /etc/my.cnf, ~/.my.cnf or other MySQL configuration files.

 42 

 43 # If you change base dir, you must also change datadir. These may get

 44 # overwritten by settings in the MySQL configuration files.

 45 

 46 basedir=/usr/local/mysql

 47 datadir=/usr/local/mysql/var

 48 

………………省略部分输出信息………………


配置好脚本文件后便可以用service命令启动mysqld数据库服务了。mysqldMySQL数据库程序的服务名称,注意不要写错。顺带再使用chkconfig命令把mysqld服务程序加入到开机启动项中。

[root@Linuxprobe mysql]# service mysqld start

[root@linuxprobe mysql]# chkconfig mysqld on

 

MySQL数据库程序自带了许多命令,但是Bash终端的PATH变量并不会包含这些命令所存放的目录,因此我们也无法顺利地对MySQL数据库进行初始化,也就不能使用MySQL数据库自带的命令了。想要把命令所保存的目录永久性地定义到PATH变量中,需要编辑/etc/profile文件并写入追加的命令目录,这样当物理设备在下一次重启时就会永久生效了。如果不想通过重启设备的方式来生效,也可以使用source命令加载一下/ect/profile文件,此时新的PATH变量也可以立即生效了。

[root@linuxprobe mysql]# vim /etc/profile

………………省略部分输出信息………………

 64 

 65 for i in /etc/profile.d/*.sh ; do

 66 if [ -r "$i" ]; then

 67 if [ "${-#*i}" != "$-" ]; then

 68 . "$i"

 69 else

 70 . "$i" >/dev/null

 71 fi

 72 fi

 73 done

 74 export PATH=$PATH:/usr/local/mysql/bin

 75 unset i

 76 unset -f pathmunge

[root@linuxprobe mysql]# source /etc/profile

 

MySQL数据库服务程序还会调用到一些程序文件和函数库文件。由于当前是通过源码包方式安装MySQL数据库,因此现在也必须以手动方式把这些文件链接过来。

[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 /tmp/mysql.sock /var/lib/mysql/mysql.sock

[root@linuxprobe mysql]# ln -s /usr/local/mysql/include/mysql /usr/include/mysql

 

数据库初始化:

mysql_secure_installation (省略了,详见2-3

 

//////////////////////////////////////////////Nginx///////////////////////////////////////////////////////////

安装Nginx服务。

1、安装依赖库(PCRE-----提供正则表达式的支持

[root@linuxprobe ~]# cd /usr/local/src

[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

 

2openssl软件包是用于提供网站加密证书服务的程序文件,在安装该程序时需要自定义服务程序的安装目录,以便于稍后调用它们的时候更可控。

[root@linuxprobe pcre-8.35]# cd /usr/local/src

[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软件包安装后默认会在/usr/local/openssl/bin目录中提供很多的可用命令,我们需要像前面的操作那样,将这个目录添加到PATH环境变量中,并写入到配置文件中,最后执行source命令以便让新的PATH环境变量内容可以立即生效:

[root@linuxprobe pcre-8.35]# vim /etc/profile

………………省略部分输出信息………………

 74 export PATH=$PATH:/usr/local/mysql/bin:/usr/local/openssl/bin

 75 unset i

 76 unset -f pathmunge

[root@linuxprobe pcre-8.35]# source /etc/profile  

 

3、安装zlib——用于提供压缩功能的函数库文件

[root@linuxprobe pcre-8.35]# cd /usr/local/src

[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

 

在安装部署好具有依赖关系的软件包之后,创建一个用于执行Nginx服务程序的账户www。账户名称可以自定义,但一定别忘记,因为在后续需要调用:

[root@linuxprobe zlib-1.2.8]# cd ..

[root@linuxprobe src]# useradd www -s /sbin/nologin  

 

4、至此,前期准备工作准备完毕,开始安装Nginx

在使用命令编译Nginx服务程序时,需要设置特别多的参数,其中,--prefix参数用于定义服务程序稍后安装到的位置,--user--group参数用于指定执行Nginx服务程序的用户名和用户组。在使用参数调用opensslzlibpcre软件包时,请写出软件源码包的解压路径,而不是程序的安装路径:(请特别注意!!!

[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

 

5、设置nginx开机自启动

要想启动Nginx服务程序以及将其加入到开机启动项中,也需要有脚本文件。可惜的是,在安装完Nginx软件包之后默认并没有为用户提供脚本文件,下面是一份可用的启动脚本文件,大家只需在/etc/rc.d/init.d目录中创建脚本文件并直接复制下面的脚本内容即可。

 

[root@linuxprobe nginx-1.6.0]# vi /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`" ]; 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权限,以便能够执行这个脚本。然后以绝对路径的方式执行这个脚本,通过restart参数重启Nginx服务程序,最后再使用chkconfig命令将Nginx服务程序添加至开机启动项中。大功告成!

[root@linuxprobe nginx-1.6.0]# chmod 755 /etc/rc.d/init.d/nginx

[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

 

Windows网页访问你的Linux服务器IP地址:192.168.10.10  发现无法访问!

检查selinuxiptables是否关闭!!!

Setenforce 0

Iptables -F

然后就可以正常访问了!!

 

////////////////////////////////////////////////PHP/////////////////////////////////////////////////////////

1、安装依赖包

1yasm:源码包是一款常见的开源汇编器;(安装:略)

libmcrypt:源码包是用于加密算法的扩展库程序;(安装:略)

 

libvpx源码包是用于提供视频编码器的服务程序; 

【相信会有很多粗心的读者顺手使用了tar命令的xzvf参数,但如果仔细观察就会发现libvpx源码包的后缀是.tar.bz2,即表示使用bzip2格式进行的压缩,因此正确的解压参数应该是xjvf:】

[root@linuxprobe libmcrypt-2.5.8]# cd ..

[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源码包是用于提供标签图像文件格式的服务程序;(安装:略)

./configure --prefix=/usr/local/tiff --enable-shared

libpng源码包是用于提供png图片格式支持函数库的服务程序;(安装:略)

./configure --prefix=/usr/local/libpng --enable-shared

freetype源码包是用于提供字体支持引擎的服务程序;(安装:略)

./configure --prefix=/usr/local/freetype --enable-shared

jpeg源码包是用于提供jpeg图片格式支持函数库的服务程序;(安装:略)

./configure --prefix=/usr/local/jpeg --enable-shared

libgd源码包是用于提供图形处理的服务程序,在编译libgd源码包时,请记得写入的是jpeglibpngfreetypetifflibvpx等服务程序在系统中的安装路径,即在上面安装过程中使用--prefix参数指定的目录路径。

 

[root@linuxprobe jpeg-9a]# cd ..

[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源码包是用于提供图片生成函数库的服务程序,安装后把/usr/lib64目录中的函数文件链接到/usr/lib目录中,以便系统能够顺利调取到函数文件。

[root@linuxprobe cd libgd-2.1.0]# cd ..

[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

[root@linuxprobe t1lib-5.1.2]# ln -s /usr/lib64/libltdl.so /usr/lib/libltdl.so 

[root@linuxprobe t1lib-5.1.2]# cp -frp /usr/lib64/libXpm.so* /usr/lib/

 

2、安装PHP

此时终于把编译php服务源码包的相关软件包都已经安装部署妥当了。在开始编译php源码包之前,先定义一个名为LD_LIBRARY_PATH的全局环境变量,该环境变量的作用是帮助系统找到指定的动态链接库文件,这些文件是编译php服务源码包的必须元素之一。编译php服务源码包时,除了定义要安装到的目录以外,还需要依次定义配置php服务程序配置文件的保存目录、MySQL数据库服务程序所在目录、MySQL数据库服务程序配置文件所在目录,以及libpngjpegfreetypelibvpxzlibt1lib等服务程序的安装目录路径,并通过参数启动php服务程序的诸多默认功能:

[root@linuxprobe t1lib-5.1.2]# cd ..

[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

 

php源码包程序安装完成后,需要删除当前默认的配置文件,然后将php服务程序目录中相应的配置文件复制过来:

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

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

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

[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

 

php-fpm.confphp服务程序重要的配置文件之一,我们需要启用该配置文件中第25行左右的pid文件保存目录,然后分别将第148149行的usergroup参数分别修改为www账户和用户组名称:

[root@linuxprobe 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

26 

………………省略部分输出信息………………

145 ; Unix user/group of processes

146 ; Note: The user is mandatory. If the group is not set, the default user's g roup

147 ; will be used.

148 user = www

149 group = www

150 

………………省略部分输出信息………………

 

配置妥当后便可把用于管理php服务的脚本文件复制到/etc/rc.d/init.d中了。为了能够执行脚本,请记得为脚本赋予755权限。最后把php-fpm服务程序加入到开机启动项中:

[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 755 /etc/rc.d/init.d/php-fpm

[root@linuxprobe php-5.5.14]# chkconfig php-fpm on

 

 

为了安全起见,需要修改php.ini配置文件:

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

………………省略部分输出信息………………

300 

301 ; This directive allows you to disable certain functions for security reasons.

302 ; It receives a comma-delimited list of function names. This directive is

303 ; *NOT* affected by whether Safe Mode is turned On or Off.

304 ; http://php.net/disable-functions

305 disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restor e,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,g etservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,po six_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

306 

………………省略部分输出信息………………

 

 

修改Nginx主配置文件,修改如下几处:

 

[root@linuxprobe php-5.5.14]# vim /usr/local/nginx/conf/nginx.conf

 1 

 2 user www www;

 3 worker_processes 1;

………………省略部分输出信息………………

 43 location / {

 44 root html;

 45 index index.html index.htm index.php;

 46 }

 47 

………………省略部分输出信息………………

 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 }

 72 

………………省略部分输出信息………………

 

配置完毕,重启服务:

[root@linuxprobe php-5.5.14]# systemctl restart nginx

[root@linuxprobe php-5.5.14]# systemctl restart php-fpm

 

LNMP网站搭建结束!

 

本文转载自:https://www.linuxprobe.com/chapter-20.html  (还是那句话,感谢刘老师!)后面还有一个搭建Discuz的论坛小实验,大家可以试试,成功的喜悦可以缓冲一下刚才的痛苦。至少现在你可以告诉别人,你会搭建论坛和部署其他动态网站了。