Nginx架构WEB服务器
- Tue, 02 Jun 2009 20:17:53 +0800
现在说一下LNMP架构的服务器的安装过程,作为自己的一个笔记,也为一些需要帮助的朋友提供点参考。
L方面使用Debian(其实我用FreeBSD),基本是个什么都没的干净系统(连GCC都没)。1.首先我们安装GCC编译环境
因为后面的软件都需要编译,所以这个不装就太不像话了。
apt-get install build-essential如果出现如下提示:
E: Couldn't find package build-essential
则需要更新包列表:
apt-get update此开发环境包安装后,则已经安装上如下包了:
binutils bzip2 cpp cpp-4.3 dpkg-dev g++ g++-4.3 gcc gcc-4.3 libc6 libc6-dev libgmp3c2 libgomp1 libmpfr1ldbl libstdc++6-4.3-dev libtimedate-perl linux-libc-dev make patch perl perl-modulesSuggested packages:
binutils-doc bzip2-doc cpp-doc gcc-4.3-locales debian-keyring g++-multilib g++-4.3-multilib gcc-4.3-doc libstdc++6-4.3-dbg gcc-multilib
manpages-dev autoconf automake1.9 libtool flex bison gdb gcc-doc gcc-4.3-multilib libmudflap0-4.3-dev libgcc1-dbg libgomp1-dbg libmudflap0-dbg
glibc-doc libc6-i686 libstdc++6-4.3-doc make-doc diff-doc perl-doc libterm-readline-gnu-perl libterm-readline-perl-perl2.安装MYSQL
获取MysQL
wget http://mysql.west.mirrors.airband.net/Downloads/MySQL-5.1/mysql-5.1.34.tar.gztar -zxvf mysql-5.1.34.tar.gz
cd mysql-5.1.34
./configure --prefix=/usr/local/mysql --with-charset=utf8 \
--with-extra-charsets=complex \
--enable-thread-safe-client \
--enable-assembler \
--with-big-tables \
--with-readline \
--with-ssl \
--with-embedded-server \
--enable-local-infile \
--with-plugins=innobasemake && make install
如果有以下错误
checking for termcap functions library... configure: error: No curses/termcap library found
说明 curses/termcap 库没有安装
apt-cache search curses | grep lib安装 libncurses5-dev
wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
tar zxvf ncurses-5.6.tar.gz
cd ncurses-5.6
./configure --prefix=/usr --with-shared --without-debug
make
make install clean
或者这样更方便
apt-get install libncurses5-dev之后重新安装MYSQL部分
完成后加入运行mysql用户和组
groupadd mysql
useradd -g mysql mysql更改权限以及拷贝默认配置文件
chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysqlcp support-files/my-medium.cnf /usr/local/mysql/my.cnf
*
建立MYSQL数据库
/usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql设置为开机启动MYSQL
在/etc/rc.local中加入以下启动语句
/bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/my.cnf &如果有错误,查看mysql的错误日志即可。
3.安装PHP
因为要与Nginx配合,所以PHP以FastCGI的方式安装和运行。
同样,PHP也有相关的包要装。首先获取PHP:
wget http://us.php.net/distributions/php-5.2.9.tar.gz因为PHP需要一些库,我们先安装,具体如下:
libiconv libxml2 libxslt freetype libmcrypt jpeg6 libpng curl gd
OpenSSL-devwget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.tar.gz
tar zxvf libiconv-1.13.tar.gz
cd libiconv-1.13/
./configure --prefix=/usr/local
make && make install && make clean
cd ..wget http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make && make install
cd libltdl
./configure --enable-ltdl-install
make && make install
cd ..
make cleanwget http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz
tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9
./configure
make && make install && make clean
cd ..//注
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1wget http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
/sbin/ldconfig
./configure
make && make install && make clean
cd ..安装libxml2
apt-get install libxml2-dev安装libxslt
wget ftp://xmlsoft.org/libxslt/libxslt-1.1.24.tar.gz
tar -zxf libxslt-1.1.24.tar.gz
cd libxslt-1.1.24
./configure --prefix=/usr/local/libxslt --with-libxml-prefix=/usr/local/libxml2
make && make install && make clean
cd ..安装OpenSSL-dev
aptitude update
aptitude install openssl-dev安装libzlib1g-dev
apt-get install libzlib1g-dev安装freetype
wget http://superb-west.dl.sourceforge.net/sourceforge/freetype/freetype-2.3.9.tar.gz
tar zxvf freetype-2.3.9.tar.gz
cd freetype-2.3.9
./configure --prefix=/usr/local/freetype
make && make install && make clean
cd ..安装libpng
wget http://superb-west.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.36.tar.gz
tar zxvf libpng-1.2.36.tar.gz
cd libpng-1.2.36
cp scripts/makefile.std makefile
make && make install安装jpeg6
mkdir /usr/local/jpeg6
mkdir /usr/local/jpeg6/bin
mkdir /usr/local/jpeg6/lib
mkdir /usr/local/jpeg6/include
mkdir /usr/local/jpeg6/man
mkdir /usr/local/jpeg6/man/man1
wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz
tar zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
make && make install && make clean
cd ..安装GD库
wget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
tar -zxf gd-2.0.33.tar.gz
cd gd-2.0.33
./configure --prefix=/usr/local/gd2 \
--with-jpeg=/usr/local/jpeg6/ \
--with-png \
--with-zlib \
--with-freetype=/usr/local/freetype/
make && make install && make clean
cd ..安装CURL
wget http://curl.download.nextag.com/download/curl-7.19.5.tar.gz
tar -zxf curl-7.19.5.tar.gz
cd curl-7.19.5
./configure --prefix=/usr/local/curl配置并编译PHP(谢谢patch来源提供者):
wget http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.9-fpm-0.5.10.diff.gz
gzip -cd php-5.2.9-fpm-0.5.10.diff.gz | patch -d php-5.2.9 -p1
./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5 \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-iconv-dir=/usr/local \
--with-freetype-dir=/usr/local/freetype \
--with-jpeg-dir=/usr/local/jpeg6 \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr/local/libxml2 \
--enable-xml \
--disable-rpath \
--enable-discard-path \
--enable-safe-mode \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl=/usr/local/curl \
--with-curlwrappers \
--enable-mbregex \
--enable-fastcgi \
--enable-fpm \
--enable-force-cgi-redirect \
--enable-mbstring \
--with-mcrypt \
--with-gd=/usr/local/gd2 \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-ldap \
--with-ldap-sasl \
--with-xmlrpc \
--with-xsl=/usr/local/libxslt \
--enable-xslt \
--enable-zip
make ZEND_EXTRA_LIBS='-liconv'
make installcp php.ini-dist /usr/local/php5/php.ini
4. 安装memcache以及eaccelerator
memcache
wget http://pecl.php.net/get/memcache-2.2.5.tgz
tar -zxf memcache-2.2.5.tgz
cd memcache-2.2.5
/usr/local/php5/bin/phpize
./configure --with-php-config=/usr/local/php5/bin/php-config
make && make install && make cleaneAccelerator
wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
tar jxvf eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3
/usr/local/php5/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php5/bin/php-config
make && make install
cd ..修改php.ini,以加memcache和eaccelerator
修改为extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/"
extension = "memcache.so"
修改output_buffering 为 On加入eAccelerator加速
mkdir /usr/local/ea_cache[eaccelerator]
zend_extension="/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/usr/local/ea_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="300"
eaccelerator.shm_prune_period="120"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"修改php-fpm配置文件,启动php-cgi进程
vi /usr/local/php5/etc/php-fpm.conf
内容如下:
<?xml version="1.0" ?>
<configuration>
<section name="global_options">
<value name="pid_file">/usr/local/php5/logs/php-fpm.pid</value>
<value name="error_log">/usr/local/php5/logs/php-fpm.log</value>
<value name="log_level">notice</value>
<value name="emergency_restart_threshold">10</value>
<value name="emergency_restart_interval">1m</value>
<value name="process_control_timeout">5s</value>
<value name="daemonize">yes</value>
</section><workers>
<section name="pool">
<value name="name">default</value>
<value name="listen_address">127.0.0.1:9000</value>
<value name="listen_options">
<value name="backlog">-1</value>
<value name="owner"></value>
<value name="group"></value>
<value name="mode">0666</value>
</value>
<value name="php_defines">
<value name="sendmail_path">/usr/sbin/sendmail -t -i</value>
<value name="display_errors">1</value>
</value>
<value name="user">www</value>
<value name="group">www</value>
<value name="pm">
<value name="style">static</value>
<value name="max_children">25</value>
<value name="apache_like">
<value name="StartServers">20</value>
<value name="MinSpareServers">5</value>
<value name="MaxSpareServers">35</value>
</value>
</value>
<value name="request_terminate_timeout">0s</value>
<value name="request_slowlog_timeout">0s</value>
<value name="slowlog">logs/slow.log</value>
<value name="rlimit_files">10240</value>
<value name="rlimit_core">0</value>
<value name="chroot"></value>
<value name="chdir"></value>
<value name="catch_workers_output">yes</value>
<value name="max_requests">10240</value>
<value name="allowed_clients">127.0.0.1</value>
<value name="environment">
<value name="HOSTNAME">$HOSTNAME</value>
<value name="PATH">/usr/local/bin:/usr/bin:/bin</value>
<value name="TMP">/tmp</value>
<value name="TMPDIR">/tmp</value>
<value name="TEMP">/tmp</value>
<value name="OSTYPE">$OSTYPE</value>
<value name="MACHTYPE">$MACHTYPE</value>
<value name="MALLOC_CHECK_">2</value>
</value>
</section>
</workers></configuration>
5. 安装Nginx
Nginx依赖一些库,先安装它们,但都取决于是否需要
.gzip 模块需要 zlib 库
.rewrite 模块需要 pcre 库
.ssl 功能需要 openssl 库我需要rewrite,所以得装个pcre
wget http://superb-west.dl.sourceforge.net/sourceforge/pcre/pcre-7.9.tar.gz
tar zxf pcre-7.9.tar.gz
cd pcre-7.9
./configure
make && make install
cd ..创建www用户和组,用于Nginx
好了,装Nginxwget http://sysoev.ru/nginx/nginx-0.7.59.tar.gz
tar zxf nginx-0.7.59.tar.gz
cd nginx-0.7.59
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install配置Nginx
cd /usr/local/nginx/conf#vi nginx.conf
server段内
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}location ~ .*\.(js|css)?$
{
expires 1h;
}log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /data1/logs/access.log access;fcgi.conf的内容如下:
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 only, required if PHP was built with --enable-force-cgi-redirect
#fastcgi_param REDIRECT_STATUS 200;开机启动
在/etc/rc.local中加入
ulimit -SHn 10240
/usr/local/php5/sbin/php-fpm start
/usr/local/nginx/sbin/nginx
- 热门文章
- 评论
- 发表评论:





