`

Linux+Nginx+PHP+MySQL+MemCached+eaccelerator安装优化记录

阅读更多
http://admclub.com/view/linux-nginx-php-mysql-memcached-eaccelerator-%E5%AE%89%E8%A3%85%E4%BC%98%E5%8C%96%E8%AE%B0%E5%BD%95
近日,某论坛因发展需要,增加了一台服务器,他们装好系统,叫我帮安装服务器环境,数据同步处理并希望做到负载均衡等。以下为过程记录。中间可能会有些过程被跳过,本来想写成教程的,但是年关已近,实在是太多事情需要处理。现只能先把记录发上来,以后看有没有时间重新整理成教程。

需要安装的软件:

Web服务器软件:Nginx 1.0.11
FCGI:php 5.2.17
数据库:MySQL 5.1.x(服务器A),MySQL 5.5(服务器B)
服务器优化:MemCached,eaccelerator,google-perftools
实时同步软件:rsync,inotify-tools

以下是两服务器可以相同的操作记录:

安装常见的依赖软件/lib/so:

yum install  autoconfig automake make gcc gcc-c++ \
pcre-devel openssl-devel patch pam-devel libmcrypt-devel gd-devel -y

安装 google-perftools

先要安装 libunwind:

?
1
2
3
4
5
6
7
8
wget http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99.tar.gz
tar zxvf libunwind-0.99.tar.gz
cd libunwind-0.99/
CFLAGS=-fPIC ./configure --prefix=/usr
make CFLAGS=-fPIC
make CFLAGS=-fPIC install

cd ..
然后才开始安装google-perftools:

?
1
2
3
4
5
6
7
wget http://google-perftools.googlecode.com/files/google-perftools-1.7.tar.gz
tar xzvf google-perftools-1.7.tar.gz
cd google-perftools-1.7
./configure --prefix=/usr --enable-frame-pointers
make
make install
cd ..
接着安装Nginx

为了优化Nginx,我使用了agentzh-memc-nginx-module模块和ngx_cache_purge,ngx_http_upstream_keepalive模块,ngx_cache_purge用来管理Nginx中缓存在Memcache中的内容而ngx_http_upstream_keepalive则用来保持Nginx与Memcached之间的连接,不用频繁建立和断开连接,也是优化Nginx吧。

不过,首先还是修改一下Nginx源码,这样可以使本来是5M大的Nginx内核减肥到只有680K大小!

?
1
2
3
4
wget http://nginx.org/download/nginx-1.0.11.tar.gz
tar xzvf nginx-1.0.11.tar.gz
cd nginx*
cd auto/cc


?
1
vi gcc
找到

# debug
CFLAGS="$CFLAGS -g"

然后在CFLAGS前面加上#号,得到:

# debug
#CFLAGS="$CFLAGS -g"

好了,保存退出。

回到 Nginx目录

?
1
cd ../..
开始编译安装Nginx,注意,由于原来该论坛使用Apache,所以我保留了原来的用户权限。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
./configure --user=apache --group=apache --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module --with-openssl= \
--with-http_addition_module \
--with-zlib= \
--add-module=../agentzh-memc-nginx-module-a0bc33a \
--add-module=../ngx_cache_purge-1.3 \
--with-file-aio --with-google_perftools_module \
--with-http_gzip_static_module \
--add-module=../ngx_http_upstream_keepalive-d9ac9ad67f45

make -j8
make install
为google-perftools添加线程目录



?
1
2
mkdir /tmp/tcmalloc
chmod 0777 /tmp/tcmalloc
将Nginx注册成系统服务

?
1
vi /etc/init.d/nginx
/etc/init.d/nginx文件内容如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig:   - 85 15
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /usr/local/nginx/conf/nginx.conf
# pidfile:     /usr/local/nginx/logs/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

lockfile=/var/lock/subsys/nginx

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest || return $?
    stop
    start
}

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}

force_reload() {
    restart
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac
保存退出。

设置相关权限,并启动Nginx

?
1
2
3
4
chmod +x /etc/init.d/nginx
chkconfig –add nginx
chkconfig nginx on
service nginx start
完成Nginx安装。



安装PHP和php-fpm
先下载PHP,PHP-FPM和freetype2源码

?
1
2
3
wget http://cn.php.net/get/php-5.2.17.tar.gz/from/this/mirror
wget http://php-fpm.org/downloads/php-5.2.17-fpm-0.5.14.diff.gz
wget http://downloads.sourceforge.net/project/freetype/freetype2/2.3.12/freetype-2.3.12.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Ffreetype%2Ffiles%2Ffreetype2%2F2.3.12%2F&ts=1314417995&use_mirror=softlayer
安装FreeType2

?
1
2
3
4
5
6
tar xzvf freetype-2.3.12.tar.gz
cd freetype-2.3.12
make setup
make
make install
cd ..
为PHP打上php-fpm补丁

?
1
2
tar xzvf php-5.2.17.tar.gz
gzip -cd php-5.2.17-fpm-0.5.14.diff.gz | patch -d php-5.2.17 -p1
再装一次依赖

?
1
yum install libxml2-devel gd-devel curl-devel -y
开始装PHP

?
1
2
3
4
5
6
7
8
9
./configure --enable-fastcgi --enable-fpm --with-mysql \
--with-mysqli --with-gd=/usr --with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d --with-curl \
--enable-calendar --with-openssl --with-zlib --without-sqlite --disable-pdo \
--enable-mbstring --with-freetype-dir=/usr \
--enable-sockets --enable-zip

make
make install
不知道是不是兼容性问题,在CentOS 6.2上我怎么也没办法让PHP支持libmhash和libmcrypt,尽管我已经正常安装了这些libs。以后有时候再处理这个。

安装Memcached

?
1
2
3
4
5
wget http://pecl.php.net/get/memcache-2.2.6.tgz
tar xzvf memcache-2.2.6.tgz
cd memcache-2.2.6
phpize
./configure --enable-memcache && make && make install
安装eaccelerator

?
1
2
3
4
5
6
wget http://downloads.sourceforge.net/project/eaccelerator/eaccelerator/eAccelerator%200.9.6.1/eaccelerator-0.9.6.1.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Feaccelerator%2Ffiles%2F&ts=1325686230&use_mirror=nchc -O eaccelerator-0.9.6.1.zip

unzip eaccelerator-0.9.6.1.zip
cd eaccelerator-0.9.6.1
phpize
./configure --enable-eaccelerator && make && make install
修改PHP配置,使PHP支持Memcache和eaccelerator

?
1
vi /etc/php.ini
添加

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
extension= memcache.so

[eaccelerator]
zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.cache_dir="/var/tmp/eaccelerator_cache"
eaccelerator.shm_size="64"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

[memcache]
memcache.hash_strategy = "consistent"
memcache.default_timeout_ms = 300
保存退出。
运行下面两行命令,创建eaccelerator缓存目录

?
1
2
mkdir /var/tmp/eaccelerator_cache -p
chmod 0777 /var/tmp/eaccelerator_cache
启动Memcached和php-fpm

?
1
2
3
4
memcached -d -p 11211 -u memcached -m 64 -c 1024
memcached -d -p 11212 -u memcached -m 64 -c 1024
memcached -d -p 11213 -u memcached -m 1024
memcached -d -p 11214 -u memcached -m 1024
启动php-fpm

?
1
php-fpm start
安装MySQL 5.5

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.19.tar.gz/from/http://mysql.cdpa.nsysu.edu.tw/
tar xzvf mysql-5.5.19.tar.gz
yum install cmake -y
cd mysql-5.5.19

cmake . -DCMAKE_INSTALL_PREFIX=/usr/ \
-DMYSQL_DATADIR=/var/mysql \
-DDEFAULT_CHARSET=utf8 \
-DWITH_EXTRA_CHARSETS=utf8,gbk,gb2312 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_LIBWRAP=1 \
-DWITH_SSL=yes \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1

make
make install
初始化MySQL

?
1
2
3
4
5
6
7
8
9
10
useradd mysql
mkdir /var/mysql
chown -R mysql:mysql /var/mysql

chmod +x scripts/mysql_install_db
scripts/mysql_install_db --basedir=/usr --datadir=/var/mysql
chown -R mysql:mysql /var/mysql

cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
将MySQL 5.5注册成系统服务

?
1
2
3
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
最后一步,启动MySQL

?
1
service mysqld start
好了,到这里就完成了基本的WEB环境的安装了。

休息下,写文章跟写代码一样累啊。

下一篇再把Nginx,PHP,MySQL的配置贴出吧,顺便将MySQL数据主从同步,图片实时同步和其它的一些优化配置写出来。
分享到:
评论

相关推荐

    《APMServ 5.2.6》:一键快速搭建Apache+PHP+MySQL+Nginx+Memcached+ASP平台的绿色软件

    《APMServ 5.2.6》:一键快速搭建Apache+PHP+MySQL+Nginx+Memcached+ASP平台的绿色软件 APMServ 5.2.6 绿色服务器 PHP服务器 ASP服务器 APMServ 5.2.6 是一款拥有图形界面的快速搭建Apache 2.2.9、PHP 5.2.6...

    nginx+apache+mysql+php+memcached+squid搭建门户网站

    ### Nginx+Apache+MySQL+PHP+Memcached+Squid 搭建门户网站 #### 一、前言与架构概述 随着互联网技术的发展,如何构建一个高效、稳定且能够应对高并发访问的Web服务器成为了许多企业和开发者关注的重点。本文将...

    nginx+apache+mysql+php+memcached+squid搭建集群web环境

    例如,这里使用的是双核Intel Xeon 3.00GHz服务器,2GB内存,CentOS 4.4操作系统,以及一系列预安装的软件版本,如Apache 2.2.3、PHP 5.2.0、eAccelerator 0.9.5、memcache 1.2.0、MySQL 5.0.27、Nginx 0.5.4和Squid...

    搭建nginx+apache+mysql+php+memcached+squid服务器集群.zip_nginx正向代理

    在本场景中,我们讨论的是基于Nginx、Apache、MySQL、PHP、Memcached和Squid构建的服务器集群。下面将详细解释这些组件及其在集群中的作用。 1. **Nginx**:Nginx是一个高性能的HTTP和反向代理服务器,以其轻量级和...

    nServer-v2.1023[FTP + MYSQL + HTTP + PHP(FCGI)]

    3.运行xServer.bat,选择[安装服务],即可安装MYSQL+Nginx+PHP服务 Nginx默认监听地址为0.0.0.0:80 MySQL默认监听地址为0.0.0.0:3306 PHP52默认监听地址为127.0.0.1:9521 PHP53默认监听地址为127.0.0.1:9531 ...

    LNMP一键安装包 v0.8.zip

    LNMP代表的就是Linux下Nginx、MySQL、PHP这种网站服务器架构,相对地,LAMP代表Linux下Apache、MySQL、PHP这种网站服务器架构。 Nginx是一个小巧而高效的Linux下的Web服务器软件,已经在一些俄罗斯的大型网站上运行...

    LNMP一键安装包 v0.8

    LNMP一键安装包包含以下软件Nginx MySQL PHP PHPMyAdmin Zend Optimizer eAccelerator Nginx-RRD vsFTPD2011年12月14日发布LNMP 0.8优化安装过程及错误处理;增加imageMagick安装脚本;增加memcached安装脚本;Nginx...

    php基础教程Apache+MySQL+PHP集成环境全集

    - **XAMPP**: XAMPP是一个非常流行的免费开源软件包,它支持跨平台(Windows、Linux、Mac OS),包含了Apache Web服务器、MySQL数据库服务器、Perl以及PHP。XAMPP提供了不同版本的组件,例如: - Apache 2.2.9 - ...

    lanmp v2.2一键安装包

    LANMP V2.2一键安装包是一款专为快速部署Web服务器环境而设计的工具包,它集成了LAMP(Linux + Apache + MySQL + PHP)、LNMP(Linux + Nginx + MySQL + PHP)以及LNAMP(Linux + Nginx + Apache + MySQL + PHP)等...

    YimonServer(Nginx+php绿色服务器软件) v0.1.0

    YimonServer是一个拥有图形界面的快速搭建Nginx、PHP、MySQL、PHPMyAdmin、eAccelerator、ZendOptimizer、ZendGuard的绿色服务器套件。只要将程序文件夹拷贝到任意分区、目录,双击运行YimonServer.exe即可操作。...

    Html+ASP+PHP+MySql模拟器APMServ5.2.61

    &4.0.26、Nginx 0.7.19、Memcached 1.2.4、phpMyAdmin 2.11.9.2、OpenSSL、SQLite、 ZendOptimizer,以及ASP、CGI、Perl网站服务器平台的绿色软件。无需安装,具有灵活的移动 性,将其拷贝到其它目录、分区或别的...

    LAMP网站架构图实战总结

    LAMP(Linux, Apache, MySQL, PHP)架构是一种常见的用于构建动态网站的技术组合,尤其适合高访问量的网站。这个架构的核心是开源的Apache HTTP服务器,以其稳定性、模块化和广泛的支持而著名。然而,Apache在处理高...

    Linux-Apache-MySQL-PHP网站架构方案分析

    Linux-Apache-MySQL-PHP(LAMP)网站架构是一种广泛应用的开源技术组合,尤其适合构建Web服务。这个架构的核心组件包括: 1. **Linux操作系统**:Linux是免费且开源的Unix-like操作系统,提供了多种发行版,如Red ...

    LNMP 一键安装包.zip

    优化安装过程及错误处理; MySQL安装增加InnoDB选项(可选); 修正eaccelerator和ionCube的PHP版本判断错误的问题; 修正memcached pid创建失败的问题 修正pdo_mysql安装方法; PHP增加部分禁用函数; ...

    LAMP网站架构方案分析.pdf

    LAMP(Linux-Apache-MySQL-PHP)网站架构是一种广泛应用的开源Web开发框架,尤其适合构建大流量、高并发的网站系统。该架构的核心组件包括: 1. **Linux操作系统**:作为开源操作系统,Linux提供了多个发行版,如...

    centos6.2+lnmp一键安装包+discuz论坛安装教程

    LNMP 一键安装包提供了一个简单的方式来安装 LNMP 服务器,并且可以轻松地安装其他组件,例如 PureFTPd、eAccelerator、ionCube、imageMagick 和 memcached 等。同时, LNMP 一键安装包也提供了一个简单的方式来...

Global site tag (gtag.js) - Google Analytics