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.www58058.com/52448
1、排版很好,內容很完整。
2、請繼續加油