马哥教育网络班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)
JeasonJeason
上一篇 2016-10-24
下一篇 2016-10-24

相关推荐

  • ansible实战示例

    要求:     使用ansible部署以下任务:     (1) 在VS部署主/备模型的keepalived + nginx的负载均衡;     (2) 在RS主机上部署httpd + php + php-mysql;     (3) 在第五台主机上部署mariadb-serve…

    Linux干货 2016-11-11
  • 35个强大的UI设计教程

    下面是35个非常不错的UI设计的的教程及效果图,非常不错哦。不但教你如何做一些特效,同样教你如何做UI布局和界面设计。当然,他们风格迥异,也基本上都是Web页面上的。都非常不错。希望你喜欢。(点击下面的图片可以打开相关的教程) Old Paper Layout Professional Modern Web Layout Photography portfo…

    Linux干货 2015-04-01
  • 高效运维最佳实践(03):Redis集群技术及Codis实践

    前言 诚如开篇文章所言,高效运维包括管理的专业化和技术的专业化。前两篇我们主要在说些管理相关的内容,本篇说一下技术专业化。希望读者朋友们能适应这个转换,谢谢。 互联网早在几年前就已进入Web 2.0时代,对后台支撑能力的要求,提高了几十倍甚至几百倍。在这个演化过程中,缓存系统扮演了举足轻重的角色。 运维进化到今天,已经不是重复造轮子的时代。所以,我们在架构优…

    Linux干货 2015-04-03
  • keepalived实现前端负载均衡器的高可用

    概述:     在之前的内容中,我们了解了当一个网站并发量大时,可以利用前端负载均衡器将用户请求调度到后端的多个real server上,实现分散服务压力,横向扩展的方式,形成LB集群,但是试想一下,作为前端负载均衡器:     如果是LVS,万一作为前端调度器的Director…

    Linux干货 2016-11-01
  • 马哥教育网络班22期+第13周课程练习

    1、建立samba共享,共享目录为/data,要求:(描述完整的过程)   1)共享名为shared,工作组为magedu;   2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名; &n…

    Linux干货 2016-12-05
  • 初步了解计算机组成及Linux系统

    一、计算机的组成及其功能: 计算机主要由三部分组成: 输入单元:包括键盘、鼠标、卡片阅读器、扫描仪、手写板等。 输出单元使我们能够将一些数据输入到主机里,然后再由主机的功能处理成为图表或文章等信息后,将结果传输到输出设备,如屏幕或打印机上面。 中央处理器(CPU):其中包含算数逻辑、控制、记忆等单元。 CPU作为一个具有特定功能的芯片,里面含有微指令集,如果…

    Linux干货 2017-09-24

评论列表(1条)

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

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