LAMP第三部分php配置和mysql配置


9. 配置防盜鏈
http://www.lishiming.net/thread-71-1-1.htmlphp

防止別人的網站,放你網站圖片的連接,html

位置通常狀況下在 /usr/local/apache/conf/httpd.conf
或者apache 2.2 的 /usr/local/apache2/conf/extra/httpd-vhost.conf
添加 mysql

SetEnvIfNoCase Referer "^http://www.ccvita.com" local_ref
SetEnvIfNoCase Referer "^http://ccvita.com" local_refSetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch> linux

還一種寫法,是用正則的,這種寫法在各個版本的apache比較通用。
寫法是 sql

SetEnvIfNoCase Referer "^http://.*\.yourdomin\.com" local_ref
SetEnvIfNoCase Referer ".*\.yourdomin\.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch> shell

 

10. 訪問控制
apache的order allow deny
http://www.lishiming.net/thread-832-1-1.htmlapache

apache限制某個目錄下的php文件沒有執行權限 http://www.lishiming.net/thread-1000-1-1.html
apache 針對訪問uri 限制ip http://www.lishiming.net/thread-5365-1-1.html
幾種限制ip的方法 http://www.lishiming.net/thread-6519-1-1.html瀏覽器

 

 

11. apache rewrite相關,後面講到
apache 限制指定user_agent http://www.lishiming.net/thread-1033-1-1.html
apache 限制某些目錄不能訪問經過rewrite實現 http://www.lishiming.net/thread-3587-1-1.html
apache rewrite 出現死循環 http://www.lishiming.net/thread-1043-1-1.html緩存

 


一. php配置
查看配置文件的路徑 /usr/local/php/bin/php -i |grep -i config
vi /usr/locall/php/etc/php.ini服務器

查找/disable_function
1. 配置disable_function
disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close

禁止這些函數,禁止黑客用這些黑客訪問

2. 配置error_log
display_error=off 這裏若是是on 有助於咱們去排錯和調試========
log_errors=on
error_log=/usr/local/php/logs/php_errors.log 這裏寫絕對路徑,建立logs目錄,權限777
error_reporting = E_ALL & ~E_NOTICE 錯誤級別

查看網站出錯的狀態碼
curl -I -x127.0.0.1:80 http://www.111.com/forum.php

錯誤級別參考 http://www.aminglinux.com/bbs/thread-6973-1-1.html

3. 配置open_basedir 限定訪問目錄

open_basedir = /data/www1:/tmp 在php.ini裏面配置,一種方法,指定到別的目錄去,就訪問不了了

php_admin_value open_basedir "/data/www1:/tmp" 在虛擬主機配置,二種方法,


> /usr/local/php_errors.log 清空日誌的意思


4. 安裝php的擴展模塊(memcache)
http://www.aminglinux.com/bbs/thread-45-1-1.html

源碼包的模塊
cd /usr/local/src/php-5.3.28/ext/

若是想要用哪些模塊,就進入到模塊 執行這個命令
ext]# cd ftp
[root@Centos6 ftp]#/usr/local/php/bin/phpize
須要安裝autoconf yum install autoconf
而後再執行一下命令/usr/local/php/bin/phpize
ls
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install 這時告訴你這個動態模塊在哪裏
ls + 模塊路徑
出現 ftp.so

/usr/local/php/bin/php -i |grep -i extension_dir

vi /usr/local/php/etc/php.ini 配置加上ftp模塊,須要手動加
進去加上 extension=ftp.so extension這裏說明是一個動態加載
而後 /usr/local/php/bin/php -m |grep ftp 就多了ftp這個模塊了

 


二. mysql配置

mysql調優: http://www.aminglinux.com/bbs/thread-5758-1-1.html

/etc/my.cnf 已經拷貝了這個模板
[mysqld]
socket = /tmp/mysql.sock # 爲MySQL客戶程序與服務器之間的本地通訊指定一個套接字文件(Linux下默認是/var/lib/mysql/mysql.sock文件)等我寫完後你再讀
port = 3306 # 指定MsSQL偵聽的端口
key_buffer = 384M # key_buffer是用於索引塊的緩衝區大小,增長它可獲得更好處理的索引(對全部讀和多重寫)。索引被全部的線程共享,key_buffer的大小視內存大小而定。
table_cache = 512 # 爲全部線程打開表的數量。增長該值能增長mysqld要求的文件描述符的數量。能夠避免頻繁的打開數據表產生的開銷
sort_buffer_size = 2M # 每一個須要進行排序的線程分配該大小的一個緩衝區。增長這值加速ORDER BY或GROUP BY操做。
注意:該參數對應的分配內存是每鏈接獨佔!若是有100個鏈接,那麼實際分配的總共排序緩衝區大小爲100×6=600MB
read_buffer_size = 2M # 讀查詢操做所能使用的緩衝區大小。和sort_buffer_size同樣,該參數對應的分配內存也是每鏈接獨享。=====
query_cache_size = 32M # 指定MySQL查詢結果緩衝區的大小
read_rnd_buffer_size = 8M # 改參數在使用行指針排序以後,隨機讀用的。
myisam_sort_buffer_size =64M # MyISAM表發生變化時從新排序所需的緩衝
thread_concurrency = 8 # 最大併發線程數,取值爲服務器邏輯CPU數量×2,若是CPU支持H.T超線程,再×2
thread_cache = 8 # #緩存可重用的線程數
skip-locking # 避免MySQL的外部鎖定,減小出錯概率加強穩定性。 wait_timeout = 8 # 表示空閒的鏈接超時時間,默認是28800s,這個參數是和interactive_timeout一塊兒使用的,也就是說要想讓wait_timeout 生效,必須同時設置interactive_timeout
interactive_timeout = 8
long_query_time = 1 ##慢查詢日誌的超時時間
log_slow_queries = /path/to/slow_queries ## 慢查詢日誌路徑,必須配合上面的參數一同使用

 

============
查看key_reads / key_read_requests 這兩的值
登陸mysql

SHOW STATUS LIKE 'key_read%';

--------
show varables like 'table%'

 

apache 限制指定user_agent http://www.lishiming.net/thread-1033-1-1.html
打開虛擬主機配置文件
判斷是用什麼搜索引擎
有些user_agent 不是咱們想要的,能夠經過rewrite功能針對 %{HTTP_USER_AGENT} 來rewirete到404頁,從而達到限制某些user_agent的請求。

配置以下
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*bot.* [NC]
RewriteCond %{REQUEST_URI} !^/404*
RewriteRule .* /404.html
</IfModule>

測試curl -xlocalhost:80 www.111.com -I 跳到了404
curl -A "sfjslkfjlsjgssfhsl "-xlocalhost:80 www.111.com -I 這個就不是404了

curl -A "botslkfjlsjgssfhsl "-xlocalhost:80 www.111.com -I 這個是404 由於包含了bot

請注意,你的404.html千萬別再跳轉到其餘頁面了,不然頗有可能就會死循環了。
其實rewrite到404.html 並非很好的辦法,而apache的rewrite功能有一項就是forbidden ,那就是 F
配置以下
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*bot.* [NC]
RewriteRule .* - [F]
</IfModule>
======================
apache 限制某些目錄不能訪問經過rewrite實現 http://www.lishiming.net/thread-3587-1-1.html


deny allow確定是能夠實現的,可是這個必須指定準確的目錄,若是有不少個目錄,可是都包含某個名字,好比
bbs.1.com/1/tmp/123.html
bbs.1.com/2/tmp/123.html
bbs.1.com/3/1/2/tmp/123.html
……
若是有不少,須要逐一去定義Directory 模塊,這顯然很麻煩,使用rewrite模塊的 REQUEST_URI 就能夠很容易實現。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^.*/data/* [NC] #data這個目錄下的都訪問不了
RewriteRule .* - [F]
</IfModule>


訪問一下網站,看到不少東西沒有出來,按下12,會看到有的文件是403就是限制了這個目錄下面的文件了

======================
apache rewrite 出現死循環 http://www.lishiming.net/thread-1043-1-1.html

個人一條規則
RewriteRule ^.* /beian.html [R,L]
複製代碼
使用curl測試,沒有問題,可是使用瀏覽器訪問時,出現了無限循環。
原本訪問的是 www.111.com 結果變成了 www.111.com/111/111/111/.....
雖然在最後加了 [L] 依然無論用,可能apache仍是不夠智能,一直知足條件就一直去匹配,一直去跳轉。最後沒招了只能再加一個條件。

RewriteCond %{REQUEST_URI} !^/beian.html [NC]
RewriteRule ^.* /beian.html [R,L]

這樣就再也不循環了。

相關文章
相關標籤/搜索