vim /usr/local/apache2.4/conf/httpd.conf //修改如下4個地方javascript
#ServerNamephp
這就是在Apache啓動start時的輸出內容,打開註釋掉的www.example.com:80css
#Require all denied修改成Require all granted是受權容許訪問的意思,不容許就是403html
#controls who can get stuff from this server後面修改denied爲grantedjava
#容許PHP服務解析該服務器nginx
用/AddType 搜索到對應的信息添加「AddType application/x-httpd-php .php」算法
#添加索引頁apache
用/index 搜索到 DirectoryIndex index.html 在後面追加上index.phpvim
修改完配置文件檢查是否正確:/usr/local/apache2.4/bin/apachectl -t (syntax ok)瀏覽器
最後從新加載配置文件:/usr/local/apache2.4/bin/apachectl graceful
/usr/local/apache2.4/bin/apachectl start //啓動服務
/usr/local/apache2.4/bin/apachectl graceful //從新加載服務
netstat -lntp 查看端口
檢測服務器是否支持PHP解析:
vim /usr/local/apache2.4/htdocs/1.php //增長以下內容
<?php phpinfo(); ?> //該參數的含義是PHP的信息 //該命令的含義是:在訪問該地址時,直接打印PHP的相關信息
curl loaclhost/1.php
php解析正常一堆東西就說明成功了,而後能夠在網頁上也測試一下,記得修改Windows的hosts
若是能夠正常訪問,說明該服務器支持PHP解析,若是不支持php解析的話,訪問該文件時會顯示源代碼
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com serveralias www.111.com <Directory /data/wwwroot/111.com> //指定認證的目錄 AllowOverride AuthConfig //這個至關於打開認證的開關 AuthName "111.com user auth" //自定義認證的名字,做用不大 AuthType Basic //認證的類型,通常爲Basic,其餘類型阿銘沒用過 AuthUserFile /data/.htpasswd //指定密碼文件所在位置 require valid-user //指定須要認證的用戶爲所有可用用戶 </Directory> ErrorLog "logs/111.com-error_log" CustomLog "logs/111.com-access_log" common </VirtualHost>
建立密碼文件(後面lnmp的時候須要yum安裝httpd來實現此工具)
htpasswd命令:
Apache的Web服務器內置工具,用於建立和更新儲存用戶名、域和用戶基本認證的密碼文件
-c:=create,建立一個加密文件(二次不須要加此選項)
-n:不更新加密文件,只將更新後的用戶名密碼顯示在屏幕上
-m:使用MD5算法對密碼進行加密(默認)
-d:使用CRYPT算法對密碼進行加密
-p:不對密碼進行加密,即明文密碼
-s:使用SHA算法對密碼進行加密
-b:在命令行一併輸入用戶名和密碼,而不是根據提示輸入密碼
-D:刪除指定用戶
/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd aming(這個aming是指定用戶) New password: Re-type new password: Adding password for user aming ##在「/data/.htpasswd」爲用戶aming(自動建立)建立一個使用MD5算法加密的密碼文件 ##再次建立用戶密碼時不須要-c,由於文件以及建立了
也能夠單獨針對文件進行認證
<VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com <FilesMatch 123.php> 只有在訪問到123.php時才須要認真☆☆☆ AllowOverride AuthConfig AuthName "111.com user auth" AuthType Basic AuthUserFile /data/.htpasswd require valid-user </FilesMatch> </VirtualHost>
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.111.com <IfModule mod_rewrite.c> //須要mod_rewrite模塊支持 RewriteEngine on //打開rewrite功能 RewriteCond %{HTTP_HOST} !^111.com$ //定義rewrite的條件,主機名(域名)不是111.com知足條件 RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] //定義rewrite規則,當知足上面的條件時,這條規則纔會執行 </IfModule> ErrorLog "logs/111.com-error_log" CustomLog "logs/111.com-access_log" combined </VirtualHost>
此方法實現www.111.com跳轉到111.com
注意的是若是缺乏rewrite模塊沒法實現此功能
/usr/local/apache2.4/bin/apachectl -M|grep -i rewrite //若無該模塊 vim /usr/local/apache2.4/conf/httpd.conf 刪除rewrite_module (shared) 前面的#
日誌文件路徑: ls /usr/local/apache2.4/logs 日誌格式路徑: vim /usr/local/apache2.4/conf/httpd.conf LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common h表示host來源IP l表示login用戶, u表示user用戶密碼 t表示time時間 r表示request(行爲) s表示status狀態碼 b表示byte大小 User-Agent:用戶代理,經過什麼去訪問,好比瀏覽器或者curl這些就是用戶代理 Referer:瀏覽器上次訪問的網址,跳過來前的地址 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> ... ErrorLog "logs/111.com-error_log" CustomLog "logs/111.com-access_log" combined(把格式從原來的common修改成combined) </VirtualHost>
cat /usr/local/apache2.4/logs/111.com-access_log
tail -F /usr/local/apache2.4/logs/111.com-access_log
<VirtualHost *:80> ... SetEnvIf Request_URI ".*\.gif$" img SetEnvIf Request_URI ".*\.jpg$" img SetEnvIf Request_URI ".*\.png$" img SetEnvIf Request_URI ".*\.bmp$" img SetEnvIf Request_URI ".*\.swf$" img SetEnvIf Request_URI ".*\.js$" img SetEnvIf Request_URI ".*\.css$" img #以上爲定義變量:將全部關於圖片的請求定義爲變量img CustomLog "logs/111.com-access_log" combined env=!img #「env=!img」表示非img變量。本行命令的含義是:不記錄關於變量img的請求日誌 </VirtualHost> ##將全部訪問圖片的請求定義爲變量img,在訪問記錄(日誌)中將其排除便可。從新加載後使用curl訪問img變量中所指定格式的文件內容時將不會產生訪問記錄。
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> ... CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img (combined將日誌記錄詳細,日誌按天切割) </VirtualHost> #rotatelogs是切割日誌的工具 -l 以當前系統的時間爲基準切割日誌 中國爲CST 定義切割後的名字,_%Y%m%d.log,Y年m月d日,切割時間爲一天換算成秒文86400秒 日誌保存在/usr/local/apache2.4/logs中 每小時切割一第二天志就是CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 3600"
<VirtualHost *:80> ... <IfModule mod_expires.c> ExpiresActive on //打開該功能的開關 ExpiresByType image/gif "access plus 1 days" //全部圖片定義爲一天 ExpiresByType image/jpeg "access plus 24 hours" ExpiresByType image/png "access plus 24 hours" ExpiresByType text/css "now plus 2 hour" //全部css定義爲兩小時 ExpiresByType application/x-javascript "now plus 2 hours" ExpiresByType application/javascript "now plus 2 hours" ExpiresByType application/x-shockwave-flash "now plus 2 hours" ExpiresDefault "now plus 0 min" </IfModule> </VirtualHost> #模塊/usr/local/apache2.4/bin/apachectl -M | grep -i expire vim /usr/local/apache2.4/conf/httpd.conf搜索/expires並打開其模塊
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com> (防盜鏈目錄爲本站點) SetEnvIfNoCase Referer "http://111.com" local_ref (白名單) SetEnvIfNoCase Referer "http://aaa.com" local_ref (白名單) SetEnvIfNoCase Referer "^$" local_ref (空的referer) <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)"> (針對這些的訪問作防盜鏈) Order Allow,Deny (定義訪問控制順序,這裏是先把白名單的referer作一個容許其餘的禁止) Allow from env=local_ref (這兩行指把白名單的referer作一個容許) </filesmatch> </Directory>
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com/admin/> #本節用於設定指定IP訪問指定目錄的權限 Order deny,allow (Order用來定義順序,先allow容許仍是deny拒絕看順序) Deny from all Allow from 127.0.0.1 #只容許IP--127.0.0.1訪問「/data/wwwroot/111.com/admin/」目錄中的內容 #這裏限制的ip是源ip,-x指定的是目標ip,可是目標來源ip相同因此指定目標ip就能夠實現需求 </Directory>
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com> <FilesMatch "admin.php(.*)"> (針對連接和文件名進行控制) Order deny,allow Deny from all Allow from 127.0.0.1 </FilesMatch> </Directory>
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com/upload> php_admin_flag engine off </Directory> #若是隻限制php解析,用戶訪問時還會看到php的源碼,爲了更安全能夠直接沒法訪問php文件提升安全性 <Directory /data/wwwroot/111.com/upload> php_admin_flag engine off <FilesMatch (.*)\.php(.*)> Order Allow,Deny Deny from all </FilesMatch> </Directory>
user_agent是瀏覽器的標識,用curl訪問時,出現curl/7.29.0爲Firefox瀏覽器,工做中用它來限制一些訪問,當受到cc攻擊,可是它的攻擊都有規律,user_agent是相同的,因此使用限制它來實現控制
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR] RewriteCond %{HTTP_USER_AGENT} .*baidu.com.* [NC] RewriteRule .* - [F] </IfModule> #NC表示忽略大小寫,OR選項表示或者(不加任何選項表而且)鏈接下一個條件,F=forbidden禁止。
在PHP的源碼包中沒有第三方模塊的包,可是在PHP源碼包的/ext/目錄下有好多擴展模塊,若是所須要的擴展模塊在該目錄下,能夠直接進行安裝: 先切換到指定模塊目錄下 生成configure文件:/usr/local/php7/bin/phpize 環境配置:./configure --with-php-config=/usr/local/php7/bin/php-config make&&make install 安裝完成後在編輯PHP配置文件php.inid加載模塊!