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');
创建相关数据库文件
验证
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
评论列表(1条)
1、排版很好,内容很完整。
2、请继续加油