马哥教育网络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

相关推荐

  • 正则表达式简述

    正则表达式简述 什么是正则表达式: 正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。 正则表达式分类: 标准正…

    Linux干货 2016-04-05
  • ping命令的部分用法

    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”不能打开网页时会说“你先ping网关地址192.168.1.1试试”。它通过发送ICMP ECHO_REQUEST数据包到网络主机(send ICMP ECHO_REQUEST to&nbsp…

    Linux干货 2017-07-30
  • shell脚本编程之一

    shell脚本编程之一 shell脚本基础 shell脚本是包含一些命令或声明,并符合一定格式的文本文件 格式要求:首行shebang机制 #!/bin/bash #!/usr/bin/python #!/usr/bin/perl shell脚本的用途有: 自动化常用命令 执行系统管理和故障排除 常见简单的应用程序 处理文本或文件 创建shell脚本 第一步…

    Linux干货 2016-08-18
  • 基于Keepalived实现LVS双主高可用集群

    前言 前面说过基于heartbeat的LVS高可用方案,今天带来另一种解决方案:基于Keepalived实现LVS双主高可用集群。什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了, 也就是所谓的高可用或热备,用来防止单点故障的发生。本文将详细讲述Keepalived工作原理及高可用解决方案的实现。 相关介绍 K…

    Linux干货 2015-06-16
  • Linux下的网络配置方法(一)

        Linux的网络配置方法有多种,而且随发行版及版本而略微不同。我目前的测试环境为CentOS6和CentOS7。     常用的网络配置命令或方法有:ifconfig,route,netstat,ip,ss,nmcli,配置文件。 一、简介   &nb…

    Linux干货 2015-12-15
  • 马哥教育第20期一班第一周博客

    Linux入门 1、Linux的哲学思想 一切皆文件(硬件设备亦表现为文件) 由众多目的单一的小程序组成;一个程序只做一件事,并且要做好 组合小程序完成复杂任务 尽可能避免跟用户交互 使用文本文件保存配置信息 提供机制,而非策略 2、常用命令 id命令 简介:   id – print real a…

    Linux干货 2016-07-26

评论列表(1条)

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

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