RHCE-Day18(2)-LNMP搭建网站

news/2024/5/9 7:22:31/文章来源:https://blog.csdn.net/qiwuji/article/details/113571802

RHCE-Day18(2)-LNMP搭建网站

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

1.源码包程序

使用源码包来安装服务程序具有两个优势。

源码包的可移植性非常好,几乎可以在任何Linux系统中安装使用,而RPM软件包是针对特定系统和架构编写的指令集,必须严格地符合执行环境才能顺利安装(即只会去“生硬地”安装服务程序)。

使用源码包安装服务程序时会有一个编译过程,因此可以更好地适应安装主机的系统环境,运行效率和优化程度都会强于使用RPM软件包安装的服务程序。也就是说,可以将采用源码包安装服务程序的方式看作是针对系统的“量体裁衣”。

使用源码包安装服务程序的过程

第1步:下载及解压源码包文件。把里面的内容解压出来,然后再切换到源码包文件的目录中:

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

第2步:编译源码包代码

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

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

第3步:生成二进制安装程序。刚刚生成的Makefile文件中会保存有关系统环境、软件依赖关系和安装规则等内容,接下来便可以使用make命令来根据Makefile文件内容提供的合适规则编译生成出真正可供用户安装服务程序的二进制可执行文件了。

[root@linuxprobe ~]# make

第4步:运行二进制的服务程序安装包

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

[root@linuxprobe ~]# make install

第5步:清理源码包临时文件。

可以使用make clean命令对临时文件进行彻底的清理工作。

[root@linuxprobe ~]# make clean

2.LNMP动态网站架构

LNMP动态网站部署架构是一套由Linux + Nginx + MySQL + PHP组成的动态网站系统解决方案(其logo见图20-1)。

yum安装

安装编译程序源码的环境

需要具备C语言、C++语言、Perl语言的编译器,以及各种常见的编译支持函数库程序

[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

源码安装

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

2.1 配置Mysql服务

创建一个名为mysql的用户

[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

生成新的MySQL服务配置文件

删除/etc目录中的默认配置文件,然后在MySQL数据库程序的保存目录scripts内找到一个名为mysql_install_db的脚本程序,使用–user参数指定MySQL服务的对应账号名称(在前面步骤已经创建),使用–basedir参数指定MySQL服务程序的保存目录,使用–datadir参数指定MySQL真实数据库的文件保存目录

[root@linuxprobe mysql-5.6.19]# rm -rf /etc/my.cnf
[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数据库脚本文件,把第46、47行的basedir与datadir参数分别修改为MySQL数据库程序的保存目录和真实数据库的文件内容。

[root@linuxprobe mysql]# vim /etc/rc.d/init.d/mysqld 
………………省略部分输出信息………………39 #40 # If you want to affect other MySQL variables, you should make your changes41 # 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 get44 # overwritten by settings in the MySQL configuration files.45 46 basedir=/usr/local/mysql47 datadir=/usr/local/mysql/var48 
………………省略部分输出信息………………

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

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

配置环境变量

把命令所保存的目录永久性地定义到PATH变量中,需要编辑/etc/profile文件并写入追加的命令目录,立即生效:source命令加载一下/ect/profile文件。

[root@linuxprobe mysql]# vim /etc/profile
………………省略部分输出信息………………64 65 for i in /etc/profile.d/*.sh ; do66 if [ -r "$i" ]; then67 if [ "${-#*i}" != "$-" ]; then68 . "$i"69 else70 . "$i" >/dev/null71 fi72 fi73 done74 export PATH=$PATH:/usr/local/mysql/bin75 unset i76 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数据库初始化

[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 (要为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...

2.2 配置Nginx服务

解压、编译、生成、安装Nginx服务程序的源码文件:

[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 

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

[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到PATH环境变量中

[root@linuxprobe pcre-8.35]# vim /etc/profile
………………省略部分输出信息………………64 65 for i in /etc/profile.d/*.sh ; do66 if [ -r "$i" ]; then67 if [ "${-#*i}" != "$-" ]; then68 . "$i"69 else70 . "$i" >/dev/null71 fi72 fi73 done74 export PATH=$PATH:/usr/local/mysql/bin:/usr/local/openssl/bin75 unset i76 unset -f pathmunge
[root@linuxprobe pcre-8.35]# source /etc/profile

zlib软件包是用于提供压缩功能的函数库文件。其实Nginx服务程序调用的这些服务程序无需深入了解,只要大致了解其作用就已经足够了:

[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服务程序的账户。账户名称可以自定义,但一定别忘记,因为在后续需要调用:

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

使用命令编译Nginx服务程序

需要设置特别多的参数,其中,–prefix参数用于定义服务程序稍后安装到的位置,–user与–group参数用于指定执行Nginx服务程序的用户名和用户组。在使用参数调用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

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

[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

保存脚本文件后记得为其赋予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

2.3 配置php服务

使用源码包的方式编译安装PHP语言环境其实并不复杂,难点在于解决PHP的程序包和其他软件的依赖关系。为此需要先安装部署将近十个用于搭建网站页面的软件程序包,然后才能正式安装PHP程序。

yasm源码包是一款常见的开源汇编器

[root@linuxprobe nginx-1.6.0]# cd ..
[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 ..
[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 ..
[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源码包是用于提供标签图像文件格式的服务程序

[root@linuxprobe libvpx-v1.3.0]# cd ..
[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图片格式支持函数库的服务程序

[root@linuxprobe tiff-4.0.3]# cd ..
[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 ..
[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图片格式支持函数库的服务程序

[root@linuxprobe freetype-2.5.3]# cd ..
[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源码包是用于提供图形处理的服务程序,写入的是jpeg、libpng、freetype、tiff、libvpx等服务程序在系统中的安装路径,即在上面安装过程中使用–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/

在开始编译php源码包之前,先定义一个名为LD_LIBRARY_PATH的全局环境变量,该环境变量的作用是帮助系统找到指定的动态链接库文件。编译php服务源码包时,除了定义要安装到的目录以外,还需要依次定义配置php服务程序配置文件的保存目录、MySQL数据库服务程序所在目录、MySQL数据库服务程序配置文件所在目录,以及libpng、jpeg、freetype、libvpx、zlib、t1lib等服务程序的安装目录路径,并通过参数启动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.conf是php服务程序重要的配置文件之一,我们需要启用该配置文件中第25行左右的pid文件保存目录,然后分别将第148和149行的user与group参数分别修改为www账户和用户组名称:

[root@linuxprobe php-5.5.14]# vim /usr/local/php/etc/php-fpm.conf25 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配置文件,在305行的disable_functions参数后面追加上要禁止的功能

[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服务程序的主配置文件

第2行写上负责运行Nginx服务程序的账户名称和用户组名称;

第45行的index参数后面写上网站的首页名称。

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

[root@linuxprobe php-5.5.14]# vim /usr/local/nginx/conf/nginx.conf1 2 user www www;3 worker_processes 1;4 5 #error_log logs/error.log;6 #error_log logs/error.log notice;7 #error_log logs/error.log info;8 9 #pid logs/nginx.pid;10 11 
………………省略部分输出信息………………40 41 #access_log logs/host.access.log main;42 43 location / {44 root html;45 index index.html index.htm index.php;46 }47 
………………省略部分输出信息………………62 63 #pass the PHP scripts to FastCGI server listening on 127.0.0.1:900064 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 }72 
………………省略部分输出信息………………
[root@linuxprobe php-5.5.14]# systemctl restart nginx
[root@linuxprobe php-5.5.14]# systemctl restart php-fpm

至此,LNMP动态网站环境架构的配置实验全部结束。

3.搭建Discuz论坛

解压安装Discuz

解压后会在当前目录中出现一个名为upload的文件目录,这里面保存的就是Discuz。把Nginx服务程序网站根目录的内容清空后,就可以把这些这个目录中的文件都复制进去了。调整Nginx服务程序的网站根目录的所有者和所属组修改为本地的www用户,并为其赋予755权限以便于能够读、写、执行该论坛系统内的文件。

[root@linuxprobe php-5.5.14 ]# 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步:接受Discuz!安装向导的许可协议

在这里插入图片描述

第2步:检查Discuz! X3.2论坛系统的安装环境及目录权限。
在这里插入图片描述

第3步:选择“全新安装Discuz! X(含UCenter Server)”。UCenter Server是站点的管理平台,能够在多个站点之间同步会员账户及密码信息

在这里插入图片描述

第4步:填写服务器的数据库信息与论坛系统管理员信息

在这里插入图片描述

第5步:等待Discuz! X3.2论坛系统安装完毕

在这里插入图片描述

Discuz! X3.2论坛系统的首页界面

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_899437.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站站长必备的六款网页负载、网速性能测试工具

转自:http://www.cnplugins.com/zhuanti/sixwebmastertestplugins.html 有大数据表明,一个网页打开的速度超过4秒,用户就会关掉页面,对于网站来说就是流失到一个潜在的客户。有什么一些开发者插件可以帮助我们站在来及时的检测自己…

大型网站技术架构

作者:xlzd 链接:https://www.zhihu.com/question/20657269/answer/101795180 来源:知乎 著作权归作者所有,转载请联系作者获得授权。 1. 初始阶段的网站架构 一般来讲,大型网站都是从小型网站发展而来,一开…

Java开发牛人十大必备网站

本文由 ImportNew - 张文太 翻译自 programcreek。如需转载本文,请先参见文章末尾处的转载要求。 ImportNew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的 Java开发 小组。参与方式请查看小组简介。 以下是我收集的Java开发牛人必备…

Java开发牛人十大必备网站

本文由 ImportNew - 张文太 翻译自 programcreek。如需转载本文,请先参见文章末尾处的转载要求。 ImportNew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的 Java开发 小组。参与方式请查看小组简介。 以下是我收集的Java开发牛人必…

Python Django windows 环境配置---(网站开发)

学习做网站纯属个人的兴趣,就选择了Python对网站的开发。 下载Python 可以在Python官方网站下载下载完成以后就可以进行环境配置。环境配置路径就不做详细介绍了,可以在网上搜索出来。安装Django 在配置完Python以后就可以在Django官网下载程序包了&a…

java网上商城 购物网站 在线商品销售系统设计与实现 项目源代码下载 javaweb jsp ssm ssh mysql

1 前端商城界面 1.1 商城首页 首页分为三个部分,分别显示热销推荐、特价促销、新品上架三个推荐类目的商品列表 以上这三类推荐商品可以分别在后台管理中设置 点击商品图片或商品标题可以进入商品详情页面 点击【加入购物车】按钮会将次商品加入购物车 1.2 商品…

java农场商城 生鲜超市 水果蔬菜电商网站平台系统设计与实现 项目源代码下载 javaweb jsp ssm mysql

1 前端商城界面 1.1 商城首页 首页导航上有五个按钮,分别显示产品分类、商城首页、今日推荐、热销排行、新品上市,五个推荐类目的商品列表 首页很长说明书中1和2页均是首页,分六个部分,分别是今日推荐、热销排行、生态果蔬、肉禽…

java服装商城 男装女装童装鞋帽超市 购物网站系统设计与实现 项目源代码下载 javaweb jsp ssm mysql

1 前端商城界面 1.1 商城首页 首页分为三个部分,分别显示女装、男装、童装三个推荐类目的商品列表,以上这三类推荐商品可以分别在后台管理中设置,点击商品图片或商品标题可以进入商品详情页面 1.2 搜索功能 鼠标进入导航条上方的红色文本框…

dedecms 实现两个网站调用一个数据库

近年来移动端的流量上升,让我们不得不把眼光放在移动端上,程序猿都知道dedecms的wap不中用,标签少的可怜,没有静态化的功能,想调点数据,自己写sql语句,这东东如果用。于是,半路出家的…

搭建一个大型网站架构的实验环境(Squid缓存服务器篇)

squid缓存服务器的配置 squid缓存服务器在这个实验环境中有两台(192.168.10.30,192.168.10.31)做成squid集群,我们首先安装一台,然后复制一台,再做配置,这样省事,哈! squ…

12个顶级开发者社区网站帮助程序员走上人生巅峰

公元二十一世纪,世界迎来了大互联网时代,程序员这个行当已然成为了医生、律师等高端中产阶级职业之外的又一高薪职业。不过既然是技术职业,自然也 就会分三六九等,没理想的程序员只能写着自己擅长的代码,加着没玩没了的…

[转载]说说大型高并发高负载网站的系统架构

| 评论 # yueguoliang发表于2007-09-29 16:08:37IP: 211.94.149.* ju ti dian shuo ming fang an cai hao # fxbird发表于2007-09-29 16:19:19IP: 59.44.72.* 这才是高质量的文章。 # oldmoon发表于2007-09-29 17:36:43IP: 116.252.70.* 受益匪浅 # irplay发表于2007-09-30 09:…

互联网网站的反爬虫策略浅析(收藏)

关键字: crawler 因为搜索引擎的流行,网络爬虫已经成了很普及网络技术,除了专门做搜索的Google,Yahoo,微软,百度以外,几乎每个大型门户网站都有自己的搜索引擎,大大小小叫得出来名字得就几十种&…

LAMP网站架构方案分析

LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件&a…

【转】使用 Nginx 提升网站访问速度【反向代理】

Nginx 简介 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。 Igor 将源代码以类 …

HTML——简单的网站首页

学习记录帖&#xff08;一&#xff09; 简单的网站首页 这是我的一个记录帖&#xff0c;我是按照黑马程序员的视频学习的。 使用的是HBuilder&#xff0c;学习了html & css & js & jq & bootstrap。 成果 代码 <!DOCTYPE html> <html><head…

Web网站服务(Apache)

Apache网站服务基础 Apache HTTP server 是广泛应用的Web应用之一 Apache简介 Apache HTTP server 是开源软件项目的杰出代表&#xff0c;基于标准的HTTP网络协议提供网页浏览器&#xff0c;Apache服务器可以运行在Linux&#xff0c;UNIX&#xff0c;Windows等多种操作系统平…

使用 HttpWebRequest 向网站提交数据

转自&#xff1a;http://www.cnblogs.com/webman/archive/2006/11/17/564106.html HttpWebRequest 是 .net 基类库中的一个类&#xff0c;在命名空间 System.Net 下面&#xff0c;用来使用户通过 HTTP 协议和服务器交互。 HttpWebRequest 对 HTTP 协议进行了完整的封装&#x…

创建springboot项目时改为国内网站

总结 &#xff1a; 第一点&#xff1a;今天进行了蓝桥杯 的竞赛&#xff0c;说一说我的感悟&#xff0c;还是练得不够&#xff0c;其实有挺多熟悉的题&#xff0c;可是还是没做出来&#xff0c;还是征战明年的蓝桥杯吧&#xff0c;还有就是&#xff0c;电脑的问题&#xff0c;…

IISphpstudy搭建网站之:IIS切换phpstudy

为节省内存消耗&#xff0c;在同一台windows2003上搭建了IIS和phpstudy两种类型网站&#xff0c;但一次只开一种。 开启服务时发现&#xff0c;因都是使用80端口&#xff0c;所以会有冲突现象&#xff0c;一般IIS会开机自启&#xff0c;而启动phpstudy时经常报错显示端口被占用…