馬哥教育網絡班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.www58058.com/52448

(0)
JeasonJeason
上一篇 2016-10-24
下一篇 2016-10-24

相關推薦

  • linux 啟動管理

    1、Linux系統啟動流程:POST 加電自檢 — BIOS(Boot Sequence)–>MBR(bootloader,446)(加載前512字節后的驅動程序,進入/boot目錄,加載內核)–>Kernel–>initrd–>(系統根路徑 /)(ROOTFS)/sbin/…

    Linux干貨 2017-09-03
  • 第二周博客作業

    一、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示 Linux文件管理類命令有cp、mv、rm 1、cp命令:copy files and directories 使用方法: 單源復制cp [OPTION]… [-T] SOURCE DEST1)如果DEST不存在,則事先創建此文件,并復制源文件的數據流至DEST中2)如果…

    Linux干貨 2016-12-13
  • lvs應用

    練習一:負載均衡一個php應用: 測試是否需要會話保持; 是否需要用到共享存儲;    為了檢測是否需要會話保持和共享存儲,要在兩臺主機上分別配置LAMP環境;這樣就使得兩者之間沒有了共享存儲;負載均衡使用nat模型的wlc算法,并且不使用lvs的長連接選項。數據庫故意使用了相同的賬號密碼來進行安裝。 步驟一:配置環境: 使用yum分別安…

    Linux干貨 2016-11-11
  • 邏輯卷的命令解析

    前言    lvm是logical volume manager(邏輯卷管理器)的簡稱,通過將若干個磁盤分區連接成一個整塊的卷組(volumegroup),形成一個存儲池,管理員可以在卷組上隨意創建邏輯卷(logicalvolumes),并進一步在邏輯卷組上創建文件系 統。管理員通過LVM可以方便的調整存儲卷組的大小,并且可以對磁盤存儲按…

    Linux干貨 2016-08-30
  • bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容

    bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容 bash的基礎特性:命令的執行狀態結果 bash通過狀態返回值來輸出此結果: 成功:0 失?。?-255 命令執行完成之后,其狀態返回值保存于bash的特殊變量$?中。 [root@localhost ~]# ls anaconda-ks.cfg [root@localhost ~]# echo…

    Linux干貨 2018-03-11
  • N22-第一周博客作業

    1、計算機的組成和及其功能? 計算機由硬件,操作系統,軟件三大部分組成。 硬件: 計算機系統中所使用的電子線路和物理設備,主要由中央處理器( CPU )、存儲器、外部設備(輸入輸出設備、I/O設備)及總線等組成。 a、中央處理器(CPU)的主要功能是根據存儲器內的程序 ,逐條地執行程序所指定的操作。中央處理器的主要組成部分是:數據寄存器、指令寄存器、指令譯碼…

    Linux干貨 2016-08-15

評論列表(1條)

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

    1、排版很好,內容很完整。
    2、請繼續加油

欧美性久久久久