马哥教育网络班21期+第12周课程练习

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

  • 建立或处理请求:接受请求或拒绝请求;

  • 接收请求:接收来自于网络的请求报文中对某资源的一次请求的过程;

  • 处理请求:对请求报文进行解析,并获取请求的资源及请求方法等相关信息;

  • 访问资源:获取请求报文中请求的资源;

  • 构建相应报文;

  • 发送响应报文;

  • 记录日志

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

  • prefork:多进程模型,每个进程响应一个请求;一个主进程,负责生成n个子进程,每个子进程响应一个用户请求;即时没有用户请求,也会预先生成多个空闲进程,随时等待请求到达;子进程最多不会超过1024个。

  • worker:多线程模型,每个线程响应一个请求;一个主进程,负责生成多个子进程,每个子进程负责生成多个线程,每个线程响应一个请求。

  • event:事件驱动模型,每个线程响应n个请求;一个主进程,生成m个子进程,每个进程响应n个请求。

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

安装httpd2.4

准备开发环境

# yum groupinstall -y "Development Tools" "Server Platform Development"

解决依赖关系

apr-1.4+,apr-util-1.4+,pcre-devel

安装httpd2.4

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

修改环境变量:

# vim /etc/profile.d/httpd24.sh
export PATH=/usr/local/apache/bin:$PATH
# . /etc/profile.d/httpd24.sh

修改并添加服务脚本

# chkconfig  --add httpd24

安装mariadb-5.5

创建用户及相关文件

# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
# chown -R mysql:mysql /mydata/data

安装并初始化mariadb

# tar xf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mariadb-5.5.36-linux-x86_64  mysql
# cd mysql 
# chown -R mysql:mysql ./
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
# chown -R root ./

提供配置文件

# cd /usr/local/mysql
# cp support-files/my-large.cnf  /etc/my.cnf
# vim /etc/my.cnf
datadir = /mydata/data

提供服务脚本并添加到服务列表

# cd /usr/local/mysql
# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld

安装php-5.4

解决依赖关系

# yum -y install bzip2-devel libmcrypt-devel libxml2-devel

编译安装php-5.4

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

提供配置文件

# cp php.ini-production /etc/php.ini

编辑httpd配置文件

# vim /etc/httpd24/httpd.conf
AddType application/x-httpd-php  .php
DirectoryIndex  index.php  index.html

测试

# vim /usr/local/apache/htdocs/index.php
<?php
    $conn=mysql_connect('127.0.0.1','root','');
    if ($conn)
        echo "ok";
    else
        echo "not ok";
    phpinfo();
?>

安装WordPress-4.5

# tar xf wordpress-4.5.3-zh_CN.tar.gz -C /usr/local/apache/htdocs/
# cd /usr/local/apache/htdocs/wordpress
# cp wp-config-sample.php wp-config.php
# vim !$
define('DB_NAME', 'wpdb');

/** MySQL数据库用户名 */
define('DB_USER', 'admin');

/** MySQL数据库密码 */
define('DB_PASSWORD', '000000');

/** MySQL主机 */
define('DB_HOST', 'localhost');

创建相关数据库文件

验证

验证WordPress.png

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

基于上一题目中编译安装的httpd进行配置

禁用中心主机

# vim /etc/httpd24/httpd.conf
#DocumentRoot "/usr/local/apache/htdocs"

编辑主配置文件使其可以读取/etc/httpd24/extra/httpd-vhosts.conf

# vim /etc/httpd24/httpd.conf
Include /etc/httpd24/extra/httpd-vhosts.conf

编辑虚拟主机

# vim /etc/httpd24/extra/httpd-vhosts.conf
<VirtualHost 192.168.71.130:80>
    ServerName www1.stuX.com
    DocumentRoot "/web/vhosts/www1"
    ErrorLog "/var/log/httpd/www1.err"
    CustomLog "/var/log/httpd/www1.access" common
</VirtualHost>
<Directory "/web/vhosts/www1">
    Options none
    Require all granted
</Directory>
<VirtualHost 192.168.71.130:80>
    DocumentRoot "/web/vhosts/www2"
    ServerName www2.stuX.com
    ErrorLog "/var/log/httpd/www2.err"
    CustomLog "/var/log/httpd/www2.access" common
</VirtualHost>
<Directory "/web/vhosts/www2">
    Options none
    Require all granted
</Directory>

提供主页面文件

验证虚拟主机

[root@www extra]# curl www1.stuX.com
<h1>www1.stuX.com </h1>
[root@www extra]# curl www2.stuX.com
<h1>www2.stuX.com<h1>

基于账号实现内置status页面的访问控制

# vim /etc/httpd24/extra/httpd-vhosts.conf
<Location /server-status>
    SetHandler server-status
    AuthType Basic
    AuthName "test status"
    AuthUserFile "/etc/httpd24/.htpasswd"
    Require valid-user
</Location>
# htpasswd -c -m /etc/httpd24/.htpasswd status

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

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

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

CA自签证书

[root@junfeng CA]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
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) [Default Company Ltd]:magedu
Organizational Unit Name (eg, section) []:ops
Common Name (eg, your name or your server's hostname) []:ca.magedu.com
Email Address []:

证书请求

[root@www httpd24]# openssl req -new -key ./httpd.key -days 365 -out ./httpd.csr
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) [Default Company Ltd]:magedu
Organizational Unit Name (eg, section) []:ops
Common Name (eg, your name or your server's hostname) []:www2.stuX.com
Email Address []:admin@stuX.com

修改主配置文件,加载相关模块

# vim /etc/httpd24/httpd.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
Include /etc/httpd24/extra/httpd-ssl.conf

修改http-ssl.conf

# vim /etc/httpd24/extra/httpd-ssl.conf
DocumentRoot "/web/vhosts/www2"
SSLCertificateFile "/etc/httpd24/httpd.crt"
SSLCertificateKeyFile "/etc/httpd24/httpd.key"

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

模块形式在上述过程即已实现

# vim /etc/httpd24/httpd.conf
LoadModule php5_module        modules/libphp5.so

以fpm工作为独立的进程

apache、MySQL和php的编译

apache和MySQL的编译安装与上述步骤相同,而对于php来说,在编译时要指明--enable-fpm,并且与之前不同的是要去掉--with-apxs2。

配置php-fpm

为php-fpm提供服务脚本,并添加至服务列表
# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
# chmod +x /etc/rc.d/init.d/php-fpm
# chkconfig --add php-fpm 
为php-fpm提供配置文件
# cp /PATH/TO/PHP_DIR/etc/php-fpm.conf.default /PATH/TO/PHP_DIR/etc/php-fpm.conf
根据主机参数配置相关php-fpm选项,并启用pid文件
# vim php-fpm.conf
pid=/PATH/TO/PID_OF_PHP-FPM
启动php-fpm
# service php-fpm start

原创文章,作者:Jeason,如若转载,请注明出处:http://www.178linux.com/52448

(0)
上一篇 2016-10-24 09:09
下一篇 2016-10-24 09:11

相关推荐

  • N25-第一周作业

    1、描述计算机的组成及其功能:   (1)按硬件来分,硬件系统主要有:运算器、控制器、存储器、输入设备和输出设备;    ① 控制器是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等;    ② 运算器的功…

    Linux干货 2016-12-05
  • systemd

    systemd的新特性(centos 7) 系统引导时实现服务并行启动 按需激活进程,在此之前可以让进程处于半活动状态 系统状态快照:能够自我保存当前系统上没一个用户空间的进程运行状态快照,将来可以迅速恢复到某一种状态,因此用户空间有了时间机器。可以回滚到过去某一时刻的状态 内在的基于依赖关系定义的服务控制逻辑 对与systemd来讲,引入了一个新的核心概念…

    Linux干货 2016-09-23
  • 学习宣言

     学习计划:参考N24学习时间与线路图,尽最大努力完成。 目标:学习好Linux,提升自我价值,找一份待遇好的工作。 宣言:每一次轻易的放弃,都是人生的一处败笔,为了梦想,加油!

    Linux资讯 2016-10-26
  • rsyslog将日志记录于MySQL中

    数据库服务器:CentOS7 192.168.119.159   日志:CentOS6 192.168.119.129     准备mysql数据库 和 用户账户 [root@localhost ~]# yum install mariadb-server   [root@localhost ~]# systemctl…

    2018-02-05
  • 2018/8/3作业

    问题: 在/data/testdir里创建的新文件自动属于g1组,组g2的成员如:alice能对这些新文件有读写权限,组g3的成员如:tom只能对新文件有读权限,其它用户(不属于g1,g2,g3)不能访问这个文件夹。 groupadd g1         &…

    Linux干货 2016-08-05
  • 逻辑卷管理器(LVM)-介绍

    逻辑卷管理器(LVM) §·逻辑卷管理器LVM介绍 2 ※·LVM逻辑卷的简单描述 2 ※·LVM逻辑卷的好坏 2 ※·LVM结构组成部分 2 §·LVM的举例分析 3 ※·LVM设备名称 3 ※·LVM分区类型: 3 ※·LVM  PV相关命令 3 ※·LVM  VG相关命令 3 ※·LVM  LV 相关命令 3 ※·LVM …

    Linux干货 2016-08-29

评论列表(1条)

  • 马哥教育
    马哥教育 2016-10-24 23:00

    1、排版很好,内容很完整。
    2、请继续加油