N21沉舟11周作业

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

(1) 建立或处理连接:接收请求或拒绝请求
(2) 接收请求:
(3) 处理请求:对请求报文进行解析,并获取请求的资源及请求方法等相关信息
(4) 访问资源:获取请求报文中请求的资源
(5) 构建响应报文
(6) 发送响应报文
(7) 记录日志

http.jpg

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

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

http_mpm多路处理模块.jpg

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

解决依赖关系
# yum -y groupinstall "Desktop Platform Development" 
# yum -y install bzip2-devel libmcrypt-devel libxml2-devel
安装apr 1.52和 apr-util1.54
#wget http://apache.fayea.com//apr/apr-util-1.5.4.tar.gz安装pcre-devel#groupadd -r apache
编译安装httpd 2.4.23
#wget http://apache.fayea.com//apr/apr-1.5.2.tar.gz
#tar 
#cd
./configure --prefix=/usr/local/apr
make & make install
tar 
cd
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make & make install
#yum install pcre-devel
#yum install openssl-devel
#创建用户名和组
useradd -r -g apache   apache
wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.23.tar.gz
 tar
cd
./configure --prefix=/usr/local/apache --sysconf=/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=prefork
# make && make install
编译安装mariadb
1、准备数据目录
             以/mydata/data为例
2、配置mariaDB
            #groupadd -r -g ### mysql
            #useradd -r -g ### -u ### mysql
            #tar xf ******.gz   -C /usr/local
            #ln -sv  ***** mysql
            #cd /usr/local/mysql
            #chown -R root:mysql ./*
            #scripts/mysql_install_db --datadir=/mydqta/data  --user=mysql
            #cp supper_file/mysql.server  /etc/rc.d/init.d/mysqld
3、配置文件
            配置文件查找次序
                   /etc/my.cnf ---->/etc/mysql/my.cnf---> --default-extra-file=/path/to/conf-file--->~/.my.cnf
            #cp support_files/my-large.cnf  /etc/mysql/my.cnf
               添加三个选项
                    datadir=/mydata/data
                    innodb_file_pre_table=on          #使用单独配置文件
                    skip_name_resolve=on             #跳过主机名称反写
 安全初始化
             mysql/bin/mysql_secure_installation
编译安装php
安装依赖
yum install openssl-devel  libxml2-devel
安装libcurl7.28
 wget https://curl.haxx.se/download/curl-7.28.0.tar.gz --no-check-certificate
tar
cd
./configure --prefix=/usr/local/curl
下载php
http://cn2.php.net/distributions/php-5.6.26.tar.gz
tar
cd
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --without-pear --with-zlib --enable-pdo --with-pdo-mysql --with-mysql --with-curl=/usr/local/curl
make & make install
修改配置文件:
php-fpm脚本
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
生成php-fpm配置文件
cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
修改 /usr/local/etc/php-fpm.conf
user = daemon
group = daemon
listen = /dev/shm/php-fpm.sock
listen.owner = daemon
listen.group = daemon
pm = static
pm.max_children = 4
pm.max_requests = 2048
修改/etc/httpd24/httpd.conf
添加
AddType application/x-httpd-php  .php
   AddType application/x-httpd-php-source  .phps
 DirectoryIndex  index.php  index.html
去掉mod_proxy.so和mod_proxy_fcgi.so之前的注释,确保他们被apache加载
在行尾添加
<FilesMatch \.php$>
         SetHandler "proxy:fcgi://127.0.0.1:9000"</FilesMatch>
运行service php-fpm start,并查看9000端口是否监听
安装wordpress
 wget https://cn.wordpress.org/wordpress-4.5.3-zh_CN.tar.gz
tar xvf  wordpress-4.5.3-zh_CN.tar.gz
mv workpress-4.5.3 /var/www/html/
mv workpress-4.5.3 wd
使用http://host_IP/wd 开始安装

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);

注释配置文件中DocumentRoot条目 ,创建如下配置块
<VirtualHost *:80>
    DocumentRoot "/web/vhosts/www1"
    ServerName  www1.stuX.com
    ErrorLog "/var/log/httpd/www1.err"
    CustomLog "/var/log/httpd/www1.access" common
<Location /server-status>
    SetHandler server-status
    Options None
    AllowOverride None
    AuthType Basic
    AuthName "this zone just admin visit!"
    AuthUserFile "/etc/httpd24/ssl/pw"
    Require user tom
</Location>
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot "/web/vhosts/www2"
    ServerName www2.stuX.com
    ErrorLog "/var/log/httpd/www2.err"
    CustomLog "/var/log/httpd/www1.access" common
</VirtualHost>
#使用htpasswd -c /etc/httpd24/ssl/pw tom创建tom用户和密码

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

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

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





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

   #环境centos 6.3 , httpd2.4 ,
#编译为fpm
  
安装依赖
yum install openssl-devel  libxml2-devel
安装libcurl7.28
 wget https://curl.haxx.se/download/curl-7.28.0.tar.gz --no-check-certificate
tar
cd
./configure --prefix=/usr/local/curl
下载php
http://cn2.php.net/distributions/php-5.6.26.tar.gz
tar
cd
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --without-pear --with-zlib --enable-pdo --with-pdo-mysql --with-mysql --with-curl=/usr/local/curl
make & make install
修改配置文件:
php-fpm脚本
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
生成php-fpm配置文件
cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
修改 /usr/local/etc/php-fpm.conf
user = daemon
group = daemon
listen = /dev/shm/php-fpm.sock
listen.owner = daemon
listen.group = daemon
pm = static
pm.max_children = 4
pm.max_requests = 2048
修改/etc/httpd24/httpd.conf
添加
AddType application/x-httpd-php  .php
   AddType application/x-httpd-php-source  .phps
 DirectoryIndex  index.php  index.html
去掉mod_proxy.so和mod_proxy_fcgi.so之前的注释,确保他们被apache加载
在行尾添加
<FilesMatch \.php$>
         SetHandler "proxy:fcgi://127.0.0.1:9000"</FilesMatch>
运行php-fpm,并查看9000端口是否监听
##############################################################################

#编译为模块
1、解决依赖关系:
请配置好yum源(系统安装源及epel源)后执行如下命令:
# yum -y groupinstall "Desktop Platform Development" 
# yum -y install bzip2-devel libmcrypt-devel libxml2-devel
2、编译安装php-5.4.26
下载源码包
http://cn2.php.net/distributions/php-5.6.26.tar.gz
# tar xf php-5.6.26.tar.gz
# cd php-5.6.26
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2  --enable-maintainer-zts
说明:
这里为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项。
# make
# make test
# make intall
为php提供配置文件:
# cp php.ini-production /etc/php.ini
新增加环境变量
# 
cat
 /etc/profile.d/apache.
sh
PATH
=/usr/local/php/
bin:$PATH
export PATH
3、 编辑apache配置文件httpd.conf,以apache支持php
 
 # vim /etc/httpd/httpd.conf
 1、添加如下二行
   AddType application/x-httpd-php  .php
   AddType application/x-httpd-php-source  .phps
 2、定位至DirectoryIndex index.html 
   修改为:
    DirectoryIndex  index.php  index.html
而后重新启动httpd,或让其重新载入配置文件即可测试php是否已经可以正常使用。
测试页面index.php示例如下:
    <?php
    phpinfo();      
    ?>

原创文章,作者:N21-沉舟,如若转载,请注明出处:http://www.178linux.com/48982

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-27 09:23

    写的很好,图画的也很好,就是排版有点问题,还有一个题怎么没写那?