PHP連接mysql
[root@localhost mysql]# yum install php-mysql
CMS:(開源)
drupal
joomla
http 2.4新特性:
1、MPM可於運行時裝載
--enable-mpms-shared=all --with-mpm=event
2、Event MPM
3、支持異步讀寫,提升HTTP性能
4、在每個模塊及每目錄上指定日誌級別
5、每請求配置:<IF>,<ElseIF>,<Else>
6、增強的表達式分析器
7、毫秒級的KeepAlive Timeout
8、基於域名的虛擬主機不再需要NameVirtualHost指令,需開啓vhost
9、降低了內存佔用;
10、支持在配置文件中使用自定義變量
11、基於IP的訪問控制機制
2.2中使用機制:
Order allow,deny
allow from all
2.4中不再支持此方法,使用如下方法
require user USERNAME
require group GROUPNAME
require IP IPADDR
IP
NETWORK/NATMASK
NETWORK/LENGTH
NET
172.16.0.0/255.255.0.0=172.16.0.0/16=172.16
require host HOSTNAME
mageedua.com
允許所有主機訪問
require all granted
拒絕所有主機訪問
require all deny
不想讓哪此主機訪問,可以在類前加 not
require not IP IPADDR
12、新增的模塊:
mod_proxy:proxy的核心modules
mod_proxy_fcgi:2.2需要單獨安裝,2.4在編譯可直接啓用--enable-modules=most
mod_proxy_scgi
mod_proxy_express
mod_remoteip
mod_session
mod_ratelimit
mod_request
等等
LAMP的安裝順序
apr->apr_util->httpd->MySQL
編譯安裝LAMP之httpd
安裝順序:httpd-->mysql-->php
版本:
httpd:2.4.12
mysql:5.6.10
php:5.4.42
apr:Apache Portable Runtime,是HTTPD的虛擬機
apr-util
apr-iconv
編譯安裝httpd軟件:
# yum -y install pcre-devel #HTTPD的編譯環境 # tar xf apr-1.4.6.tar.bz2 #httpd虛擬機apr軟件安裝 # cd apr-1.4.6 # ./configure --prefix=/usr/local/apr # make # make install # tar xf apr-util-1.4.1.tar.bz2 #apr-util工具包的安裝 # cd apr-util-1.4.1 # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr # make # make install # tar xf httpd-2.4.4.tar.bz2 # cd httpd-2.4.4 ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-rewirte --enable-ssl --enable-cgi --enable-cgid --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --enable-deflate --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util # make # make install --prefix=/usr/local/apache #安裝路徑 --sysconfdir=/etc/httpd #配置文件路徑 --enable-so #支持共享模塊 --enable-rewirte #支持URL重寫 --enable-ssl #支持ssl,依賴於openssl-devel庫,需安裝 --enable-cgi #進程方式使用cgi --enable-cgid #純種方式使用cgi --enable-modules=most --enable-mods-shared=most #啓用共享模塊 --enable-mods-static=MODULE-LIST #靜態庫,直接編譯進主程序 --enable-mpms-shared=all #多道處理模塊(MPM)的支持 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-authn-dbm #啓用認證,默認是啓用的 --enable-deflate #啓用網頁傳輸壓縮,依賴於zlib-devel庫,需安裝
--enable-mpms-shared=all #多道處理模塊(MPM)的支持,需注意的是,如果是使用worker,event模式,PHP必須編譯安裝成ZTS格式,prefork模式不需要單獨編譯php
配置安裝好的httpd服務:
#修改httpd的pid進程文件路徑 [root@localhost apache]# vim /etc/httpd/httpd.conf PidFile "/var/run/httpd.pid" #需要停用服務,再去修改配置 [root@localhost apache]# ./bin/apachectl start #啓動服務 [root@localhost apache]# ls /var/run/ | grep httpd httpd.pid #配置httpd服務管理腳本: vim /etc/rc.d/init.d/httpd #!/bin/bash # # httpd Startup script for the Apache HTTP Server # # chkconfig: - 85 15 # description: Apache is a World Wide Web server. It is used to serve \ # HTML files and CGI. # processname: httpd # config: /etc/httpd/conf/httpd.conf # config: /etc/sysconfig/httpd # pidfile: /var/run/httpd.pid # Source function library. . /etc/rc.d/init.d/functions if [ -f /etc/sysconfig/httpd ]; then . /etc/sysconfig/httpd fi # Start httpd in the C locale by default. HTTPD_LANG=${HTTPD_LANG-"C"} # This will prevent initlog from swallowing up a pass-phrase prompt if # mod_ssl needs a pass-phrase from the user. INITLOG_ARGS="" # Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server # with the thread-based "worker" MPM; BE WARNED that some modules may not # work correctly with a thread-based MPM; notably PHP will refuse to start. # Path to the apachectl script, server binary, and short-form for messages. apachectl=/usr/local/apache/bin/apachectl httpd=${HTTPD-/usr/local/apache/bin/httpd} prog=httpd pidfile=${PIDFILE-/var/run/httpd.pid} lockfile=${LOCKFILE-/var/lock/subsys/httpd} RETVAL=0 start() { echo -n $"Starting $prog: " LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS RETVAL=$? echo [ $RETVAL = 0 ] && touch ${lockfile} return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc -p ${pidfile} -d 10 $httpd RETVAL=$? echo [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile} } reload() { echo -n $"Reloading $prog: " if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then RETVAL=$? echo $"not reloading due to configuration syntax error" failure $"not reloading $httpd due to configuration syntax error" else killproc -p ${pidfile} $httpd -HUP RETVAL=$? fi echo } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status -p ${pidfile} $httpd RETVAL=$? ;; restart) stop start ;; condrestart) if [ -f ${pidfile} ] ; then stop start fi ;; reload) reload ;; graceful|help|configtest|fullstatus) $apachectl $@ RETVAL=$? ;; *) echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}" exit 1 esac exit $RETVAL [root@localhost tmp]# chmod +x /etc/rc.d/init.d/httpd #給服務腳本權限 [root@localhost tmp]# chkconfig --add httpd #加入服務列表 [root@localhost tmp]# chkconfig --level 2345 httpd on #加入運行啓動級別 [root@localhost tmp]# chkconfig --list | grep httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off #現在可以使用service httpd start的方式來管理httpd服務 #添加PATH環境變量,以正常的情況執行http相關命令 [root@localhost ~]# cat /etc/profile.d/httpd.sh export PATH=$PATH:/usr/local/apache/bin
配置httpd支持ssl功能
1、首先需編譯安裝支持ssl功能
2、啓用mod_ssl模塊功能,在httpd.conf文件中開啓
3、Include /etc/httpd/extra/httpd-ssl.conf,在httpd.conf文件中開啓
4、在/etc/httpd/extra/httpd-ssl.conf中定義虛擬主機即可
mysql配置文件格式,集中式配置文件,可以爲多個程序提供管理
[mysql] #對客戶端mysql程序生效
指令
[mysqld] #對服務端mysqld生效
指令
[client] #對所有客戶端程序生效
指令
配置文件:
/etc/my.cnf -->/etc/mysql/my.cnf-->$BASEDIR/my.cnf-->$DATADIR/my.cnf-->~/.my.cnf
#$BASEDIR,進程運行目錄,一般爲軟件安裝目錄,一般也存入配置文件於此
配置文件尋找的時候,都會把以上文件尋找一次,如果配置中有衝突時,以最後一個生效
show databases; performance_schema #是一個系統狀態收集庫,如連接狀態,連接次數、用戶請求等信息
mysql服務器維護了兩類變量
1、服務器變量
用於定義mysql服務器運行特性,如datadir
show global variables
show global status like 'datadir'#查看全局中的某個變量信息
2、狀態變量
保存了mysql服務器運行的統計數據,不可改
show global status #查看全局的
show global status like '%select%' #查看全局中的某個變量信息
mysql通配符:
_:任意單個字符
%:任意長度的任意字符
select version(); 顯示當前系統版本
select database();顯示當前數據庫
select user();當前登陸的用戶
編譯安裝LAMP之MySQL
版本mysql.5.5.28
由於使用的是通用二進制格式,不需要編譯安裝,可直接使用,
tar xf mysql-5.5.28-linux2.6-x86_x64.tar.gz -C /usr/local #必須解壓到/usr/local/mysql下 ln -sv mysql-5.5.28-linux2.6 mysql #直接創建mysql連接,保留原有的目錄格式 groupadd -r -g 306 mysql #-r指定爲一個系統組 -g指定GID useradd -g 306 -r -u 306 mysql #-u 指定UID #安裝 #修改權限 chown -R mysql.mysql /usr/local/mysql/* #需要將所有的文件用戶、組改到mysql用戶和組 #運行mysql_install_db文件,他是初始化數據庫 scripts/mysql_install_db --help --datadir=path #數據庫存放目錄,默認存放在軟件目錄下的data目錄中,可以創建lvm卷使用 --user=user_name scripts/mysql_install_db --user=mysql --datadir=/mydata/data/ #mydata已經是LVM,請以下 #修改軟件目錄下的屬主改爲root,以防sql被***利用 chown -R root /usr/local/mysql/* #cp服務管理腳本文件至/etc/init.d/mysqld cp support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld chconfig --level 2345 mysqld #複製配置文件到/etc/my.cnf cp support-files/my-large.cnf /etc/my.cnf thread_concurrency = 8 #mysql的併發量 datadir = /mydata/data #添加mysql的數據存放目錄,如果沒有修改,不需要添加 #添加二進制變量 vim /etc/profile.d/mysql.sh export PATH=$PATH:/usr/local/mysql/bin #啓動mysqld服務 service mysqld start #mysql連接msyqld服務 show databases; performance_schema #是一個系統狀態收集庫,如果連接狀態,連接次數等信息 #輸出庫文件 vim /etc/ld.so.conf.d/mysql.conf /usr/local/mysql/lib #輸出庫文件,使其生效,讓庫文件刷新/etc/ld.so.cache緩存 ldconfig -v #創建頭文件連接 ln -sv /usr/local/mysql/include /usr/include/mysql
創建LVM用於mysqldate存放
#設置好分區,分區在擴展卷最好,用於以後容量擴展,並設置分區類型爲8e [root@localhost ~]# pvcreate /dev/sdb5 #創建物理卷 Physical volume "/dev/sdb5" successfully created [root@localhost ~]# vgcreate myvg /dev/sdb5 #創建卷組 Volume group "myvg" successfully created [root@localhost ~]# lvcreate -n mydate -L 4G myvg #創建邏輯卷-n指定名稱 -L指定容量 Logical volume "mydate" created [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_root VolGroup -wi-ao---- 17.51g lv_swap VolGroup -wi-ao---- 2.00g mydate myvg -wi-a----- 4.00g #創建目錄用於lv卷組開機自動掛載,編輯/etc/fstab文件,如下 /dev/myvg/mydate /mydata ext3 defaults 0 0 #運行掛載 [root@localhost ~]# mount -a /dev/mapper/myvg-mydate on /mydata type ext3 (rw) [root@localhost mydata]# mkdir mydata #創建mydata目錄專門用於存放sql數據 [root@localhost mydata]# chown -R mysql:mysql /mydata/ #修改相關權限 [root@localhost /]# chmod 750 mydata/mydata/ #修改相關權限
編譯安裝LAMP之MySQL
版本mysql.5.5.28
配置文件爲mysql解壓目錄中的my.cnf文件。可以不用複製到/etc目錄
編譯安裝LAMP之PHP,及xcache功能
# tar xf php-5.4.13.tar.bz2 # cd php-5.4.13 # ./configure --prefix=/usr/local/php --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 --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts --prefix=/usr/local/php 指定安裝路徑 --with-mysql=/usr/local/mysql #指定mysql安裝路徑 --with-openssl #開啓支持openssl功能 --with-mysqli=/usr/local/mysql/bin/mysql_config #是php與mysql交互的另一個api接口,mysql_c onfig也是一個二進制程序 --enable-mbstring #most byte功能支持 --with-freetype-dir #支持freetype功能,freetype是一個字體庫,引用特殊字體 --with-jpeg-dir #jpeg庫文件 --with-png-dir #png庫文件 --with-zlib #互聯網通用壓縮庫,安裝httpd使用的--enable-deflate也需要zlib庫 --with-libxml-dir=/usr #xml是擴展標記語言,系統交互的通用語言,指定xml庫文件路徑 --enable-xml #開啓xml功能 --enable-sockets #開啓進程間通信 --with-apxs2=/usr/local/apache/bin/apxs#把php編譯成apache模塊,httpd與php通信使用模塊難住 --with-mcrypt #額外的加密庫 --with-config-file-path=/etc #php的配置文件路徑 ,一般爲php.ini爲主配置文件 --with-config-file-scan-dir=/etc/php.d #php分段配置文件存放路徑,爲/etc/php.d/*.ini文件 --with-bz2 #壓縮庫文件支持 --enable-maintainer-zts #開啓zts功能,如果是perfork模型,就不需要開啓 說明 1、這裏爲了支持apache的worker或event這兩個MPM,編譯時使用了--enable-maintainer-zts 選項。 2、如果使用PHP5.3以上版本,爲了鏈接MySQL數據庫,可以指定mysqlnd,這樣在本機就不需要先安裝MySQL或MySQL開發包了。mysqlnd從php 5.3開始可用,可以編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定形成依賴),但從PHP 5.4開始它就是默認設置了。 # ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd 3、如果需要編譯成fastcgi工作模型,需要如下: 去掉-with-apxs2=/usr/local/apache/bin/apxs,換成--enable-fpm #複製php.ini文件到/etc/php.ini #添加httpd服務支持的文件類型 vim /etc/httpd/httpd.conf AddType application/x-httpd-php .php AddType application/x-httpd-source .phps DirectoryIndex index.php index.html #是在dir_module封裝下的。 #編輯httpd的網頁文件,測試php是否正常 vim /usr/local/apache/htdocs/index.php <?php phpinfo(); ?> #編輯httpd的網頁文件,測試php與mysql是否正常 vim /usr/local/apache/htdocs/index.php <?php $conn=mysql_connect('localhost','root','') if ($conn) echo "Success..."; else echo "Failure..."; ?> #php配置爲xcache模式 1、首先使用php命令加載xcache /usr/local/php/bin/phpize #在php的安裝目錄中執行phpize,識別xcache功能,需切換到 xcache目錄中執行 2、./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config --with-php-config=/usr/local/php/bin/php-config #這個配置文檔能獲得php的編譯信息 和配置信息 3、將xcache.ini提供到/etc/php.d/目錄,xcache.ini是官方提供的樣例配置文件 4、配置xcache.ini文件,修改zend_extension=選項,將編譯完成後的正確信息填寫進去 zend_extension = /usr/local/lib/php/extensions/non-debug-non-zts-20100525/xcache.so 在配置文件中,告訴php有一個zend擴展,擴展的庫文件路徑 5、xcache其他配置選項 xcache.admin.enable_auth = on #Xcache管理認證功能 xcache.admin.user = "m0o" #xcache的用戶 xcache.admin.pass = "" #xcache密碼爲空密碼,加密碼需是md5格式 xcache.shm_scheme = "mmap" #內存共享機制爲mmap shm是共享內存 mmap是內存映射 xcache.size = 60M # 共享內存大小,0爲關閉xcache功能 xcache.count = 1 #設置cpu個數,根據實際cpu數量更改 xcache.slots = 8k #緩存中有多少個槽位來緩存opcode, 槽位爲8k xcache.ttl = 0 #過期時間,0表示不過期,實行自我管理 xcache.gc_interval = 0 #如果設置過期時間,需配置這項,gc是垃圾回收器,0表示不掃描 xcache.var_size = 4M #var變量緩存大小 xcache.var_cont = 1 #緩存數量 xcache.var_slots = 8k xcache.cacher = on 緩存功能是否啓用 xcache.optimizer = off #是否啓用xcache自身的優化器 #需要xcache配置生效,需重啓httpd服務,因爲php模塊是由apache加載的 #在phpinfo()參數中就可以查看xcache的啓用情況了
編譯安裝LAMP之PHP爲fpm模式(FastCGI)
1、首先需要保證httpd中有fcgi模塊 2、在編譯的時候將--with-apxs2=/usr/local/apache/bin/apxs 改爲--enable-fpm,去掉 --enable-maintainer-zt
爲編譯好的httpd服務,提供虛擬主機
1、首先禁用中心主機,註釋DocumentRoot選項;
2、啓用virtual hosts選項 Include
3、/etc/httpd/extra/httpd-vhost.conf,再其中添加虛擬主機
需對每個虛擬主機目錄進行訪問定義,2.4和以後版本才需要,需明確定義
<Directory "/www/a.org">
Options none
AllowOverride none
Require all granted
</Directory>
對httpd的網站進行壓力測試
1、使用ab工具,路徑爲:/usr/local/apache/bin/ab
ab工具選項
-c 併發量
-n 一共要請求多少個請求
-r 忽略請求錯誤
ab -c 10 -n 100 http://www.a.com/index.html
2、使用ulimit命令設置進程打開文件限制
ulimit -n 10000
壓力測試工具:
http_load
siege
webbench