马哥教育网络19期+第十二周课程练习

1、请描述一次完整的http请求处理过程;

a.向根域名服务器请求解析域名,然后根服务器返回相应的IP信息;
b.用户的Web浏览器向服务器端的80端口通过三次握手建立TCP连接;
c.建立完TCP连接后发送HTTP请求,请求的格式包括请求方法、URL和协议版本号,方法有GET、HEAD、POST、PUT、DELETE、OPTIONS、TRACE,如:
    起始行:如 GET / HTTP/1.0 (请求的方法  请求的URL 请求所使用的协议)
    头部信息:User-Agent  Host等成对出现的值
    主体
d.服务器向客户端相应http的头信息,客户端收到后确认,然后http服务器发送数据;
e.浏览器接收到数据后,解析数据并通过浏览器把画面呈现给用户;
f.数据传送完成后,四次断开TCP连接;

2、httpd所支持的处理模型有哪些,他们的分别使用于哪些环境。

工作模型一共有三种:prefork、worker、event
prefork:多进程模型,每个进程响应一个请求。一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲进程,
         随时等待请求到达;最大不会超过1024个;
worker:多线程模型,每个线程响应一个请求;一个主进程:生成多个子进程,每个子进程负责生个多个线程,每个线程响应一个请求;
event:事件驱动模型,每个线程响应n个请求;一个主进程:生成m个子进程,每个子进程直接响应n个请求;

适合的场景:
perfork:它适合于没有线程安全库,需要避免线程兼容性问题的系统;
worker:适合内存占用量比较小,适合高流量的http服务器。缺点是假如一个线程崩溃,整个进程就会连同其任何线程一起”死掉”;
总的来说,prefork方式速度要稍高于worker,然而它需要的cpu和memory资源也稍多于woker。

3、源码编译安装LAMP环境(基于wordpress程序),并写出详细的安装、配置、测试过程。

[root@Hao ~]# cd /usr/local/src
[root@Hao src]# ls
apr-1.5.2.tar.bz2       httpd-2.4.23.tar.bz2                 php-5.5.38.tar.gz
apr-util-1.5.4.tar.bz2  mysql-5.5.50-linux2.6-x86_64.tar.gz
httpd2.4的版本需要新版的apr和apr-util,所以需要编译安装apr和apr-util
[root@Hao src]# tar xf apr-1.5.2.tar.bz2 
[root@Hao src]# cd apr-1.5.2
[root@Hao apr-1.5.2]# ./configure --prefix=/usr/local/apr  
[root@Hao apr-1.5.2]# make && make install
[root@Hao apr-1.5.2]# cd ..
[root@Hao src]# tar xf apr-util-1.5.4.tar.bz2 
[root@Hao src]# cd apr-util-1.5.4
[root@Hao apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr 
[root@Hao apr-util-1.5.4]# make && make install

–prefix是指定安装路径 –with-apr是安装apr-util时指定apr的安装目录

下面编译安装httpd

[root@Hao apr-util-1.5.4]# yum -y install pcre-devel
[root@Hao apr-util-1.5.4]# yum -y install openssl-devel
[root@Hao src]# tar xf httpd-2.4.23.tar.bz2 
[root@Hao src]# cd httpd-2.4.23
[root@Hao httpd-2.4.23]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi 
                         --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util 
                         --enable-modules=most --enable-mpms-shared=all --with-mpm=event
[root@Hao httpd-2.4.23]# make && make install

修改httpd主配置文件,设置pid文件的路径,编辑/etc/httpd/httpd.conf,添加内容如下:

PidFile  "var/run/httpd.pid"

提供SysV服务脚本/etc/rc.d/init.d/httpd,内容如下:

#!/bin/bash
#
# httpd        Startup script for the Apache HTTP Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server.  It is used to serve \
#        HTML files and CGI.
# processname: httpd
# config: /etc/httpd/conf/httpd.conf
# config: /etc/sysconfig/httpd
# pidfile: /var/run/httpd.pid

# Source function library.
. /etc/rc.d/init.d/functions

if [ -f /etc/sysconfig/httpd ]; then
        . /etc/sysconfig/httpd
fi

# Start httpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-"C"}

# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""

# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.

# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0

start() {
        echo -n $"Starting $prog: "
        LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
}

stop() {
  echo -n $"Stopping $prog: "
  killproc -p ${pidfile} -d 10 $httpd
  RETVAL=$?
  echo
  [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
    echo -n $"Reloading $prog: "
    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
        RETVAL=$?
        echo $"not reloading due to configuration syntax error"
        failure $"not reloading $httpd due to configuration syntax error"
    else
        killproc -p ${pidfile} $httpd -HUP
        RETVAL=$?
    fi
    echo
}

# See how we were called.
case "$1" in
  start)
  start
  ;;
  stop)
  stop
  ;;
  status)
        status -p ${pidfile} $httpd
  RETVAL=$?
  ;;
  restart)
  stop
  start
  ;;
  condrestart)
  if [ -f ${pidfile} ] ; then
    stop
    start
  fi
  ;;
  reload)
        reload
  ;;
  graceful|help|configtest|fullstatus)
  $apachectl $@
  RETVAL=$?
  ;;
  *)
  echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
  exit 1
esac

exit $RETVAL

然后给脚本执行权限:
[root@Hao ~]# chmod +x /etc/rc.d/init.d/httpd
[root@Hao ~]# chkconfig --add httpd
[root@Hao ~]# service httpd start
[root@Hao ~]# chkconfig httpd on

安装mysql服务

[root@Hao ~]# groupadd -r mysql
[root@Hao ~]# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
[root@Hao ~]# chown -R mysql:mysql /mydata/data
[root@Hao src]# tar xf mysql-5.5.50-linux2.6-x86_64.tar.gz 
[root@Hao src]# ln -sv mysql-5.5.50-linux2.6-x86_64 mysql
"mysql" -> "mysql-5.5.50-linux2.6-x86_64"
[root@Hao src]# cd mysql
[root@Hao mysql]# chown -R mysql:mysql .
[root@Hao mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
[root@Hao mysql]# chown -R root .
为mysql提供主配置文件[root@Hao mysql]# cp support-files/my-large.cnf /etc/my.cnf
并且修改复制后的文件内的CPU个数的配置,我用的虚拟机,所以CPU个数为1,修改为CPU个数*2即可
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 2
为mysql提供sysv服务脚本
[root@Hao mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@Hao mysql]# chmod +x /etc/rc.d/init.d/mysqld
[root@Hao mysql]# chkconfig --add mysqld
[root@Hao mysql]# chkconfig mysqld on

4、建立httpd服务器(基于编译的方式进行),要求:

     提供两个基于名称的虚拟主机:

    (a)www1.stuX.com,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1.err,访问日志为/var/log/httpd/www1.access;

    (b)www2.stuX.com,页面文件目录为/web/vhosts/www2;错误日志为/var/log/httpd/www2.err,访问日志为/var/log/httpd/www2.access;

    (c)为两个虚拟主机建立各自的主页文件index.html,内容分别为其对应的主机名;

    (d)通过www1.stuX.com/server-status输出httpd工作状态相关信息,且只允许提供帐号密码才能访问(status:status);

先创建几个目录和文件:
mkdir /web/vhosts/www{1,2} -p
touch /var/log/httpd/www{1,2}.{err,access}

编辑配置文件/etc/httpd/conf/httpd.conf

NameVirtualHost 192.168.0.130:80
<VirtualHost192.168.0.130:80>
    DocumentRoot /web/vhosts/www1
    ServerName www1.stu31.com
    ErrorLog "/var/log/httpd/www1.err"
    CustomLog"/var/log/httpd/www1.access" combind
    <Location/server-status>                        /*
        SetHandler server-status
        Authtype   Basic
        Authname   "status area"                       这部分是用户认证配置
        AuthUserFile  /etc/httpd/users/.htpasswd
        Require valid-user
    </Location>                                    */
</VirtualHost>
 
<VirtualHost192.168.0.130:80>
    DocumentRoot /web/vhosts/www2
    ServerName www2.stu31.com
    ErrorLog"/var/log/httpd/www2.err"
    CustomLog"/var/log/httpd/www2.access" combind
</VirtualHost>

建立用户访问的认证文件:

# mkdir /etc/httpd/users
# htpasswd-c -m /etc/httpd/users/.htpasswd status
New password:
Re-type newpassword:
Adding passwordfor user status
然后重启服务
# service httpd restart

5、为第4题中的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;

   (1)要求使用证书认证,证书中要求使用的国家(CN)、州(HA)、城市(ZZ)和组织(MageEdu);

   (2)设置部门为Ops,主机名为www2.stuX.com,邮件为admin@stuX.com;

(a).建立私有CA认证服务器:
# cd /etc/pki/CA/
# (umask 077; openssl genrsa-out private/cakey.pem 2048)  
# openssl req -new -x509 -keyprivate/cakey.pem -out cacert.pem -days 3650
You are about to be asked to enterinformation that will be incorporated
into your certificate request.
What you are about to enter is what iscalled a Distinguished Name or a DN.
There are quite a few fields but you canleave some blank
For some fields there will be a defaultvalue,
If you enter '.', the field will be leftblank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:HA
Locality Name (eg, city) [Default City]:ZZ
Organization Name (eg, company) [DefaultCompany Ltd]:Magedu
Organizational Unit Name (eg, section)[]:Ops
Common Name (eg, your name or your server'shostname) []:www2.stu31.com
Email Address []:admin@stuX.com
# touch index.txt
# touch serial
# echo 01 >serial
(b).给http服务器生成证书
# mkdir /etc/httpd/certs
# cd /etc/httpd/certs
# (umask 077; opensslgenrsa -out httpd.key 2048)
# openssl req -new -keyhttpd.key -out httpd.csr -days 3650
You are about to be asked to enterinformation that will be incorporated
into your certificate request.
What you are about to enter is what iscalled a Distinguished Name or a DN.
There are quite a few fields but you canleave some blank
For some fields there will be a defaultvalue,
If you enter '.', the field will be leftblank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:HA
Locality Name (eg, city) [Default City]:ZZ
Organization Name (eg, company) [DefaultCompany Ltd]:Magedu
Organizational Unit Name (eg, section)[]:Ops
Common Name (eg, your name or your server'shostname) []:www2.stu31.com
Email Address []:admin@stuX.com
 
Please enter the following 'extra'attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
(c) 配置httpd服务使用数字证书
#CA服务器签署请求证书
[root@www certs]# ls
httpd.csr httpd.key
[root@www certs]# openssl ca -in httpd.csr-out httpd.crt -days 3650
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches thesignature
Signature ok
Certificate Details:
       Serial Number: 1 (0x1)
       Validity
           Not Before: Dec 13 05:30:19 2014 GMT
           Not After : Dec 10 05:30:19 2024 GMT
       Subject:
            countryName               = CN
           stateOrProvinceName       = HA
           organizationName          = stu31
           organizationalUnitName    = tech
           commonName                =www2.stu31.com
           emailAddress              = admin@stu31.com
       X509v3 extensions:
           X509v3 Basic Constraints:
                CA:FALSE
           Netscape Comment:
                OpenSSL Generated Certificate
           X509v3 Subject Key Identifier:
               9A:84:73:63:C0:82:7F:45:21:9C:BA:2B:4C:FB:C3:87:7C:BA:63:58
           X509v3 Authority Key Identifier:
               keyid:1C:57:C2:12:E4:D3:A6:4F:9A:7A:C6:53:7F:5B:7B:86:1E:75:0D:57
 
Certificate is to be certified until Dec 1005:30:19 2024 GMT (3650 days)
Sign the certificate? [y/n]:y
 
 
1 out of 1 certificate requests certified,commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
 
(d)配置https服务器加密传输
针对Apache httpd软件默认配置中:
httpd软件默认没有使用ssl模块,需要安装相应的模块程序包
[root@www certs]# yum install mod_ssl -y
[root@www ~]# rpm -qa mod_ssl
mod_ssl-2.2.15-39.el6.centos.x86_64
 
安装之后会在/etc/httpd/conf.d/目录下生成ssl.conf的配置文件,我们配置https就在此文件中配置:
[root@www conf.d]# ls
mod_dnssd.conf  README ssl.conf  welcome.conf
 
配置ssl.conf文件,重要配置都在下面文件中了:
[root@www conf.d]#vim  /etc/httpd/conf.d/ssl.conf
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost 192.168.0.130:443>
         DocumentRoot"/web/vhosts/www2"
         ServerName  www2.stuX.com:443
         SSLEngineon
         SSLCertificateFile  /etc/httpd/certs/httpd.crt
         SSLCertificateKeyFile  /etc/httpd/certs/httpd.key
</VirtualHost>

6、在LAMP架构中,请分别以php编译成httpd模块形式和php以fpm工作为独立守护进程的方式来支持httpd,列出详细的过程。

# yum -y install pcre-devel     //先安装好必要的,省的一会报错
编译安装apr
# tar xf apr-1.5.2.tar.bz2
# cd apr-1.5.2
# ./configure –prefix=/usr/local/apr
# make && make install
编译安装apr-util
# tar xf apr-util-1.5.4.tar.bz2
# cd apr-util-1.5.4
# ./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr
# make && make install
编译httpd:
# tar xf httpd-2.4.23.tar.bz2
# cd httpd-2.4.23
# ./configure –prefix=/usr/local/apache –sysconfdir=/etc/http24 –enable-so –enable-modules=most –enable-mods-shared=most –# enable-proxy –enable-proxy-fcgi –enable-mpms-shared=all –enable-cgi –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util –with-z –with-ssl –with-mpm=event –enable-rewrite
# make && make install
编辑配置文件vim /etc/http24/httpd.conf,加入一下内容:
DirectoryIndex index.php index.html
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

给http提供服务脚本

#!/bin/bash
#
# httpd        Startup script for the Apache HTTP Server
#
# chkconfig: – 85 15
# description: Apache is a World Wide Web server.  It is used to serve \
#        HTML files and CGI.
# processname: httpd
# config: /etc/httpd/conf/httpd.conf
# config: /etc/sysconfig/httpd
# pidfile: /var/run/httpd.pid

# Source function library.
. /etc/rc.d/init.d/functions

if [ -f /etc/sysconfig/httpd ]; then
        . /etc/sysconfig/httpd
fi

# Start httpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-"C"}

# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""

# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.

# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0

start() {
        echo -n $"Starting $prog: "
        LANG=$HTTPD_LANG daemon –pidfile=${pidfile} $httpd $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
}

stop() {
  echo -n $"Stopping $prog: "
  killproc -p ${pidfile} -d 10 $httpd
  RETVAL=$?
  echo
  [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
    echo -n $"Reloading $prog: "
    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
        RETVAL=$?
        echo $"not reloading due to configuration syntax error"
        failure $"not reloading $httpd due to configuration syntax error"
    else
        killproc -p ${pidfile} $httpd -HUP
        RETVAL=$?
    fi
    echo
}

# See how we were called.
case "$1" in
  start)
  start
  ;;
  stop)
  stop
  ;;
  status)
        status -p ${pidfile} $httpd
  RETVAL=$?
  ;;
  restart)
  stop
  start
  ;;
  condrestart)
  if [ -f ${pidfile} ] ; then
    stop
    start
  fi
  ;;
  reload)
        reload
  ;;
  graceful|help|configtest|fullstatus)
  $apachectl $@
  RETVAL=$?
  ;;
  *)
  echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
  exit 1
esac

exit $RETVAL

然后把脚本加入服务中:

chmod +x /etc/init.d/httpd24
chkconfig –add httpd24
service httpd24 start

在192.168.0.131主机上安装mariadb,二进制包安装。

# tar zxvf mariadb-5.5.36-linux-x86_64.tar.gz
# mv mariadb-5.5.36-linux-x86_64 /usr/local/
# ln -sv /usr/local/mariadb-5.5.36-linux-x86_64 /usr/local/mysql
# `/usr/local/mysql' -> `/usr/local/mariadb-5.5.36-linux-x86_64'
# mkdir /etc/mysql
# cp /usr/local/mysql/support-files/my-large.cnf /etc/mysql/my.cnf
编译这个配置文件,加入 datadir=/data
然后,我们需要创建这个数据库的数据目录:
# mkdir /data
# groupadd -r mysql
# useradd -r -g mysql mysql
# chown mysql:mysql /data
# cd /usr/local/mysql
# chown -R mysql:mysql ./
然后,我们就要进行数据库的初始化:
# ./scripts/mysql_install_db –user=mysql –datadir=/data –basedir=/usr/local/mysql
我们要为数据库提供服务脚本:
# cp support-files/mysql.server /etc/init.d/mysqld
把这个脚本放到服务脚本中去:
# chmod +x /etc/init.d/mysqld
# chkconfig –add mysqld
# service mysqld start

修改mysql的PATH环境变量

# vim /etc/profile.d/mysql.sh
内容如下:
export PATH=/usr/local/mysql/bin:$PATH
# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.36-MariaDB-log MariaDB Server
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
表明我们已经可以用mysql客户端登进服务器端了,我们为了等一下的测试先创建一个用户:
MariaDB [(none)]> grant all on *.* to 'liang'@192.168.0.131 identified by 'liang';
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
然后,我们可以退出了!

切换到192.168.0.130的php服务器上:

# yum install -y libxml2-devel
# yum -y install bzip2-devel libmcrypt-devel
# tar xf php-5.4.19.tar.bz2
# cd php-5.4.19
# ./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache/bin/apxs –with-config-file-path=/etc –with-config-file-scan-dir=/etc/php.d –with-libxml-dir=/usr –with-zlib –with-bz2 –enable-xml –with-jpeg-dir –with-png-dir –with-freetype-dir –enable-mbstring –with-mcrypt –enable-sockets –with-mysql=mysqlnd –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –enable-maintainer-zts
# cp php.ini-production /etc/php.ini
# vim /usr/local/apache/htdocs/index.php   内容如下:
    <?php
        phpinfo();
    ?>
    <?php
        $con=mysql_connect('192.168.236.129','bwei','bwei');
        if($con)
        echo "ok!!";
        else
        echo "false!!";
        mysql_close();
    ?>
我们给php解析器加上组件xcache,先编译xcache:
# tar xf xcache-3.1.0.tar.bz2
# cd xcache-3.1.0
# /usr/local/php/bin/phpize 
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525
这是为了xcache提供configure文件。
# ./configure –enable-xcache –with-php-config=/usr/local/php/bin/php-config –sysconfdir=/etc/php.d
# make && make install
安装后,会出现这个 Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20100525/
我们把这个路径复制一下,然后,把这个路径下的模块写到xcacahe的配置文件下:
# mkdir /etc/php.d
# cp xcache.ini /etc/php.d/
# vim /etc/php.d/xcache.ini
修改下面项:
extension =/usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
重启一下服务器:service httpd24 restart
然后,我们在上面安装一个phpadmin:
# unzip phpMyAdmin-4.0.5-all-languages.zip
# mv phpMyAdmin-4.0.5-all-languages /usr/local/apache/htdocs/phpadmin
# cd /usr/local/apache/htdocs/phpadmin/
提供phpadmin的配置文件:
# cp config.sample.inc.php config.inc.php
编辑这个配置文件,修改这一项:
$cfg['Servers'][$i]['host'] = '192.168.236.129';

基于fpm的PHP

http服务器:192.168.0.130;php解析器 mysql服务器:192.168.0.131

cp sapi/fpm/init.d.php-fpm /etc/init.d/fpm
chmod +x /etc/init.d/fpm
chkconfig –add fpm
给php解析器提供配置文件:
cp php.ini-production /etc/php.ini
为fpm提供服务配置文件:
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
编辑这个配置文件,修改以下几项:
listen = 192.168.236.129:9000
pm.max_children = 30
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 8
启动服务:service fpm start
ss -tnlp 查看服务是否开启:
users:(("master",1947,12))
LISTEN      0      128                                                                192.168.0.131:9000                                                                            *:*      users:(("php-fpm",122099,7),("php-fpm",122100,0),("php-fpm",122101,0),("php-fpm",122102,0),("php-fpm",122103,0),("php-fpm",122104,0))
好了,我们再为php解析器提供xcache:
tar xf xcache-3.1.0.tar.bz2
cd xcache-3.1.0
# /usr/local/php/bin/phpize 
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525
这是为了xcache提供configure文件。
./configure –enable-xcache –with-php-config=/usr/local/php/bin/php-config –sysconfdir=/etc/php.d
make && make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
我们把这个路径复制一下,然后,把这个路径下的模块写到xcacahe的配置文件下:
mkdir /etc/php.d
cp xcache.ini /etc/php.d/
vim /etc/php.d/xcache.ini
修改下面项:
extension =/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so
重启一下服务:
service fpm restartservice fpm restart
配置http主机(192.168.0.130)
vim /etc/http24/httpd.conf
把这项注释(表示不启用php解析器作为http功能里):
#LoadModule php5_module        modules/libphp5.so
把下面的功能启动:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
然后在后面的配置文件中增加以下配置:
ProxyRequests Off
ProxyPassMatch  ^/(.*\.php)$ fcgi://192.168.0.131:9000/php/$1
切换到php解析器的主机,为这个主机提供phpadmin作为测试:
mkdir /php
mv phpMyAdmin-4.0.5-all-languages /php/phpadmin
cd /php/phpadmin/
提供phpadmin的配置文件:
cp config.sample.inc.php config.inc.php

原创文章,作者:Net19_口香糖,如若转载,请注明出处:http://www.178linux.com/30854

(0)
Net19_口香糖Net19_口香糖
上一篇 2016-08-22
下一篇 2016-08-22

相关推荐

  • Linux基础学习总结(六)

    一、创建一个10G分区,并格式为ext4文件系统; 1、要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; [root@blog ~]# fdisk /dev/sdfCommand (m for help): nCommand action e extended p primary partition (1…

    2016-11-06
  • 关于大型网站技术演进的思考(一):存储的瓶颈(1)

    原文出处: 夏天的森林  前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出全部听到的知识,今天我换了个思路是回味这次培训,这个思路就是通过本人目前的经验和技术水平来思考下大型网站技术演进的过程。 首先我们要思考一个问题,什么样的网站才是大型网…

    Linux干货 2015-02-26
  • HA cluster原理

    HA cluster 一、什么是高可用集群   高可用集群就是当某一个节点或服务器发生故障时,另一个节点能够自动且立即向外提供服务,即将有故障节点上的资源转移到另一个节点上去,这样另一个节点有了资源既可以向外提供服务。高可用集群是用于单个节点发生故障时,能够自动将资源、服务进行切换,这样可以保证服务一直在线。在这个过程中,对于客户端来说是透明的。 …

    2016-11-27
  • 初学正则表达式

      前言:     在学正则表达式之前,有小伙伴讲解说,正则表达式在文本处理上功能非常强大、使用非常普遍,并且现在很多的工具软件都支持它,以后的学习工作中会经常使用,非常灵活,但是灵活的同时又是繁琐,需要小心翼翼的仔细推敲。抱着认真、好奇的心思听完了王老的课。我自己理解的正则表达式是,给一些符号赋予一定的涵义…

    Linux干货 2016-08-12
  • https搭建

    https             http over ssl = https 443/tcp                 ssl: v3           &nb…

    Linux干货 2016-06-28
  • 给linux系统添加新的磁盘

    虚拟化环境中,我们经常会遇到需要增加磁盘容量的情况,通常有两种方式,第一种是添加一块新的硬盘,另一种是扩容原有磁盘,以下是添加新磁盘至linux系统的操作规范。注:具体磁盘信息可能有所不同。 ##查看新增加磁盘/dev/sdb的信息 [root@CentOS7 ~]# fdisk -l /dev/sdb   Disk /dev/sdb: 5368 …

    Linux干货 2016-11-11

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-22 15:16

    写的很好,排版还可以在漂亮一点,加油,都出界了