运维小白之LNMP终结篇

PHP:超文本预处理器开源,免费快捷,跨平台性强,效率高
####################配置php服务####################
cd /usr/local/src

yasm源码包
tar zxvf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure
make
make install

libmcrypt源码包(加密算法的扩展库)
cd …
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make
make install

libvpx源码包(提供视频编码器)
cd …
tar xjvf libvpx-v1.3.0.tar.bz2
cd libvpx-v1.3.0
./configure --prefix=/usr/local/libvpx --enable-shared --enable-vp9
make
make install

tiff源码包(用于提供标签图像文件格式)
cd …
tar zxvf tiff-4.0.3.tar.gz
cd tiff-4.0.3
./configure --prefix=/usr/local/tiff --enable-shared
make
make install

libpng源码包(提供png图片格式支持函数库)
cd …
tar zxvf libpng-1.6.12.tar.gz
cd libpng-1.6.12
./configure --prefix=/usr/local/libpng --enable-shared
make
make install

freetype源码包(提供字体支持引擎)
cd …
tar zxvf freetype-2.5.3.tar.gz
cd freetype-2.5.3
./configure --prefix=/usr/local/freetype --enable-shared
make
make install

jpeg源码包(提供jpeg图片格式支持函数库)
cd …
tar zxvf jpegsrc.v9a.tar.gz
cd jpeg-9a
./configure --prefix=/usr/local/jpeg --enable-shared
make
make install

libgd源码包(图形处理),
在编译libgd源码包时,写入jpeg、libpng、freetype、tiff、libvpx等服务程序在系统中的安装路径,
(使用–prefix参数指定的目录路径)
cd …
tar zxvf libgd-2.1.0.tar.gz
cd 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
make
make install

t1lib源码包(图片生成函数库),把/usr/lib64目录中的函数文件链接到/usr/lib目录中,
以便系统能够顺利调取到函数文件:
cd …
tar zxvf t1lib-5.1.2.tar.gz
cd t1lib-5.1.2
./configure --prefix=/usr/local/t1lib --enable-shared
make
make install
ln -s /usr/lib64/libltdl.so /usr/lib/libltdl.so
cp -frp /usr/lib64/libXpm.so* /usr/lib/

编译php源码包之前,先定义LD_LIBRARY_PATH的全局环境变量,
该环境变量的作用是帮助系统找到指定的动态链接库文件,
这些文件是编译php服务源码包的必须元素之一。
编译php服务源码包时,除了定义要安装到的目录以外,
还需要依次定义配置php服务程序配置文件的保存目录、MySQL数据库服务程序所在目录、
MySQL数据库服务程序配置文件所在目录,
以及libpng、jpeg、freetype、libvpx、zlib、t1lib等服务程序的安装目录路径,
0并通过参数启动php服务程序的诸多默认功能:
cd …
tar -zvxf php-5.5.14.tar.gz
cd php-5.5.14
export LD_LIBRARY_PATH=/usr/local/libgd/lib

./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

make
make install

在php源码包程序安装完成后,需要删除当前默认的配置文件,
然后将php服务程序目录中相应的配置文件复制过来:
rm -rf /etc/php.ini
ln -s /usr/local/php/etc/php.ini /etc/php.ini
cp php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf

php-fpm.conf是php服务程序重要的配置文件之一,
我们需要启用该配置文件中第25行左右的pid文件保存目录,
然后分别将第148和149行的user与group参数分别修改为www账户和用户组名称:
vim /usr/local/php/etc/php-fpm.conf
:set nu 指定到行
25 pid = run/php-fpm.pid
148 user = www
149 group = www

把用于管理php服务的脚本文件复制到/etc/rc.d/init.d中
最后把php-fpm服务程序加入到开机启动项中:
cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
为脚本赋予755权限
chmod 755 /etc/rc.d/init.d/php-fpm
最后把php-fpm服务程序加入到开机启动项中
chkconfig php-fpm on

php服务程序的配置参数直接会影响到Web服务服务的运行环境,
如果默认开启了一些不必要且高危的功能(如允许用户在网页中执行Linux命令)
会降低网站被入侵的难度,因此我们需要编辑php.ini配置文件,
在305行的disable_functions参数后面追加上要禁止的功能。

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_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

编辑Nginx服务程序的主配置文件,把第2行的井号(#)删除,
然后在后面写上负责运行Nginx服务程序的账户名称和用户组名称;
在第45行的index参数后面写上网站的首页名称。
最后是将第65~71行参数前的井号(#)删除来启用参数,
主要是修改第69行的脚本名称路径参数,
其中$document_root变量即为网站信息存储的根目录路径,
若没有设置该变量,则Nginx服务程序无法找到网站信息,
因此会提示“404页面未找到”的报错信息。
在确认参数信息填写正确后便可重启Nginx服务与php-fpm服务。

vim /usr/local/nginx/conf/nginx.conf
2 user www www;
45 index index.html index.htm index.php;
65 location ~ .php$ {
66 root html;
67 fastcgi_pass 127.0.0.1:9000;
68 fastcgi_index index.php;
69 fastcgi_param SCRIPT_FILENAME documentrootdocument_rootfastcgi_script_name;
70 include fastcgi_params;
71 }
重启服务
systemctl restart nginx
systemctl restart php-fpm

搭建Discuz论坛
cd /usr/local/src/
unzip Discuz_X3.2_SC_GBK.zip
rm -rf /usr/local/nginx/html/{index.html,50x.html}*
mv upload/* /usr/local/nginx/html/
chown -Rf www:www /usr/local/nginx/html
chmod -Rf 755 /usr/local/nginx/html
运维小白之LNMP终结篇