以CentOS5.6为平台编译安装。确保系统已经安装gcc/gcc-c++编译器!
1.Nginx-1.0.14
2.PHP-5.3.10
3.MySql-5.1.61
安装相关依赖开发库:
autoconf curl freetype gd jpegsrc libiconv libmcrypt libpng libxml2
mhash ncurses openssl opensll-devel pcre pcre-devel zlib zlib-devel
1.Nginx 编译安装
# groupadd www 创建www用户组
# useradd -g www -s /sbin/nologin -M www 创建www用户并将其添加到www用户组
# mkdir /www 创建/www网站目录
# chmod +w /www 给/www目录写权限
# chown -R www:www /www 将网站根目录/www所有者和所属组设置为www用户和组
[./configure 编译参数]
--prefix=/usr/local/nginx Nginx安装路径
--user=www nginx启动运行所使用的用户,该用户必须已经存在。
--group=www nginx启动运行所使用的用户组,该用户组必须已经存在。
--with-http_realip_module
--with-http_addition_module
--with-http_gzip_static_module 开启gzip压缩功能,对页面进行压缩。
--with-http_random_index_module
--with-http_stub_status_module
--with-http_sub_module
--with-http_dav_module
配置 Nginx.conf 配置文件修改或添加下列内容:
user www www; //nginx默认以用户www和用户组www身份启动 worker_processes 8; //默认启动时开启的进程数 gzip on; //开启gzip的压缩功能 gzip_min_length 1100; gzip_buffers 4 8k; gzip_types text/plain; server { listen 80; //默认nginx服务器使用的端口为80端口 server_name localhost; //服务器名称,例如www.baidu.com location / { root /www; //web服务器网站跟目录 index index.php index.html index.htm; //网站默认主页 } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root /www; //默认所有php脚本文件所在目录 fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } //开启对静态图片和flash本地浏览器缓存1天。 location ~* ^.+\.(gif|jpg|jpeg|png|bmp|swf)$ { root /www; access_log off; expires 1d; } //开启对CSS样式表的本地缓存1小时。 location ~* ^.+\.(js|css)?$ { root /www; access_log off; expires 1h; }
创建nginx启动脚本。添加为系统服务,并设置为开机自动启动。脚本内容如下:
#!/bin/bash # nginx Startup script for the Nginx HTTP Server # this script create it by jackbillow at 2007.10.15. # it is v.0.0.2 version. # if you find any errors on this scripts,please contact jackbillow. # and send mail to jackbillow at gmail dot com. # # chkconfig: - 85 15 # description: Nginx is a high-performance web and proxy server. # It has a lot of features, but it's not for everyone. # processname: nginx # pidfile: /usr/local/nginx/logs/nginx.pid # config: /usr/local/nginx/conf/nginx.conf nginxd=/usr/local/nginx/sbin/nginx nginx_config=/usr/local/nginx/conf/nginx.conf nginx_pid=/usr/local/nginx/logs/nginx.pid RETVAL=0 prog="nginx" # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -x $nginxd ] || exit 0 # Start nginx daemons functions. start() { if [ -e $nginx_pid ];then echo "nginx already running...." exit 1 fi echo -n $"Starting $prog: " daemon $nginxd -c ${nginx_config} RETVAL=$? echo [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx return $RETVAL } # Stop nginx daemons functions. stop() { echo -n $"Stopping $prog: " killproc $nginxd RETVAL=$? echo [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid } # reload nginx service functions. reload() { echo -n $"Reloading $prog: " #kill -HUP `cat ${nginx_pid}` killproc $nginxd -HUP RETVAL=$? echo } # See how we were called. case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) stop start ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $prog {start|stop|restart|reload|status|help}" exit 1 esac exit $RETVAL
将以上脚本保存为nginx文件并复制到 /etc/init.d 目录下。执行下列命令:
# chmod 755 /etc/init.d/nginx 设置nginx启动脚本可执行权限
# chkconfig --add nginx 添加nginx为系统服务
# chkconfig nginx on 开启nginx服务随系统自动启动
# chown -R www:www /usr/local/nginx 设置nginx安装目录权限所有者和所属组为www
[手动启动 Nginx 命令]
# service nginx start
2.MySql 编译安装
# groupadd mysql 创建mysql用户组
# useradd -g mysql -s /sbin/nologin -M mysql 创建mysql用户并将其添加到mysql用户组
[./configure 编译参数]
--prefix=/usr/local/mysql mysql安装路径。
--localstatedir=/var/data DATA数据库位置。
--with-mysqld-user=mysql 以mysql用户身份运行mysql数据库。
--enable-assembler 使用一些字符函数的汇编模式(优化性能)
--with-big-tables 启用对大于4G的数据库的支持。
--with-charset=utf8 数据库编码字符集。多种编码字符集之间用逗号隔开。
--enable-static 静态编译,以静态方式编译客户端和服务端,能提高13%性能。
--with-client-ldflags=-all-static
--with-mysqld-ldflags=-all-static
--with-ssl 开启对SSL安全传输协议的支持。、
--with-embedded-server 构建嵌入式服务器
--enable-local-infile
# chown -R mysql:mysql /usr/local/mysql 设置MySql相关目录的权限
# cp /usr/local/mysql/share/mysql/my-medium.cnf /usr/local/mysql/my.cnf 复制创建MySql的配置文件
# /usr/local/mysql/bin/mysql_install_db --user=mysql 以mysql用户身份建立初始化数据库
# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql 创建 Mysql 开机启动脚本,并设置可执行权限
# chmod 755 /etc/init.d/mysql
# chkconfig --add mysql 添加 MySql 为系统服务,并设置为开机自动启动
# chkconfig mysql on
# service mysql start 启动 Mysql
# /usr/local/mysql/bin/mysqladmin -u root password 123456 设置 MySql 的root密码为123456
3.PHP 编译安装
[./configure配置参数]
--prefix=/usr/local/php PHP安装路径
--with-config-file-path=/etc PHP配置文件路径
--with-mysql=/usr/local/mysql MySql安装路径
--with-mysqli=/usr/local/mysql/bin/mysql_config 开启对mysqli的支持
--enable-fpm
--with-fpm-user=www 以www用户身份运行PHP
--with-fpm-group=www 以www用户组身份运行PHP
--with-iconv-dir
--with-freetype-dir
--with-jpeg-dir
--with-png-dir
--with-zlib
--with-gd
--enable-gd-native-ttf
--with-libxml-dir
--with-curl
--enable-safe-mode
--with-xmlrpc
--with-openssl
--with-mhash
--with-mcrypt
--enable-bcmath
--enable-shmop
--enable-sysvsem
--with-curlwrappers
--enable-mbstring
--enable-sockets
--enable-magic-quotes
--with-pear
--enable-sysvshm
--enable-zip
[编译并安装PHP]
# make ZEND_EXTRA_LIBS='-liconv'
# make install
# cp php.ini-production /etc/php.ini 复制并修改php.ini配置文件
[修改php.ini配置文件内容:]
register_globals=Off 改为 register_globals=On //使传递全局变量有效 date.timezone = Asia/Shanghai //设置当前服务器的时区 zend_optimizer.optimization_level=15 //加载Zend加速器 zend_extension="/usr/local/Zend/ZendGuardLoader.so" //Zend加速器安装目录
[创建并修改php-fpm的配置文件]
修改内容:
pid = run/php-fpm.pid error_log = log/php-fpm.log log_level = error emergency_restart_interval = 3d user = www group = www listen = 127.0.0.1:9000
[创建并添加php-fpm开机启动服务脚本]
# vi /etc/init.d/php-fpm
#!/bin/sh #chkconfig: - 85 15 #description: php-fpm is PHP FastCGI Process Manage. #processname:php-fpm ### BEGIN INIT INFO # Provides: php-fpm # Required-Start: $remote_fs $network # Required-Stop: $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts php-fpm # Description: starts the PHP FastCGI Process Manager daemon ### END INIT INFO prefix=/usr/local/php exec_prefix=${prefix} php_fpm_BIN=${exec_prefix}/sbin/php-fpm php_fpm_CONF=${prefix}/etc/php-fpm.conf php_fpm_PID=${prefix}/var/run/php-fpm.pid php_opts="--fpm-config $php_fpm_CONF" wait_for_pid () { try=0 while test $try -lt 35 ; do case "$1" in 'created') if [ -f "$2" ] ; then try='' break fi ;; 'removed') if [ ! -f "$2" ] ; then try='' break fi ;; esac echo -n . try=`expr $try + 1` sleep 1 done } case "$1" in start) echo -n "Starting php-fpm " $php_fpm_BIN $php_opts if [ "$?" != 0 ] ; then echo " failed" exit 1 fi wait_for_pid created $php_fpm_PID if [ -n "$try" ] ; then echo " failed" exit 1 else echo " done" fi ;; stop) echo -n "Gracefully shutting down php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -QUIT `cat $php_fpm_PID` wait_for_pid removed $php_fpm_PID if [ -n "$try" ] ; then echo " failed. Use force-quit" exit 1 else echo " done" fi ;; force-quit) echo -n "Terminating php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -TERM `cat $php_fpm_PID` wait_for_pid removed $php_fpm_PID if [ -n "$try" ] ; then echo " failed" exit 1 else echo " done" fi ;; restart) $0 stop $0 start ;; reload) echo -n "Reload service php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -USR2 `cat $php_fpm_PID` echo " done" ;; *) echo "Usage: $0 {start|stop|force-quit|restart|reload}" exit 1 ;; esac
# chmod 755 /etc/init.d/php-fpm
# chkconfig --add php-fpm 添加 PHP 为系统服务,并设置为开机自动启动
# chkconfig php-fpm on
# chown -R www:www /usr/local/php 给PHP相关文件目录设置权限
[手动启动 PHP 命令]
# service php-fpm start
!如果某个服务无法启动关闭系统防火墙。