一、編譯安裝nginx,依賴libevent API
1、安裝開發環境
yum groupinstall "Development Libraries" "Development Tools"
yum install pcre-devel -y
2、添加nginx的用戶和組
groupadd -r nginx
useradd -r -g nginx -s /bin/false -M nginx
3、編譯安裝libevent
軟件包:libevent-2.0.16-stable.tar.gz
tar xf libevent-2.0.16-stable.tar.gz
cd libevent-2.0.16-stable
./configure
make && make install
vim /etc/ld.so.conf.d/lib.local.conf
/usr/local/lib
ldconfig -v | grep libevent
4、編譯安裝nginx
軟件包:nginx-1.0.11.tar.gz
tar xf nginx-1.0.11.tar.gz
cd nginx-1.0.11
./configure \
--prefix=/usr \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/tmp/nginx/client/ \
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
--with-pcre
make && make install
5、爲nginx添加服務腳本,在/etc/init.d/nginx,並啓動
chmod +x /etc/init.d/nginx
chkconfig --add nginx
service nginx start
二、安裝編譯libiconv、libmcrypt、mhash,讓php支持更強的功能
1、編譯安裝libiconv,將系統語言與用戶語言更好的切換,是個庫文件
軟件包:libiconv-1.13.1.tar.gz
tar xf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure
make && make install
2、編譯安裝libmcrypt,用於實現數據加密解密的庫文件
軟件包:libmcrypt-2.5.8.tar.gz
tar xf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make && make install
ldconfig -v
cd libltdl
./configure --with-gmetad --enable-gexec --enable-ltdl-install
make && make install
ldconfig -v
3、編譯安裝mhash,計算數據hash算法
軟件包:mhash-0.9.9.9.tar.bz2
tar xf mhash-0.9.9.9.tar.bz2
cd mhash-0.9.9.9
./configure
make && make install
ln -sv /usr/local/lib/libmcrypt* /usr/lib/
ln -sv /usr/local/lib/libmhash.* /usr/lib/
三、編譯安裝memcached
1、軟件包:memcached-1.4.10.tar.gz
tar xf memcached-1.4.10.tar.gz
cd memcached-1.4.10
./configure
make && make install
2、添加memcached的服務腳本
vim /etc/init.d/memcached
#!/bin/bash
#
# Init file for memcached
#
# chkconfig: - 86 14
# description: Distributed memory caching daemon
#
# processname: memcached
# config: /etc/sysconfig/memcached
. /etc/rc.d/init.d/functions
## Default variables
PORT="11211"
USER="nobody"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
RETVAL=0
prog="/usr/local/bin/memcached"
desc="Distributed memory caching"
lockfile="/var/lock/subsys/memcached"
start() {
echo -n $"Starting $desc (memcached): "
daemon $prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch $lockfile
return $RETVAL
}
stop() {
echo -n $"Shutting down $desc (memcached): "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f $lockfile
return $RETVAL
}
restart() {
stop
start
}
reload() {
echo -n $"Reloading $desc ($prog): "
killproc $prog -HUP
RETVAL=$?
echo
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
condrestart)
[ -e $lockfile ] && restart
RETVAL=$?
;;
reload)
reload
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=1
esac
exit $RETVAL
3、chmod +x /etc/init.d/memcached
chkconfig --add memcached
service memcached start
netstat -tnlp查看是否有11211的端口
四、編譯安裝MySQL
軟件包:mysql-5.5.19-linux2.6-i686.tar.gz
tar xf mysql-5.5.19-linux2.6-i686.tar.gz -C /usr/local
groupadd -r -g 306 mysql
useradd -r -g mysql -u 306 -s /sbin/nologin -M mysql
cd /usr/local
ln -sv mysql-5.5.19-linux2.6-i686 mysql
cd mysql
chown -R mysql:mysql .
scripts/mysql_install_db --user=mysql
chown -R root .
把data作爲數據目錄
chown -R mysql data/
添加服務,並導出庫
cd support-files/
cp my-large.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
vim /etc/ld.so.conf.d/mysqld.conf
/usr/local/mysql/lib
ldconfig -v
創建頭文件連接,添加PATH變量
ln -sv /usr/local/mysql/include /usr/include/mysql
vim /etc/profile
PATH=$PATH:/usr/local/mysql/bin
. /etc/profile
用mysql連接看是否成功
五、編譯安裝php
軟件包:php-5.3.6.tar.bz2
tar xf php-5.3.6.tar.bz2
cd php-5.3.6
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --enable-fpm --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 --with-iconv-dir=/usr/local
make ZEND_EXTRA_LIBS='-liconv'
make install
啓動fastcgi
cp php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
啓用以下的選項(;表註釋)
vim /usr/local/php/etc/php-fpm.conf
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
啓用php-fpm
/usr/local/php/sbin/php-fpm
netstat -tnlp查看是否有9000端口
六、讓nginx能利用fastcgi的功能
vim /etc/nginx/nginx.conf
啓用location ~ \.php$ {
root /web/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param
ts$fastcgi_script_name;
include fastcgi_params;
}
添加支持php格式的網頁
location / {
root /web/html;
index index.html index.php index.htm;
}
vim /etc/nginx/fastcgi_params
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name
添加php的測試網頁,測試是否成功
mkdir /web/html -pv
vim /web/html/index.php
<?php
phpinfo();
?>
service nginx restart
在客戶端測試看是否能打開測試也
http://172.16.6.3/index.php
七、安裝編譯配置memcache
軟件包:memcache-2.2.5.tgz
tar xf memcache-2.2.5.tgz
cd memcache-2.2.5
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
make && make install
cp /usr/local/php/etc/php.ini /usr/local/php/lib/php.ini
在“動態模塊”相關的位置添加如下一行來載入memcache擴展
vim /usr/local/php/lib/php.ini
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcache.so
添加測試頁面,對memcached功能測試
vim /web/html/test.php
<?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
$mem->set('mykey', 'Hello World', 0, 600);
$val = $mem->get('mykey');
echo "$val is from memcached.";
?>
killall php-fpm
/usr/local/php/sbin/php-fpm
service nginx restart
在客戶端測試:
http://172.16.6.3/test.php
如果有輸出“Hello World is from memcached.”,則表明memcache已經能夠正常工作。
八、編譯安裝libmemcached
使用libmemcached的客戶端工具:
軟件包:libmemcached-1.0.2.tar.gz
tar xf libmemcached-1.0.2.tar.gz
cd libmemcached-1.0.2
./configure
make && make install
ldconfig
客戶端工具:
memcat --servers=127.0.0.1:11211 mykey 遠程管理工具
memping測試服務器是否在線
memslap對服務器做壓力測試
memstat服務器的命中率,緩存的條目等
該工具都可以使用--servers
九、安裝編譯配置xcache,加速php(操作碼)
軟件包:xcache-1.3.2.tar.gz
tar xf xcache-1.3.2.tar.gz
cd xcache-1.3.2
/usr/local/php/bin/phpize
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
make && make install
安裝結束時,會出現類似如下幾行
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
cat xcache.ini >> /usr/local/php/lib/php.ini
編輯/usr/local/php/lib/php.ini,添加如下幾行
zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/xcache.so
zend_extension ts = /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/xcache.so
用ab壓力測試驗證下效果