馬哥教育網絡班21期+第12周課程練習
5、為第4題中的第2個虛擬主機提供https服務,使得用戶可以通過https安全的訪問此web站點;
-
(1)要求使用證書認證,證書中要求使用的國家(CN)、州(HA)、城市(ZZ)和組織(MageEdu);
-
(2)設置部門為Ops,主機名為www2.stuX.com,郵件為admin@stuX.com;
1.CA生成私鑰 [root@web ~]# (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) 2.CA生成自簽證書 [root@web ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365 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 3.提供CA所需的目錄和文件 [root@web ~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts} [root@web ~]# touch /etc/pki/CA/{serial,index.txt} [root@web ~]# echo 01 > /etc/pki/CA/serial 4.虛擬主機生成私鑰 [root@web ~]# mkdir /usr/local/apache/ssl [root@web ~]# (umask 077;openssl genrsa -out /usr/local/apache/ssl/http.key 2048) 5.虛擬主機生成證書請求文件 [root@web ~]# openssl req -new -key /usr/local/apache/ssl/http.key -out /usr/local/apache/ssl/http.csr -days 365 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 Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: 6.在CA上簽署虛擬主機的證書 [root@web ~]# openssl ca -in /usr/local/apache/ssl/http.csr -out /usr/local/apache/ssl/http.crt -days 365 7.編輯httpd.conf開啟對應的模塊和ssl.conf文件 [root@web ~]# 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 8.修改httpd-ssl.conf文件 [root@web ~]# vim /etc/httpd24/extra/httpd-ssl.conf <VirtualHost _default_:443> DocumentRoot "/web/vhosts/www2" ServerName www2.stuX.com ErrorLog "/var/log/httpd/www2.err" CustomLog "/var/log/httpd/www2.access" common <Directory "/web/vhosts/www2"> Options None AllowOverride None Require all granted </Directory> SSLCertificateFile "/usr/local/apache/ssl/http.crt" SSLCertificateKeyFile "/usr/local/apache/ssl/http.key" </VirtualHost> 9.重啟httpd24服務并測試 [root@web ~]# service httpd24 restart [root@web ~]# curl -k https://www2.stuX.com www2.stuX.com
6、在LAMP架構中,請分別以php編譯成httpd模塊形式和php以fpm工作為獨立守護進程的方式來支持httpd,列出詳細的過程。
php編譯成模塊形式在第三題中做過,Apache和mysql編譯安裝與第三題相同。 1.安裝所需要的環境 yum install bzip2-devel libmcrypt-devel libxml2-devel -y 2.編譯安裝php-5.4.26 [root@web ~]# tar xf php-5.4.26.tar.bz2 [root@web ~]# cd php-5.4.26 [root@web php-5.4.26]# ./configure --prefix=/usr/local/php5 --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 --enable-fpm --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 [root@web php-5.4.26]# make [root@web php-5.4.26]# make test [root@web php-5.4.26]# make intall 3.為php提供配置文件 [root@web php-5.4.26]# cp php.ini-production /etc/php.ini 4.為php-fpm提供SysV腳本并添加到服務列表 [root@web php-5.4.26]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm [root@web php-5.4.26]# chmod +x /etc/rc.d/init.d/php-fpm [root@web php-5.4.26]# chkconfig --add php-fpm [root@web php-5.4.26]# chkconfig php-fpm on 5.為php-fpm提供配置文件 [root@web php-5.4.26]# cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf 6.編輯php-fpm配置文件內容 [root@web php-5.4.26]# vim /usr/local/php5/etc/php-fpm.conf pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 8 pid = /usr/local/php5/var/run/php-fpm.pid 7.啟動php-fpm并檢測 [root@web php-5.4.26]# service php-fpm start [root@web php-5.4.26]# ps aux | grep php-fpm root 81568 0.0 0.0 154960 3940 ?Ss Aug10 0:00 php-fpm: master process (/usr/local/php5/etc/php-fpm.conf) nobody81569 0.0 0.0 154960 3496 ?SAug10 0:00 php-fpm: pool www nobody81570 0.0 0.0 154960 3496 ?SAug10 0:00 php-fpm: pool www nobody81571 0.0 0.0 154960 3496 ?SAug10 0:00 php-fpm: pool www nobody81572 0.0 0.0 154960 3496 ?SAug10 0:00 php-fpm: pool www nobody81573 0.0 0.0 154960 3496 ?SAug10 0:00 php-fpm: pool www root 81623 0.0 0.0 103244 840 pts/0S+ 00:11 0:00 grep php-fpm 此命令輸出有中幾個php-fpm進程就說明啟動成功了 [root@web php-5.4.26]# netstat -tnlp | grep php-fpm tcp0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 81568/php-fpm fpm監聽在127.0.0.1的9000端口 8.編輯httpd的配置文件使支持php-fpm [root@web php-5.4.26]# vim /etc/httpd24/httpd.conf LoadModule proxy_module modules/mod_proxy.so //這行取消注釋 LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so //這行取消注釋 Include /etc/httpd24/extra/httpd-vhosts.conf //這行取消注釋 #DocumentRoot "/usr/local/apache/htdocs" //這行注釋掉 AddType application/x-httpd-php .php //添加這行 AddType application/x-httpd-php-source .phps //添加這行 DirectoryIndex index.php index.html //這行修改 在Apache httpd 2.4以后已經專門有一個模塊針對FastCGI的實現, 此模塊為mod_proxy_fcgi.so,它其實是作為mod_proxy.so模塊的擴充, 因此,這兩個模塊都要加載。 9.創建虛擬主機目錄并創建所需php測試文件 [root@web php-5.4.26]# mkdir -p /web/vhosts/www1 [root@web php-5.4.26]# echo '<? php phpinfo() ?>' > /web/vhosts/www1/index.php 10.編輯虛擬主機配置文件使支持使用fcgi [root@web php-5.4.26]# vim /etc/httpd24/extra/httpd-vhosts.conf <VirtualHost 192.168.82.58:80> DocumentRoot "/web/vhosts/www1" ServerName www1.stuX.com ErrorLog "/var/log/httpd/www1.err" CustomLog "/var/log/httpd/www1.access" common ProxyRequests Off ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/vhosts/www1/$1 <Directory "/web/vhosts/www1"> Options None AllowOverride None Require all granted </Directory> </VirtualHost> ProxyRequests Off:關閉正向代理 ProxyPassMatch:把以.php結尾的文件請求發送到php-fpm進程, php-fpm至少需要知道運行的目錄和URI,所以這里直接在fcgi://127.0.0.1:9000后 指明了這兩個參數,其它的參數的傳遞已經被mod_proxy_fcgi.so進行了封裝,不需要手動指定。 11.重啟httpd24服務并測試 [root@web php-5.4.26]# service httpd24 restart
原創文章,作者:N21_孤狼,如若轉載,請注明出處:http://www.www58058.com/64304