LAMP第三部分php,mysql配置

                                   LAMP第三部分php,mysql配置php

                                php配置html

1、禁用函數設置mysql

一、查找php配置文件的命令,在不知道配置文件的狀況下使用linux

[root@mysql ~]#/usr/local/php/bin/php -i |head
phpinfo()
PHP Version =>
5.3.28
 
System => Linux
mysql 2.6.32-504.16.2.el6.x86_64 #1 SMP Wed Apr 22 06:48:29 UTC 2015 x86_64
Build Date => Jun
12 2015 23:45:07
Configure Command
=>  './configure'  '--prefix=/usr/local/php'
'--with-apxs2=/usr/local/apache2/bin/apxs'
'--with-config-file-path=/usr/local/php/etc' '--with-mysql=/usr/local/mysql'
'--with-libxml-dir' '--with-gd' '--with-jpeg-dir' '--with-png-dir'
'--with-freetype-dir' '--with-iconv-dir' '--with-zlib-dir' '--with-bz2'
'--with-openssl' '--with-mcrypt' '--enable-soap' '--enable-gd-native-ttf'
'--enable-mbstring' '--enable-sockets' '--enable-exif' '--disable-ipv6'
Server API =>
Command Line Interface
Virtual Directory
Support => disabled
Configuration File
(php.ini) Path => /usr/local/php/etc
Loaded Configuration
File => /usr/local/php/etc/php.ini

二、在Windows瀏覽器中查看php配置文件,須要在網站的根目錄下建立一個phpinfo.php腳本,這個更準確一些web

進入網站根目錄sql

[root@mysql ~]# cd /data/www/shell

 

建立phpinfo.php腳本apache

[root@mysql www]# vim phpinfo.phpvim

腳本內容:瀏覽器

<?php
phpinfo();
?>

 

在web瀏覽器中訪問

地址:http://www.guhantai.com.cn/phpinfo.php

wKioL1WCdqOSDRJRAAOIAJwpW0g675.jpg

2配置disable_function

disable_function:禁用函數的意思

配置文件路徑:/usr/local/php/etc/php.ini,把下面的函數寫在disable_functions = 的後面,如圖:

wKioL1WCdszCzXx3AAMHuey4KhY678.jpg

禁用函數以下:

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

其中,shell_exec必定要寫,這是個最危險的函數

3、退出保存,要重啓apache服務,否則不會生效

    [root@mysql ~]# /usr/local/apache2/bin/apachectl restart

4php的配置有錯誤,Apache也不會檢測出來,因此不使用檢測命令

 

2、配置error_log(錯誤日誌)

也是在/usr/local/php/etc/php.ini配置文件下,

1display_error=off  #關閉日誌提醒,這樣子作是爲了安全

2log_errors=on #開始錯誤日誌記錄功能,默認是開啓的

3error_log=/usr/local/php/logs/error.log

 定義錯誤日子的存放路徑,/usr/local/php/logs/error.log就死存放路徑,最好寫絕對路徑,由於相對路徑有可能不識別

 

注意要建立如下日誌目錄,否則沒法生成日誌

建立目錄:mkdir /usr/local/hph/logs

 

查看Apache 服務帳號

[root@mysql ~]# ps
aux |grep httpd
root      1232 
0.0  1.0 279576 10956 ?        Ss  
01:46   0:18
/usr/local/apache2/bin/httpd -k start
root      1711 
0.0  0.4 143536  4472 ?       
S    09:18   0:00 vim
/usr/local/apache2/conf/extra/httpd-vhosts.conf
daemon    1969 
0.0  0.6 279576  6216 ?       
S    22:02   0:00 /usr/local/apache2/bin/httpd -k start
daemon    1970 
0.0  0.6 279576  6216 ?       
S    22:02   0:00 /usr

受權daemon帳號能夠對logs目錄進行讀寫權限

chmod 777 /usr/local/php/logs

若是由於某些狀況不能自動建立,那麼須要手動建立一個錯誤日誌,而且受權

建立:touch /usr/local/php/logs/error.log

受權:chmod 777 /usr/local/php/logs/error.log


4、日誌級別

error_reporting = E_ALL | E_STRICT:會記錄咱們所須要的日誌了,應該是說,知足咱們所須要的錯誤信息了


5錯誤級別參考

; E_ALL             全部錯誤和警告(除E_STRICT外)

; E_ERROR           致命的錯誤。腳本的執行被暫停。

; E_RECOVERABLE_ERROR    大多數的致命錯誤。

; E_WARNING         非致命的運行時錯誤,只是警告,腳本的執行不會中止。

; E_PARSE            編譯時解析錯誤,解析錯誤應該只由分析器生成。

; E_NOTICE          腳本運行時產生的提醒(每每是咱們寫的腳本里面的一些bug,好比某個變量沒有定義),這個錯誤不會致使任務中斷。

; E_STRICT          腳本運行時產生的提醒信息,會包含一些php拋出的讓咱們要如何修改的建議信息。

; E_CORE_ERROR      php啓動後發生的致命性錯誤

; E_CORE_WARNING    php啓動後發生的非致命性錯誤,也就是警告信息

; E_COMPILE_ERROR    php編譯時產生的致命性錯誤

; E_COMPILE_WARNING  php編譯時產生的警告信息

; E_USER_ERROR       用戶生成的錯誤

; E_USER_WARNING    用戶生成的警告

; E_USER_NOTICE      用戶生成的提醒

 

 

 

& 表示而且

~ 表示非

| 表示或者

參考文檔:http://www.aminglinux.com/bbs/thread-6973-1-1.html


3、 配置open_basedir

做用:將用戶可操做的文件限制在某目錄下

1、修改/usr/local/php/etc/php.ini 配置文件

      open_basedir默認是關閉的,如圖:

     

wKioL1WCd2qhje0IAAC7sRQkc9M588.jpg


去掉註釋,啓用而且修改:

wKiom1WCddKgU6ZyAAEvUIlNVtM521.jpg

/data/www/:寫的是網站的根目錄,就是把用戶的權限限制在此目錄

 

而後重啓apache服務

  [root@mysql ~]# /usr/local/apache2/bin/apachectl restart  

2、若是有多個網站時,須要在/usr/local/apache2/conf/extra/httpd-vhosts.conf文件中修改配置

      以下圖所示:

wKiom1WCderitxfdAAKql9cvEGc883.jpg

只須要在每一個虛擬機配置中增長這一條命令就能夠:

php_admin_value open_basedir "/dir1/:/dir2/"

"/dir1/:/dir2/:網站目錄

 

配置完成以後須要檢測apache的配置文件是否正確

[root@mysql ~]#
/usr/local/apache2/bin/apachectl -t
Warning:
DocumentRoot [/tmp/tmp] does not exist
Syntax OK

Warning: DocumentRoot [/tmp/tmp] does not exist

這個錯誤信息是提示我沒有/tmp/tmp/目目錄,由於我只有一個網站,因此不可能有這個目錄的,

這裏只是演示了一下,若是有多個網站時改怎麼處理

 

重啓apache服務

[root@mysql ~]# /usr/local/apache2/bin/apachectl restart

4、安裝php的擴展模塊(memcache)

1、把全部的源碼包都下載到/usr/loacal/src

     [root@mysql ~]# cd /usr/local/src/

2、下載源 memcache碼包

[root@mysql src]#  wget http://www.lishiming.net/data/p_w_upload/forum/memcache-2.2.3.tgz

3、解壓 memcache

[root@mysql src]# tar zxvf memcache-2.2.3.tgz

4、進入到源碼包

[root@mysql src]# cd memcache-2.2.3

5memcache-2.2.3目錄下你沒有configure文件,須要生成文件

[root@mysql memcache-2.2.3]# /usr/local/php/bin/phpize

    

   生成文件以後,查看並無configure文件,檢查是發現提示未安裝autocon,如圖

wKiom1WCdlDRgPlkAAQqSM-XgyE595.jpg

安裝autocon

[root@mysql ~]# yum install autoconf

 

再生成文件

[root@mysql memcache-2.2.3]# /usr/local/php/bin/phpize

 

使用ls查看

wKioL1WCeCWjj-WCAAKW9k4dSzE465.jpg

6、編譯文件

./configure --with-php-config=/usr/local/php/bin/php-config

[root@mysql memcache-2.2.3]#  ./configure --with-php-config=/usr/local/php/bin/php-config

 

7、編譯

make

[root@mysql memcache-2.2.3]# make

 

make install

[root@mysql memcache-2.2.3]# make install

8、用ls查看ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/時會多出一個文件來

[root@mysql memcache-2.2.3]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

memcache.so

9 memcache.so文件的用法:去編輯/usr/local/php/etc/php.ini配置文件

[root@mysql memcache-2.2.3]# vim /usr/local/php/etc/php.ini

 

/usr/local/php/etc/php.ini文件的末尾寫上一下一行:

extension = memcache.so

如圖:

wKioL1WCeFiwH7jKAACgZ0nK88A182.jpg

而後退出保存

 

查看php是否有加載剛纔的模塊,若是就成功了

[root@mysql memcache-2.2.3]# /usr/local/php/bin/php -m

wKiom1WCdseRvBgrAAD6d4d5hNU448.jpg

10、若是不知道模塊在哪裏,須要使用一下命令來查找模塊的路徑

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

[root@mysql
memcache-2.2.3]# /usr/local/php/bin/php -i |grep -i extension_dir
extension_dir =>
/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626 =>
/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626
PHP Warning:  Unknown: It is not safe to rely on the
system's timezone settings. You are *required* to use the date.timezone setting
or the date_default_timezone_set() function. In case you used any of those
methods and you are still getting this warning, you most likely misspelled the
timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no DST' instead
in Unknown on line 0
sqlite3.extension_dir
=> no value => no value

或者在編輯配置文件的時候可與寫上絕對路徑,這樣子就不容易出錯

extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcache.so

 

在瀏覽器中輸入http://www.guhantai.com.cn/phpinfo.php 訪問時就會看到memcache模塊的

Phpinfo.php:是以前建立的一個,可與看上一篇筆記,當中有記錄


   mysql配置(部分經常使用的參數)

 

mysql配置文件路徑:/etc/my.cnf

 

[mysqld]                       

socket = /tmp/mysql.sock    

# 爲MySQL客戶程序與服務器之間的本地通訊指定一個套接字文件(Linux下默認是/var/lib/mysql/mysql.sock文件)

 

port             = 3306     

# 指定MsSQL偵聽的端口 ,這個端口可與本身修改

 

skip-name-resolve 

#禁止MySQL對外部鏈接進行DNS解析,使用這一選項能夠消除MySQL進行DNS解析的時間。但須要注意,若是開啓該選項, 則全部遠程主機鏈接受權都要使用IP地址方式,不然MySQL將沒法正常處理鏈接請求. 這個通常在配置文件中禁用掉

 

key_buffer       = 384M     

# key_buffer是用於索引塊的緩衝區大小,增長它可獲得更好處理的索引(對全部讀和多重寫)。索引被全部的線程共享,key_buffer的大小視內存大小而定。

 

table_open_cache      = 512      

# MySQL每打開一個表,都會讀入一些數據到table_open_cache緩存中,當MySQL在這個緩存中找不到相應信息時,纔會去磁盤上讀取。默認值64, 假定系統有200個併發鏈接,則需將此參數設置爲200*N(N爲每一個鏈接所需的文件描述符數目);當把table_open_cache設置爲很大時,若是系統處理不了那麼多文件描述符,那麼就會出現客戶端失效,鏈接不上.

相似於一個緩存區

 

max_allowed_packet = 4M  

# 接受的數據包大小;增長該變量的值十分安全,這是由於僅當須要時纔會分配額外內存。例如,僅當你發出長查詢或MySQLd必須返回大的結果行時MySQLd纔會分配更多內存。 該變量之因此取較小默認值是一種預防措施,以捕獲客戶端和服務器之間的錯誤信息包,並確保不會因偶然使用大的信息包而致使內存溢出。

這個值能夠適當的調大,好比調到16M

 

sort_buffer_size = 2M       

# MySQL執行排序使用的緩衝大小。若是想要增長ORDER BY的速度,首先看是否可讓MySQL使用索引而不是額外的排序階段。若是不能,能夠嘗試增長sort_buffer_size變量的大小

 

read_buffer_size = 2M       

# 讀查詢操做所能使用的緩衝區大小。和sort_buffer_size同樣,該參數對應的分配內存也是每鏈接獨享。對錶進行順序掃描的請求將分配一個讀入緩衝區,MySQL會爲它分配一段內存緩衝區。 若是對錶的順序掃描請求很是頻繁,而且你認爲頻繁掃描進行得太慢,能夠經過增長該變量值以及內存緩衝區大小提升其性能.

 

join_buffer_size = 2M 

# 聯合查詢操做所能使用的緩衝區大小,和sort_buffer_size同樣,該參數對應的分配內存也是每鏈接獨享

 

query_cache_size = 32M      

# 指定MySQL查詢結果緩衝區的大小

 

read_rnd_buffer_size    = 2M

# 隨機讀緩衝區大小。當按任意順序讀取行時(例如,按照排序順序),將分配一個隨機讀緩存區。進行排序查詢時,MySQL會首先掃描一遍該緩衝,以免磁盤搜索,提升查詢速度,若是須要排序大量數據,可適當調高該值。但MySQL會爲每一個客戶鏈接發放該緩衝空間,因此應儘可能適當設置該值,以免內存開銷過大

 

myisam_sort_buffer_size =64M

# MyISAM表發生變化時從新排序所需的緩衝

 

thread_concurrency      = 8

# 最大併發線程數,取值爲服務器邏輯CPU數量×2

 

thread_cache            = 8

#該值表示能夠從新利用保存在緩存中線程的數量,當斷開鏈接時若緩存中還有空間,那麼客戶端的線程將被放到緩存中,若是線程從新被請求,那麼請求將從緩存中讀取,若果緩存中是空的或者是新的請求,那麼線程將被從新建立。設置規律爲:1G內存設置爲8,2G內存設置爲16,4G以上設置爲64

 

max_connections = 1000

#MySQL的最大鏈接數,若是服務器的併發鏈接請求量比較大,建議調高此值,以增長並行鏈接數量,固然這創建在機器能支撐的狀況下,由於若是鏈接數越多,介於MySQL會爲每一個鏈接提供鏈接緩衝區,就會開銷越多的內存,因此要適當調整該值,不能盲目提升設值。能夠過'conn%'通配符查看當前狀態的鏈接數量,以定奪該值的大小。

 

max_connect_errors = 6000 

# 對於同一主機,若是有超出該參數值個數的中斷錯誤鏈接,則該主機將被禁止鏈接。如需對該主機進行解禁,執行:FLUSH HOST。

 

open_files_limit = 65535

# MySQL打開的文件描述符限制,默認最小1024

 

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 

# 慢查詢日誌路徑,必須配合上面的參數一同使用


筆記有錯誤的地方還請大神指正,小白會繼續修改

相關文章
相關標籤/搜索