keepalived + nginx : Realize high availability
nginx:
web server
reverse proxy, also supports caching(Cached on disk)
Support FastCGI
tengine: Taobao official corrects based on the original code of nginxnginx made many improvements and directly integrated many third-party modules intonginx and made a lot of improvements.
Advantages
Nginx keeps10 000one There are no active connections, and these connections only take up2.5MBmemory< /p>
The main process is mainly Complete the following tasks:
1. Read and verify the configuration information;
< p style="margin:0in;font-family:宋体;font-size:10.5pt">2. Create, bind and close sockets;
3. Startup, termination and maintenanceworkerthe number of processes;
4. Reconfiguration of work features without stopping the service;
5. Control non-interrupted Program upgrade, enable the new binary program and roll back to the old version when needed;
6. Reopen the log File, realize log scrolling;
7. Compile embeddedperlscript;
The main tasks completed by the worker process include:
1. Receiving, incoming and Handling connections from the client;
2. Provide reverse proxy and filtering functions;
3. Any other tasks that nginx can complete;
cache loader process The main tasks completed include:
1. Check the cache objects in the cache storage;
2. Use cache metadata to build an in-memory database;
The main task of the cache manager process:
1. Cache invalidation and expiration Inspection;
Compile and install nginx
1. The environment needed for compilation
< span style="font-family:Calibri">yum -y install gcc gcc-c++ autoconf a utomake zlib zlib-devel openssl openssl-devel pcre-devel gd-devel
2, create program user groupadd -r -g 3< span style="font-family:宋体">11 nginx && useradd -r -g 311 -r -u 306 nginx
2.1, downloadnginx< /span>Package, omitted from decompression,
3. Options needed for compilation
./configure \
–prefix=/usr/local/nginx span>\
–s bin-path=/usr/local/nginx/sbin/nginx \
–conf-path=/usr/local/nginx/etc/nginx.conf \
–error-log-path=/usr/local /nginx/log/error.log \
–http-log-path=/usr/local/nginx/log/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=/usr/local/nginx/client/ \
–http-proxy-temp-path=/usr/local/nginx/proxy/ \
–http-fastcgi-temp-path=/usr/local /nginx/fcgi/ \
–http-uwsgi-temp-path=/usr/local/nginx/uwsgi \
–http -scgi-temp-path=/usr/local/nginx/scgi \
–with-file-aio\
–with-http_image_filter_module\
–add-module=/root/fastdfs- nginx-module/src
– -with-pcre=/usr/pcre-version number\ < span style="font-family:宋体"> refers to the source directory, not the installation directory
4. A startup script is required:vim /etc/rc.d/init.d/nginx The script is below↓
Then Add execution permissions chmod x /etc/rc.d/init.d/nginx
Start up chkconfig –add nginx chkconfig –level 35 nginx on
5 , Start the service service nginx start
Define LNMP
nginx thinks To integratephp does not support modular installation, you must install< span style="font-family:calibri">phpCompile toFastCGImode! php-fpm
Compile the last item of php
Edit the configuration file of php-fpm:
# vim /usr/local/php/etc/php -fpm.conf
Configure the relevant options of fpm to the values you need, and Enablepidfile (the last line below):
< p style="margin:0in;font-size:10.5pt">pm.max_children = 150 Maximum Number of child processes
pm.start_servers = 8 The number of child processes started at the beginning
pm.min_spare_servers = 5 Minimum idle number
pm.max_spare_servers = 10 Maximum free number
pid = /usr/local/php/var/run/php-fpm.pid
< p style="margin:0in;font-family:宋体;font-size:10.5pt">Now you can start php-fpm:
# service php-fpm start
Use the following command to verify (if there are several php-fpm processes in the output of this command, it means the startup is successful):
< p style="margin:0in;font-family:Calibri;font-size:10.5pt"># ps aux | grep php-fpm
Integrate php andnginx
1, edit/etc/nginx/nginx.conf, enable the following options:
location ~ \.php$ {
root root html; This defines the location of your php web page file< /p>
fastcgi_pass 127.0.0.1:9000; Reverse proxy method
fastcgi_index index.php ;
fastcgi_param SCRIPT_FILENAME /script$fastcgi_script_name;
include fastcgi_params;
}
2, edit/etc/nginx/fastcgi_params, change its content to the following:
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;
< p style="margin:0in;font-family:Calibri;font-size:10.5pt">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;< /p>
fastcgi_param SERVER_NAME $server_name;
and add a php format homepage to the supported main page formats, Similar to the following:
location / {
root html;
index index.php index.html index.htm ;
} p>
Then reload the nginx configuration file:
# service nginx reload
3. In/usr/htmlNewindex.php’s test page, testphp< /span>Whether it works normally:
# cat> /usr/html/index.php << EOF
< p style="margin:0in;font-family:Calibri;font-size:10.5pt">phpinfo();
?>
Then you can access this test page through a browser.
nginx main configuration file
server{ }: virtual host, eachserverDefine a virtual host.
location{ }: Based onURIpath to define access properties.
location / {: Define a URL path
root root html;: defines the place where all webpage files under the URL path are in the local system< /span>
index index.html index.htm;: Return to who the default main page belongs to
}
error_page 500 502 503 504 /50x.html; If the error code you return is 50… these ones, just read them< span style="font-family:calibri">/50xThis web page file.
location = /50x.html {: If you visit this page
root root html;: require this page to be located. . . Under the path
}
location URI: It takes effect for all objects under the current path and sub-paths, Lowest priority
location = URI: Exactly match the specified path, excluding sub-paths, only valid for the current resource, the highest priority span>
location ~ URI< /span>: Implement pattern matching URI, hereURIRegular expressions can be used to distinguish between uppercase and lowercase characters,Priority three
location~*URI: Implement pattern matching URI, hereURIYou can use regular expressions, without distinguishing between uppercase and lowercase characters,Priority three
location^~URI: Make it clear that URIs do not use regular expressions, the second priority
< p style="margin:0in;font-family:Calibri;font-size:10.5pt">
User access rules:
location / {
deny 192.168.1.1
allow 192.13.10.0
deny all
alllow all
}
You can define the rules yourself, or insert it into other webpage definition locations!
Configure virtual host (a server module defines one virtual machine, two virtual machines need to add twoservermodule)
http {
server {< /p>
listen 80;
server_name www.a.org;
#charset koi8-r;
#access_log logs/host.acc ess.log main;
location / {
root /www/a.org;
index index.html index.htm;
}
5. Install xcache , ForphpAcceleration:
1, installation
p>
# tar xf xcache-2.0.0.tar.gz
# cd xcache-2.0.0
# /usr/local/php/bin/phpize
# ./configure –enable-xcache- -with-php-config=/usr/local/php/bin/php-config
# make && make install
At the end of the installation, a line similar to the following will appear:
Installing shared extensions: /usr/local /php/lib/php/extensions/no-debug-zts-20100525/
2, editphp.ini< /span>, integrationphpandxcache:
First import the sample configuration provided by xcachephp.ini
# mkdir /etc/php.d
# cp xcache.ini /etc/php.d
Description: The xcache.ini file is inxcache in the source directory.
Next edit /etc/php.d/xcache.ini and findextension The line at the beginning of is modified as follows:
extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
Note: If there are multiple entries in the php.ini file< /span>extensioncommand line, make sure this new line is ranked first.
3. Restartphp-fpm
# service php-fpm restart
VI. Supplementary description
If you want to use it in SSLphp, need to be inphp< Add this option in span style="font-family:calibri">location:
fastcgi_param HTTPS on;
nginx startup script
#!/bin/sh
#
# nginx-this script starts and stops the nginx daemon
#
# chkconfig: – 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/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/sbin/nginx”
prog=$(basename $nginx)
NGINX_CONF_FILE=”/etc/nginx/nginx.conf”
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfil e=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`nginx -V 2>&1 | grep “configure arguments:” | sed ‘s/[^*]*–user=\([^ ]*\).*/\1/g‘ -`
options=`$nginx -V 2>&1 | grep ‘configure arguments:‘`
for opt in $options; do
if [ `echo $opt | grep ‘.*-temp-path‘` ]; then
value=`echo $opt | cut -d “=” -f 2`
if [ ! -d “$value” ]; then
# echo “creating” $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
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
sleep 1
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 $”Usag e: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}”
exit 2
esac
而后为此脚本赋予执行权限:
# chmod +x /etc/rc.d/init.d/nginx
主配置文件详解:
#user nobody;
worker_processes 1; 如果负载以CPU密集型应用为主,如SSL或压缩应用,则worker数应与CPU数相同;如果负载以IO密集型为主,如响应大量内容给客户端,则worker数应该为CPU个数的1.5或2倍。每一个核心可以绑定一个线程!
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; 定义PID文件,这里禁用是我们自定义的选项生效了
events {
worker_connections 1024; 事件驱动中,每一个work他所能支持的连接数,一个work支持1021个连接数!
}
http {
include mime.types; 包含的文件
default_type application/octet-stream; 默认支持的类型
#log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘ 日志格式
# ‘$status $body_bytes_sent “$http_referer” ‘
# ‘”$http_user_agent” “$http_x_forwarded_for”‘;
#access_log logs/access.log main; 访问日志
sendfile on; 提升文件下载性能
#tcp_nopush on; 不做推送。先发送一个包,其余包缓存,等第一个包确认之后,在发送其余的包
#keepalive_timeout 0; 使用长连接
keepalive_timeout 65; 指定超时时间
#gzip on;先压缩后发送,带宽小,访问量大适用
server {
Li sten 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / { URI路径
root html; 相对于URI,你的网页文件存放路径
index index.html index.htm; 主页面支持的文件类型
}
#error_page 404 /404.html; } 返回的错误代码是404,那就去读取下面50X这个文件
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny ac cess to .htaccess files, if Apache‘s document root
# concurs with nginx‘s one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
dex index.html index.htm;
# }
#}
keepalived + nginx :实现高可用
nginx:
web服务器
反向代理,也支持缓存(缓存在磁盘上)
支持FastCGI
tengine:淘宝官方在nginx原有的代码的基础上对nginx做了诸多改进,直接将很多第三方模块整合进了nginx,并作出了大量改进。
优点
Nginx保持10 000个没有活动的连接,而这些连接只占用2.5MB内存
主进程主要完成如下工作:
1. 读取并验正配置信息;
2. 创建、绑定及关闭套接字;
3. 启动、终止及维护wo rker进程的个数;
4. 无须中止服务而重新配置工作特性;
5. 控制非中断式程序升级,启用新的二进制程序并在需要时回滚至老版本;
6. 重新打开日志文件,实现日志滚动;
7. 编译嵌入式perl脚本;
worker进程主要完成的任务包括:
1. 接收、传入并处理来自客户端的连接;
2. 提供反向代理及过滤功能;
3. nginx任何能完成的其它任务;
cache loader进程主要完成的任务包括:
1. 检查缓存存储中的缓存对象;
2. 使用缓存元数据建立内存数据库;
cache manager进程的主要任务:
1. 缓存的失效及过期检验;
编译安装nginx
1、编译需要的环境
yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel op enssl openssl-devel pcre-devel gd-devel
2、创建程序用户 groupadd -r -g 311 nginx && useradd -r -g 311 -r -u 306 nginx
2.1、下载nginx包,与解压省略,
3、编译需要的选项
./configure \
–prefix=/usr/local/nginx\
–sbin-path=/usr/local/nginx/sbin/nginx \
–conf-path=/usr/local/nginx/etc/nginx.conf \
–error-log-path=/usr/local/nginx/log/error.log \
–http-log-path=/usr/local/nginx/log/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=/usr/local/nginx/client/ \
–http-proxy-temp-path=/usr/local/nginx/proxy/ \
–http-fastcgi-temp-path=/usr/local/nginx/fcgi/ \
–http-uwsgi-temp-path=/usr/local/nginx/uwsgi \
–http-scgi-temp-path=/usr/local/nginx/scgi \
–with-file-aio\
–with-http_image_filter_module\
–add-module=/root/fastdfs-nginx-module/src\
–with-pcre=/usr/pcre-版本号\ 指向的是源目录,不是安装目录
4、需要一个启动脚本 :vim /etc/rc.d/init.d/nginx 脚本在下面↓
然后添加执行权限 chmod x /etc/rc.d/init.d/nginx
开机启动 chkconfig –add nginx chkconfig –level 35 nginx on
5、启动服务 service nginx start
定义LNMP
nginx想要整合php不支持模块化方式安装,,必须把php编译成FastCGI模式! php-fpm
编译php最后一项
编辑php-fpm的配置文件:
# vim /usr/local/php/etc/php-fpm.conf
配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):
pm.max_children = 150 最大子进程个数
pm.start_servers = 8 刚开始启动子进程个数
pm.min_spare_servers = 5 最小空闲数
pm.max_spare_servers = 10 最大空闲数
pid = /usr/local/php/var/run/php-fpm.pid
接下来就可以启动php-fpm了:
# service php-fpm start
使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):
# ps aux | grep php-fpm
整合php与nginx
< span style="font-family:宋体">1、编辑/etc/nginx/nginx.conf,启用如下选项:
location ~ \.php$ {
root html; 这个定义的是你php网页文件的位置
fastcgi_pass 127.0.0.1:9000; 反向代理方式
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /script$fastcgi_script_name;
include fastcgi_params;
}
2、编辑/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_pa ram 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格式的主页,类似如下:
location / {
root html;
index index.php index.html index.htm;
}
而后重新载入nginx的配置文件:
# service nginx reload
3、在/usr/html新建index.php的测试页面,测试php是否能正常工作:
# cat > /usr/html/index.php << EOF
phpinfo();
?>
接着就可以通过浏览器访问此测试页面了。
nginx主配置文件
server{ }:虚拟主机,每一个server定义一个虚拟主机。
location{ }:基于URI路径来定义访问属性的。
location / { :定义一个URL路径
root html; :定义了URL路径下的所有网页文件在本地系统的那个地方
index index.html index.htm; :返回默认主页面是谁的
}
error_page 500 502 503 504 /50x.html; 若果你返回的错误代码是50….这几个,就读取/50x这个网页文件。
location = /50x.html { :如果你访问的就是这个页面
root html; :要求这个页面位于。 . .路径下
}
location URI :对当前路径及子路径下的所有对象都生效,优先级最低
location = URI :精确匹配指定路径,不包括子路径,只对当前资源生效,优先级最高
location ~ URI :实现模式匹配URI,此处的URI可以使用正则表达式,区分字符大小写,优先级三
location~*URI :实现模式匹配URI,此处的URI可以使用正则表达式,不区分字符大小写,优先级三
location^~URI:明确说明URI不使用正则表达式,优先级第二
用户访问法则:
location / {
deny 192.168.1.1
allow 192.13.10.0
deny all
alllow all
}
可以自己定义法则,也可以插入到别的网页定义location中!
配置虚拟主机(一个server模块定义一个虚拟机,两个虚拟机需要添加两个server模块)
http {
server {
listen 80;
server_name www.a.org;
#charset koi8-r;
#access_log logs/host.access.log m ain;
location / {
root /www/a.org;
index index.html index.htm;
}
五、安装xcache,为php加速:
1、安装
# tar xf xcache-2.0.0.tar.gz
# cd xcache-2.0.0
# /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-zts-20100525/
2、编辑php.ini,整合php和xcache:
首先将xcache提供的样例配置导入php.ini
# mkdir /etc/php.d
# cp xcache.ini /etc/php.d
说明:xcache.ini文件在xcache的源码目录中。
接下来编辑/etc/php.d/xcache.ini,找到extension开头的行,修改为如下行:
extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
注意:如果php.ini文件中有多条extension指令行,要确保此新增的行排在第一位。
3、重新启动php-fpm
# service php-fpm restart
六、补充说明
如果要在SSL中使用php,需要在php的location中添加此选项:
fastcgi_param HTTPS on;
nginx启动脚本
#!/bin/sh
#
# nginx – this script starts and stops the nginx daemon
#
# chkconfig: – 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/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/sbin/nginx”
prog=$(basename $nginx)
NGINX_CONF_FILE=”/etc/nginx/nginx.conf”
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`nginx -V 2>&1 | grep “configure arguments:” | sed ‘s/[^*]*–user=\([^ ]*\).*/\1/g‘ -`
options=`$nginx -V 2>&1 | grep ‘configure arguments:‘`
for opt in $options; do
if [ `echo $opt | grep ‘.*-temp-path‘` ]; then
value=`echo $opt | cut -d “=” -f 2`
if [ ! -d “$value” ]; then
# echo “creating” $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
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
sleep 1
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
< p style="margin:0in;font-family:Calibri;font-size:10.5pt"> ;;
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
而后为此脚本赋予执行权限:
# chmod +x /etc/rc.d/init.d/nginx
主配置文件详解:
#user nobody;
worker_processes 1; 如果负载以CPU密集型应用为主,如SSL或压缩应用,则worker数应与CPU数相同;如果负载以IO密集型为主,如响应大量内容给客户端,则worker数应该为CPU个数的1.5或2倍。每一个核心可以绑定一个线程!
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; 定义PID文件,这里禁用是我们自定义的选项生效了
events {
worker_connections 1024; 事件驱动中,每一个work他所能支持的连接数,一个work支持1021个连接数!
}
http {
include mime.types; 包含的文件
default_type application/octet-stream; 默认支持的类型
#log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘ 日志格式
# ‘$status $body_bytes_sent “$http_referer” ‘
# ‘”$http_user_agent” “$http_x_forwarded_for”‘;
#access_log logs/access.log main; 访问日志
sendfile on; 提升文件下载性能
#tcp_nopush on; 不做推送。先发送一个包,其余包缓存,等第一个包确认之后,在发送其余的包
#keepalive_timeout 0; 使用长连接
keepalive_timeout 65; 指定超时时间
#gzip on;先压缩后发送,带宽小,访问量大适用
server {
Listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / { URI路径
root html; 相对于URI,你的网页文件存放路径
index index.html index.htm; 主页面支持的文件类型
}
#error_page 404 /404.html; } 返回的错误代码是404,那就去读取下面50X这个文件
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:900 0
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache‘s docume nt root
# concurs with nginx‘s one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080; p>
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_cip hers on;
dex index.html index.htm;
# }
#}
keepalived + nginx :实现高可用
nginx:
web服务器
反向代理,也支持缓存(缓存在磁盘上)
支持FastCGI
tengine:淘宝官方在nginx原有的代码的基础上对nginx做了诸多改进,直接将很多第三方模块整合进了nginx,并作出了大量改进。
优点
Nginx保持10 000个没有活动的连接,而这些连接只占用2.5MB内存
主进程主要完成如下工作:
1. 读取并验正配置信息;
2. 创建、绑定及关闭套接字;
3. 启动、终止及维护worker进程的个数;
4. 无须中止服务而重新配置工作特性;
5. 控制非中断式程序升级,启用新的二进制程序并在需要时回滚至老版本;
6. 重新打开日志文件,实现日志滚动;
7. 编译嵌入式perl脚本;
worker进程主要完成的任务包括:
1. 接收、传入并处理来自客户端的连接;
2. 提供反向代理及过滤功能;
3. nginx任何能完成的其它任务;
cache loader进程主要完成的任务包括:
1. 检查缓存存储中的缓存对象;
2. 使用缓存元数据建立内存数据库;
cache manager进程的主要任务:
1. 缓存的失效及过期检验;
编译安装nginx
1、编译需要的环境
yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre-de vel gd-devel
2、创建程序用户 groupadd -r -g 311 nginx && useradd -r -g 311 -r -u 306 nginx
2.1、下载nginx包,与解压省略,
3、编译需要的选项
./configure \
–prefix=/usr/local/nginx\
–sbin-path=/usr/local/nginx/< span style="font-family:Calibri">sbin/nginx \
–conf-path=/usr/local/nginx/etc/nginx.conf \
–error-log-path=/usr/local/nginx/log/error.log \
–http-log-path=/usr/local/nginx/log/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=/usr/local/nginx/client/ \
–http-proxy-temp-path=/usr/local/nginx/proxy/ \
–http-fastcgi-temp-path=/usr/local/nginx/fcgi/ \
–http-uwsgi-temp-path=/usr/local/nginx/uwsgi \
–http-scgi-temp-path=/usr/local/nginx/scgi \
–with-file-aio\
–with-http_image_filter_module\
–add-module=/root/fastdfs-nginx-module/src\
–with-pcre=/usr/pcre-版本号\ 指向的是源目录,不是安装目录
4、需要一个启动脚本 :vim /etc/rc.d/init.d/nginx 脚本在下面↓
然后添加执行权限 chmod x /etc/rc.d/init.d/nginx
开机启动 chkconfig –add nginx chkconfig –level 35 nginx on
5、启动服务 service nginx start
定义LNMP
nginx想要整合php不支持模块化方式安装,,必须把php编译成FastCGI模式! php-fpm
编译php最后一项
编辑php-fpm的配置文件:
# vim /usr/local/php/etc/php-fpm.conf
配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):
pm.max_children = 150 最大子进程个数
pm.start_servers = 8 刚开始启动子进程个数
pm.min_spare_servers = 5 最小空闲数
pm.max_spare_servers = 10 最大空闲数
pid = /usr/local/php/var/run/php-fpm.pid
接下来就可以启动php-fpm了:
# service php-fpm start
使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):
# ps aux | grep php-fpm
整合php与nginx
1、编辑/etc/nginx/nginx.conf,启用如下选项:
location ~ \.php$ {
root html; 这个定义的是你php网页文件的位置
fastcgi_pass 127.0.0.1:9000; 反向代理方式
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /script$fastcgi_script_name;
include fastcgi_params;
}
2、编辑/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 $conten t_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格式的主页,类似如下:
location / {
root html;
index index.php index.html index.htm;
}
而后重新载入nginx的配置文件:
# service nginx reload
3、在/usr/html新建index.php的测试页面,测试php是否能正常工作:
# cat > /usr/html/index.php << EOF
phpinfo();
?>
接着就可以通过浏览器访问此测试页面了。
nginx主配置文件
server{ }:虚拟主机,每一个server定义一个虚拟主机。
location{ }:基于URI路径来定义访问属性的。
location / { :定义一个URL路径
root html; :定义了URL路径下的所有网页文件在本地系统的那个地方
index index.html index.htm; :返回默认主页面是谁的
}
error_page 500 502 503 504 /50x.html; 若果你返回的错误代码是50….这几个,就读取/50x这个网页文件。
location = /50x.html { :如果你访问的就是这个页面
root html; :要求这个页面位于。 . .路径下
}
location URI :对当前路径及子路径下的所有对象都生效,优先级最低
location = URI :精确匹配指定路径,不包括子路径,只对当前资源生效,优先级最高
location ~ URI :实现模式匹配URI,此处的URI可以使用正则表达式,区分字符大小写,优先级三
location~*URI :实现模式匹配URI,此处的URI可以使用正则表达式,不区分字符大小写,优先级三
location^~URI:明确说明URI不使用正则表达式,优先级第二
用户访问法则:
location / {
deny 192.168.1.1
allow 192.13.10.0
deny all
alllow all
}
可以自己定义法则,也可以插入到别的网页定义location中!
配置虚拟主机(一个server模块定义一个虚拟机,两个虚拟机需要添加两个server模块)
http {
server {
listen 80;
server_name www.a.org;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /www/a.org;
index index.html index.htm;
}
五、安装xcache,为php加速:
1、安装
# tar xf xcache-2.0.0.tar.gz
# cd xcache-2.0.0
# /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-zts-20100525/
2、编辑php.ini,整合php和xcache< /span>:
首先将xcache提供的样例配置导入php.ini
# mkdir /etc/php.d
# cp xcache.ini /etc/php.d
说明:xcache.ini文件在xcache的源码目录中。
接下来编辑/etc/php.d/xcache.ini,找到extension开头的行,修改为如下行:
extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
注意:如果php.ini文件中有多条extension指令行,要确保此新增的行排在第一位。
3、重新启动php-fpm
# service php-fpm restart
六、补充说明
如果要在SSL中使用php,需要在php的location中添加此选项:
fastcgi_param HTTPS on;
nginx启动脚本
#!/bin/sh
#
# nginx – this script starts and stops the nginx daemon
#
# chkconfig: – 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/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/sbin/nginx”
prog=$(basename $nginx)
NGINX_CONF_FILE=”/etc/nginx/nginx.conf”
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`nginx -V 2>&1 | grep “configure arguments:” | sed ‘s/[^*]*–user=\([^ ]*\).*/\1/g‘ -`
options=`$nginx -V 2>&1 | grep ‘configure arguments:‘`
for opt in $options; do
if [ `echo $opt | grep ‘.*-temp-path‘` ]; then
value=`echo $opt | cut -d “=” -f 2`
if [ ! -d “$value” ]; then
# echo “creating” $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
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
sleep 1
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
而后为此脚本赋予执行权限:
# chmod +x /etc/rc.d/init.d/nginx
主配置文件详解:
#user nobody;
worker_processes 1; 如果负载以CPU密集型应用为主,如SSL或压缩应用,则worker数应与CPU数相同;如果负载以IO密集型为主,如响应大量内容给客户端,则worker数应该为CPU个数的1.5或2倍。每一个核心可以绑定一个线程!
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; 定义PID文件,这里禁用是我们自定义的选项生效了
events {
worker_connections 1024; 事件驱动中,每一个work他所能支持的连接数,一个wo rk支持1021个连接数!
}
http {
include mime.types; 包含的文件
default_type application/octet-stream; 默认支持的类型
#log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘ 日志格式
# ‘$status $body_bytes_sent “$http_referer” ‘
# ‘”$http_user_agent” “$http_x_forwarded_for”‘;
#access_log logs/access.log main; 访问日志
sendfile on; 提升文件下载性能
#tcp_nopush on; 不做推送。先发送一个包,其余包缓存,等第一个包确认之后,在发送其余的包
#keepalive_timeout 0; 使用长连接
keepalive_timeout 65; 指定超时时间
#gzip on;先压缩后发送,带宽小,访问量大适用
server {
Listen 80; span>
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / { URI路径
root html; 相对于URI,你的网页文件存放路径
index index.html index.htm; 主页面支持的文件类型
}
#error_page 404 /404.html; } 返回的错误代码是404,那就去读取下面50X这个文件
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.ht ml {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache‘s document root
# concurs with nginx‘s one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
dex index.html index.htm;
# }
#}
keepalived + nginx :实现高可用
nginx:
web服务器
反向代理,也支持缓存(缓存在磁盘上)
支持FastCGI
tengine:淘宝官方在nginx原有的代码的基础上对nginx做了诸多改进,直接将很多第三方模块整合进了nginx,并作出了大量改进。
优点
Nginx保持10 000个没有活动的连接,而这些连接只占用2.5MB内存
主进程主要完成如下工作:
1. 读取并验正配置信息;
2. 创建、绑定及关闭套接字;
3. 启动、终止及维护worker进程的个数;
4. 无须中止服务而重新配置工作特性;
5. 控制非中断式程序升级,启用新的二进制程序并在需要时回滚至老版本;
6. 重新打开日志文件,实现日志滚动;
7. 编译嵌入式perl脚本;
worker进程主要完成的任务包括:
1. 接收、传入并处理来自客户端的连接;
2. 提供反向代理及过滤功能;
3. nginx任何能完成的其它任务;
cache loader进程主要完成的任务包括:
1. 检查缓存存储中的缓存对象;
2. 使用缓存元数据建立内存数据库;
cache manager进程的主要任务:
1. 缓存的失效及过期检验;
编译安装nginx
1、编译需要的环境
yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre-devel gd-devel
2、创建程序用户 groupadd -r -g 311 nginx && useradd -r -g 311 -r -u 306 nginx
2.1、下载nginx包,与解压省略,
3、编译需要的选项
./configure \
–prefix=/usr/local/nginx\
–sbin-path=/usr/local/nginx/sb in/nginx \
–conf-path=/usr/local/nginx/etc/nginx.conf \
–error-log-path=/usr/local/nginx/log/error.log \
–http-log-path=/usr/local/nginx/log/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=/usr/local/nginx/client/ \
–http-proxy-temp-path=/usr/local/nginx/proxy/ \
–http-fastcgi-temp-path=/usr/local/nginx/fcgi/ \
–http-uwsgi-temp-path=/usr/local/nginx/uwsgi \
–http-scgi-temp-path=/usr/local/nginx/scgi \
–with-file-aio\
–with-http_image_filter_module\
–add-module=/root/fastdfs-nginx-module/src\
–with-pcre=/usr/pcre-版本号\ 指向的是源目录,不是安装目录
4、需要一个启动脚本 :vim /etc/rc.d/init.d/nginx 脚本在下面↓
然后添加执行权限 chmod x /etc/rc.d/init.d/nginx
开机启动 chkconfig –add nginx chkconfig –level 35 nginx on
5、启动服务 service nginx start
< p style="margin:0in;font-size:14.0pt;color:red">定义LNMP
nginx想要整合php不支持模块化方式安装,,必须把php编译成FastCGI模式! php-fpm
编译php最后一项
编辑php-fpm的配置文件:
# vim /usr/local/php/etc/php-fpm.conf
配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):
pm.max_children = 150 最大子进程个数
pm.start_servers = 8 刚开始启动子进程个数
pm.min_spare_servers = 5 最小空闲数
pm.max_spare_servers = 10 最大空闲数
pid = /usr/local/php/var/run/php-fpm.pid
接下来就可以启动php-fpm了:
# service php-fpm start
使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):
# ps aux | grep php-fpm
整合php与nginx
1、编辑 span>/etc/nginx/nginx.conf,启用如下选项:
location ~ \.php$ {
root html; 这个定义的是你php网页文件的位置
fastcgi_pass 127.0.0.1:9000; 反向代理方式
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /script$fastcgi_script_name;
include fas tcgi_params;
}
2、编辑/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格式的主页,类似如下:
location / {
root html;
index index.php index.html index.htm;
}
而后重新载入nginx的配置文件:< /p>
# service nginx reload
3、在/usr/html新建index.php的测试页面,测试php是否能正常工作:
# cat > /usr/html/index.php << EOF
phpinfo();
?>
接着就可以通过浏览器访问此测试页面了。
nginx主配置文件
server{ }:虚拟主机,每一个server定义一个虚拟主机。
location{ }:基于URI路径来定义访问属性的。
location / { :定义一个URL路径
root html; :定义了URL路径下的所有网页文件在本地系统的那个地方
index index.html index.htm; :返回默认主页面是谁的
}
error_page 500 502 503 504 /50x.html; 若果你返回的错误代码是50….这几个,就读取/50x这个网页文件。
location = /50x.html { :如果你访问的就是这个页面
root html; :要求这个页面位于。 . .路径下
}
location URI :对当前路径及子路径下的所有对象都生效,优先级最低
location = URI :精确匹配指定路径,不包括子路径,只对当前资源生效,优先级最高
location ~ URI :实现模式匹配URI,此处的URI可以使用正则表达式,区分字符大小写,优先级三
location~*URI :实现模式匹配URI,此处的URI可以使用正则表达式,不区分字符大小写,优先级三
location^~URI:明确说明URI不使用正则表达式,优先级第二
用户访问法则:
location / {
deny 192.168.1.1
allow 192.13.10.0
deny all
alllow all
}
可以自己定义法则,也可以插入到别的网页定义location中!
配置虚拟主机(一个server模块定义一个虚拟机,两个虚拟机需要添加两个server模块)
http {
server {
listen 80;
server_name www.a.org;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /www/a.org;
index index.html index.htm;
}
五、安装xcache,为php加速:
1、安装
# tar xf xcache-2.0.0.tar.gz
# cd xcache-2.0 .0
# /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-zts-20100525/
2、编辑php.ini,整合php和xcache:
首先将xcache提供的样例配置导入php.ini
# mkdir /etc/php.d
# cp xcache.ini /etc/php.d
说明:xcache.ini文件在xcache的源码目录中。
接下来编辑/etc/php.d/xcache.ini,找到extension开头的行,修改为如下行:
extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
注意:如果php.ini文件中有多条extension指令行,要确保此新增的行排在第一位。
3、重新启动php-fpm
# service php-fpm restart
六、补充说明
如果要在SSL中使用php,需要在php的location中添加此选项:
fastcgi_param HTTPS on;
nginx启动脚本
#!/bin/sh
#
# nginx – this script starts and stops the nginx daemon
#
# chkconfig: – 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 p roxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/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/sbin/nginx”
prog=$(basename $nginx)
NGINX_CONF_FILE=”/etc/nginx/nginx.conf”
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`nginx -V 2>&1 | grep “configure arguments:” | sed ‘s/[^*]*–user=\([^ ]*\).*/\1/g‘ -`
options=`$nginx -V 2>&1 | grep ‘configure arguments:‘`
for opt in $options; do
if [ `echo $opt | grep ‘.*-temp-path‘` ]; then
value=`echo $opt | cut -d “=” -f 2`
if [ ! -d “$value” ]; then
# echo “creating” $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
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
< p style="margin:0in;font-family:Calibri;font-size:10.5pt">}
restart() {
configtest || return $?
stop
sleep 1
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
而后为此脚本赋予执行权限:
# chmod +x /etc/rc.d/init.d/nginx
主配置文件详解:
#user nobody;
worker_processes 1; 如果负载以CPU密集型应用为主,如SSL或压缩应用,则worker数应与CPU数相同;如果负载以IO密集型为主,如响应大量内容给客户端,则worker数应该为CPU个数的1.5或2倍。每一个核心可以绑定一个线程!
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; 定义PID文件,这里禁用是我们自定义的选项生效了
events {
worker_connections 1024; 事件驱动中,每一个work他所能支持的连接数,一个work 支持1021个连接数!
}
http {
include mime.types; 包含的文件
default_type application/octet-stream; 默认支持的类型
#log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘ 日志格式
# ‘ $status $body_bytes_sent “$http_referer” ‘
# ‘”$http_user_agent” “$http_x_forwarded_for”‘;
#access_log logs/access.log main; 访问日志
sendfile on; 提升文件下载性能
#tcp_nopush on; 不做推送。先发送一个包,其余包缓存,等第一个包确认之后,在发送其余的包
#keepalive_timeout 0; 使用长连接
keepalive_timeout 65; 指定超时时间
#gzip on;先压缩后发送,带宽小,访问量大适用
server {
Listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / { URI路径
root html; 相对于URI,你的网页文件存放路径
index index.html index.htm; 主页面支持的文件类型
}
#error_page 404 /404.html; } 返回的错误代码是404,那就去读取下面50X这个文件
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache‘s document root
# concu rs with nginx‘s one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another .alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
dex index.html index.htm;
# }
#}