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

相关推荐

  • btrfs文件系统及管理

      什么是btrfs? Btrfs(B-tree文件系统,通常念成Butter FS,Better FS或B-tree FS),linux文件系统,具有写时复制COW(copy-on-write),改善ext3文件系统单文件大小限制,并加入其他特性,如可写快照,快照的快照,内建RAID,子卷(subvloume),专注于容错,修复和易于管理。单文件…

    系统运维 2016-05-13
  • 马哥教育网络班21期+第15周课程练习

    1、总结sed和awk的详细用法; sed 流编辑器,处理一行数据到模式空间(p),不匹配条件话就输出源行,匹配条件且有处理话,就输出处理过后的行和源行, 匹配条件且没有处理动作的话,只输出p空间的行;保持空间(h)用来存放模式空间的临时处理结果 [root@centos ~]# sed ''&nb…

    Linux干货 2016-08-30
  • CentOS系统启动流程

        Linux系统的组成部分   1、动态视角:内核+根文件系统  2、静态视角:磁盘分区+文件 Linux运行中的系统环境   1、用户空间:应用程序(进程或线程)  2、内核空间:内核代码(系统调用) 内核设计流派:   *单内核设计:把所有功能集成于同一个程序,如:Linux  *微内核设计:每种功能使用一个单独的子系统实现,如…

    Linux干货 2016-12-30
  • OSI参考模型与TCP/IP参考模型的比较

    OSI参考模型与TCP/IP参考模型的比较 OSI参考模型 OSI参考模型是ISO的建议,它是为了使各层上的协议国际标准化而发展起来的。OSI参考模型全称是开放系统互连参考模型(Open System Interconnection Reference Model)。这一参考模型共分为七层:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 物理层…

    Linux干货 2017-05-07
  • shell练习

    1 、编写脚本/root/bin/systeminfo.sh, 显示当前主机系统信息, 包括主机名,IPv4 地址,操作系统版本,内核版本,CPU 型 号,内存大小,硬盘大小。 运行后结果是: 2 、编写脚本/root/bin/backup.sh ,可实现每日将/etc/ 目录备 份到/root/etcYYYY-mm-dd中 运行结果是: 3 、编写脚本/r…

    Linux干货 2016-08-15
  • 0809vim编辑器作业

    1、如何设置tab缩进为4个字符? :set tabstop=4 首先在命令扩展模式下列出所以set设置的相关选项set all  找到一个跟tab相关的选项,上网查了下意思,tabstop表示的意思就是制表为,他的默认值设置的为8,我们目的是4,那么在命令扩展模式下设置:set tabstop=4就OK了 2、复制/etc/rc.d/init.d…

    Linux干货 2016-08-09

评论列表(1条)

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

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