建立LAMP平臺 ulimit命令

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

            www.mageedua.com

            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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章