centos LAMP第三部分php,mysql配置 php配置文件 配置php的error_log 配置php的open_basedir 安裝php的擴展模塊 phpize mysql配置第二十一節課php
主配置文件:/usr/local/apache2/conf/httpd.conf
虛擬主機配置文件:/usr/local/apache2/conf/extra/httpd-vhosts.confhtml
php.ini配置文件:/usr/local/php/etc/php.inimysql
php執行的兩種方法:1在瀏覽器裏顯示 2 /usr/local/php/bin/php 1.phplinux
php文件和php.ini文件都使用分號; 作註釋 ,而不是#號 nginx
注意:php沒有像apache那樣的檢測配置文件php.ini 的命令web
上半節課sql
php配置文件
配置php的error_log
配置php的open_basedirshell
下半節課apache
安裝php的擴展模塊
mysql配置(部分經常使用的參數)
phpizejson
php配置
#php配置文件
查找php配置文件php.ini所在位置
/user/local/php/bin/php -i |head
/user/local/php/etc/php.ini
最好的方法是使用1.php,打印出phpinfo
cd /data/www/
vi 1.php
//phpinfo頁面 vi 1.php <?php phpinfo(); ?>
訪問: www.123.com/1.php
找到php.ini配置文件後繼續下面的配置
1. 配置disable_function(禁用php的一些危險的功能 disable_functions,改完以後生效)
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
最後重啓: /usr/local/apache2/bin/apachectl restart (若是是lnmp: /etc/init.d/php-fpm reload)
2. 配置error_log (PHP的好處是免編譯,php頁面裏面的代碼有錯誤只須要修改了就能夠,不須要任何編譯或重編譯)
display_error=Off //不將錯誤顯示在瀏覽器,只打印在錯誤日誌裏
log_errors=On
error_log=/path/to/logfile //路徑必須是一個已存在路徑,不存在本身建立,好比:/usr/local/php/logs/phperror.log
error_reporting = E_ALL | E_STRICT //| 或者 & 和 ~ 取反
新建目錄: mkdir -p /usr/local/php/logs
賦予error目錄的權限,目錄要有執行權限,不然進不去: chown -R daemon:daemon /usr/local/php/logs && chmod 700 /usr/local/php/logs
最後重啓: /usr/local/apache2/bin/apachectl restart (若是是lnmp: service php-fpm restart )
應用
vi 1.php //在www目錄下vi一個1.php <?php sdfsdflkjl ?> cat /usr/local/php/logs/phperror.log [24-Oct-2015 07:19:27 Asia/Chongqing] PHP Notice: Use of undefined constant sdfsdflkjl - assumed 'sdfsdflkjl' in /data/www/1.php on line 3 [24-Oct-2015 07:19:30 Asia/Chongqing] PHP Notice: Use of undefined constant sdfsdflkjl - assumed 'sdfsdflkjl' in /data/www/1.php on line 3
錯誤級別參考 http://www.aminglinux.com/bbs/thread-6973-1-1.html
配置error_log
1,關閉顯示
2,打開錯誤日誌
3,設定日誌路徑
4,定義日誌級別
5,重啓APACHE
3. 配置open_basedir(一個apache下跑多個網站vhost,vhost網站目錄隔離)
php.ini: open_basedir = /dir1/:/dir2
httpd-vhosts.conf:php_admin_value open_basedir "/dir1/:/dir2/"
open_basedir至關於chroot,限制用戶在某個目錄
應用
//把網站目錄限制在/data/www2/,可是實際上沒有/data/www2/目錄,瀏覽器輸入www.123.com會顯示500錯誤 vi /usr/local/php/etc/php.ini open_basedir = /data/www2/:/tmp/ //tmp目錄通常緩存用戶cookies,最好加上 /usr/local/apache2/bin/apachectl restart curl 'http://www.123.com/1.php' -I cat /usr/local/php/logs/phperror.log //會看到錯誤
應用
//不一樣虛擬主機使用不一樣的open_basedir,假設有三個vhost vi /usr/local/php/etc/php.ini open_basedir = /data/www/:/tmp/ open_basedir = /data/www2/:/tmp2/ //open_basedir是能夠添加的 open_basedir = /data/www3/:/tmp3/ vi /usr/local/apache2/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/data/www" ServerName www.123.com php_admin_value open_basedir "/data/www/:/tmp/" </VirtualHost> <VirtualHost *:8080> DocumentRoot "/data/www2" ServerName www.1234.com php_admin_value open_basedir "/data/www2/:/tmp2/" </VirtualHost> <VirtualHost *:8888> DocumentRoot "/data/www3" ServerName www.12345.com php_admin_value open_basedir "/data/www3/:/tmp3/" </VirtualHost> /usr/local/apache2/bin/apachectl -t /usr/local/apache2/bin/apachectl restart (若是是lnmp service php-fpm restart )
4. 隱藏php版本號
vi /usr/local/php-fpm/etc/php.ini
expose_php = Off
/etc/init.d/php-fpm restart
修改以前
curl www.80ops.cn -I HTTP/1.1 200 OK Server: nginx/1.6.3 Date: Tue, 22 Mar 2016 14:52:01 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/5.4.37 Vary: Accept-Encoding, Cookie Cache-Control: max-age=3, must-revalidate WP-Super-Cache: Served supercache file from PHP
修改以後
curl www.80ops.cn -I HTTP/1.1 200 OK Server: nginx/1.6.3 Date: Tue, 22 Mar 2016 14:49:35 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive Vary: Accept-Encoding, Cookie Cache-Control: max-age=3, must-revalidate WP-Super-Cache: Served supercache file from PHP
5. 安裝php的擴展模塊(memcache)
http://www.aminglinux.com/bbs/thread-45-1-1.html
顯示已編譯模塊:/usr/local/php/bin/php -m
使用編譯安裝擴展模塊的方式安裝memcache
memcache客戶端在php中編譯(php調用memcache客戶端的so文件鏈接memcached服務器端)
# yum install -y autoconf
# cd /download && wget -c http://www.lishiming.net/data/attachment/forum/memcache-2.2.3.tgz
# tar zxvf memcache-2.2.3.tgz
# cd memcache-2.2.3
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config &&make &&make install
# cp modules/memcache.so /usr/local/php/ext/ //把memcache.so 拷貝至php的extension_dir下,#查看php extension_dir的方法是 /usr/local/php/bin/php -i |grep extension_dir
修改擴展路徑,在/usr/local/php/etc/php.ini中修改:
extension_dir = "/usr/local/php/ext"
而後在php.ini 中添加
extension = memcache.so 或者寫絕對路徑 保證不會出錯 extension = /usr/local/php/ext/memcache.so
保存後能夠利用 /usr/local/php/bin/php -m |grep memcache 檢測和查看具體的參數
/usr/local/apache2/bin/apachectl -t
/usr/local/apache2/bin/apachectl restart
memcached 的編譯安裝
cd /download && wget -c http://syslab.comsenz.com/downloads/linux/memcached-1.4.5.tar.gz
tar zxvf memcached-1.2.8.tar.gz
cd memcached-1.2.8
./configure --prefix=/usr/local/memcached
make && make install
啓動:
/usr/local/memcached/bin/memcached -m 2048 -p 11211 -l 127.0.0.1 -d -u www
-m 後邊指定memecached使用多少內存,單位是M
-p 指定memcached 啓動端口
-l 指定綁定的IP
-u 指定以某個帳戶的身份啓動
加載不了模塊須要查看錯誤日誌
tail /usr/local/php/logs/phperror.log
公司安裝腳本
tar -zxvf memcache-2.2.7.tgz cd memcache-2.2.7 /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install cd .. rm -fr memcache-2.2.7 tar -zxvf libevent-2.0.21-stable.tar.gz cd libevent-2.0.21-stable ./configure --prefix=/usr/local/libevent && make && make install cd .. rm -fr libevent-2.0.21-stable tar -zxvf memcached-1.4.17.tar.gz cd memcached-1.4.17 ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent && make && make install cd .. rm -fr memcached-1.4.17 sed -i '8c\\n\extension = "memcache.so"\n' /usr/local/etc/php.ini
memcache基於libevent的事件處理《高性能Linux服務器構建實戰:運維監控、性能調優與集羣應用》
瞭解libevent的用戶都知道,libevent是一套利用C開發的程序庫,它將BSD系統的kqueue、Linux系統的epoll等事件處理功能封裝成一個接口,確保即便服務器端的鏈接數增長也能發揮很好的性能。
Memcached利用這個庫進行異步事件處理。關於這個庫的詳細內容,有興趣的讀者能夠查看相關文檔。
二. mysql配置(部分經常使用的參數)
mysql配置文件:vi /etc/my.cnf
[mysqld]
socket = /tmp/mysql.sock
# 爲MySQL客戶程序與服務器之間的本地通訊指定一個套接字文件(Linux下默認是/var/lib/mysql/mysql.sock文件)
port = 3306
# 指定MsSQL偵聽的端口
skip-name-resolve 相似於/etc/ssh/sshd_config 裏面的UseDNS = no
#禁止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(8小時),這個參數是和interactive_timeout一塊兒使用的,也就是說要想讓wait_timeout 生效,必須同時設置interactive_timeout
interactive_timeout = 8
long_query_time = 1
#慢查詢日誌的超時時間
log_slow_queries = /path/to/slow_queries
# 慢查詢日誌路徑,必須配合上面的參數一同使用
擴展部分:
php查看指定模塊的信息 http://www.aminglinux.com/bbs/thread-7030-1-1.html
php.ini中最好要禁掉的一些函數 http://www.aminglinux.com/bbs/thread-5706-1-1.html
php開啓短標籤 http://www.aminglinux.com/bbs/thread-120-1-1.html
php.ini詳解 http://legolas.blog.51cto.com/2682485/493917
mysql調優: http://www.aminglinux.com/bbs/thread-5758-1-1.html
mysql 配置詳解: http://blog.linuxeye.com/379.html
http://php.net/manual/en/install.pecl.phpize.php
phpize是用來擴展php擴展模塊的,經過phpize能夠創建php的外掛模塊
好比你想在原來編譯好的php中加入memcached或者ImageMagick等擴展模塊,可使用phpize,經過如下幾步工做。
如何使用phpize?
http://www.2cto.com/kf/201111/110140.html
當php編譯完成後,php的bin目錄下會有phpize這個腳本文件。在編譯你要添加的擴展模塊以前,執行如下phpize就能夠了;
好比如今想在php中加入memcache擴展模塊:咱們要作的只是以下幾步
————————————————————————
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5/
/usr/local/webserver/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make
make install
————————————————————————
注意./configure 後面能夠指定的是php-config文件的路徑,php-config是一個可執行文件
ls /usr/local/php-fpm/bin/php-config
/usr/local/php-fpm/bin/php-config
這樣編譯就完成了,還須要作的是在php.ini文件中加入extension值
extension = 「memcache.so」
php擴展路徑
/usr/local/php-fpm/bin/php -i |grep extension
/usr/local/php-fpm//bin/php -m |grep memcache
grep -i 'extension' /usr/local/php-fpm/etc/php.ini
grep -i 'extension' /usr/local/php-fpm/etc/php.ini
; Directives are variables used to configure PHP or PHP extensions.
; dynamically loaded extension (either a PHP extension or a Zend extension),
; you may only use these constants *after* the line that loads the extension.
; encodings. To use this feature, mbstring extension must be enabled.
; leading '/'. You must also specify the file extension being used including
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; extension_dir = "ext"
; Dynamic Extensions ;
; If you wish to have an extension loaded automatically, use the following
; extension=modulename.extension
; extension=msql.dll
; extension=msql.so
; extension=/path/to/extension/msql.so
; If you only provide the name of the extension, PHP will look for it in its
; default extension directory.
; Windows Extensions
; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
; extension folders as well as the separate PECL DLL download (PHP 5).
; Be sure to appropriately set the extension_dir directive.
;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_fileinfo.dll
php-fpm的擴展路徑Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
/usr/local/php-fpm/include/php/ext
# ll
total 68
drwxr-xr-x 3 root root 4096 Dec 18 14:56 date
drwxr-xr-x 2 root root 4096 Dec 18 14:56 dom
drwxr-xr-x 3 root root 4096 Dec 18 14:56 ereg
drwxr-xr-x 2 root root 4096 Dec 18 14:56 filter
drwxr-xr-x 3 root root 4096 Dec 18 14:56 gd
drwxr-xr-x 2 root root 4096 Dec 18 14:56 hash
drwxr-xr-x 2 root root 4096 Dec 18 14:56 iconv 使php支持iconv函數,實現utf-8和gb2312編碼的轉換。
drwxr-xr-x 2 root root 4096 Dec 18 14:56 json
drwxr-xr-x 2 root root 4096 Dec 18 14:56 libxml
drwxr-xr-x 4 root root 4096 Dec 18 14:56 mbstring
drwxr-xr-x 3 root root 4096 Dec 18 14:56 pcre
drwxr-xr-x 2 root root 4096 Dec 18 14:56 pdo
drwxr-xr-x 2 root root 4096 Dec 18 14:56 session
drwxr-xr-x 2 root root 4096 Dec 18 14:56 spl
drwxr-xr-x 3 root root 4096 Dec 18 14:56 sqlite3
drwxr-xr-x 2 root root 4096 Dec 18 14:56 standard
drwxr-xr-x 2 root root 4096 Dec 18 14:56 xml
# /usr/local/php-fpm/bin/php -i |grep extension
extension_dir => /usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-20100525 => /usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-20100525
mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.
sqlite3.extension_dir => no value => no value
f