当前位置:文档之家› Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]

Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]

Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]
Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]

(系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为CentOS 5.3,另在RedHat AS4上也安装成功)

一、获取相关开源程序:

1、【适用CentOS操作系统】利用CentOS Linux系统自带的yum命令安装、升级所需的程序库(RedHat等其他Linux 发行版可从安装光盘中找到这些程序库的RPM包,进行安装):

sudo -s

LANG=C

yum -y install gccgcc-c++ autoconflibjpeglibjpeg-devellibpnglibpng-develfreetypefreetype-devel libxml2 libxml2-devel zlibzlib-develglibcglibc-devel glib2 glib2-devel bzip2 bzip2-devel ncursesncurses-devel curl curl-devel e2fsprogs

e2fsprogs-devel krb5 krb5-devel libidnlibidn-developensslopenssl-developenldapopenldap-develnss_ldapopenldap-clients openldap-servers

wget https://www.doczj.com/doc/4414085691.html,/soft/linux/nginx_php/nginx/nginx-0.8.46.tar.gz

wget https://www.doczj.com/doc/4414085691.html,/soft/linux/nginx_php/php/php-5.2.14.tar.gz

wget https://www.doczj.com/doc/4414085691.html,/soft/linux/nginx_php/phpfpm/php-5.2.14-fpm-0.5.14.diff.gz

wget https://www.doczj.com/doc/4414085691.html,/soft/linux/nginx_php/mysql/mysql-5.5.3-m3.tar.gz

wget https://www.doczj.com/doc/4414085691.html,/soft/linux/nginx_php/libiconv/libiconv-1.13.1.tar.gz

wget https://www.doczj.com/doc/4414085691.html,/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gz

wget https://www.doczj.com/doc/4414085691.html,/soft/linux/nginx_php/mcrypt/mcrypt-2.6.8.tar.gz

wget https://www.doczj.com/doc/4414085691.html,/soft/linux/nginx_php/memcache/memcache-2.2.5.tgz

wget https://www.doczj.com/doc/4414085691.html,/soft/linux/nginx_php/mhash/mhash-0.9.9.9.tar.gz

wget https://www.doczj.com/doc/4414085691.html,/soft/linux/nginx_php/pcre/pcre-8.10.tar.gz

wget https://www.doczj.com/doc/4414085691.html,/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.6.1.tar.bz2

wget https://www.doczj.com/doc/4414085691.html,/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgz

wget https://www.doczj.com/doc/4414085691.html,/soft/linux/nginx_php/imagick/ImageMagick.tar.gz

wget https://www.doczj.com/doc/4414085691.html,/soft/linux/nginx_php/imagick/imagick-2.3.0.tgz

二、安装PHP 5.2.14(FastCGI模式)

1、编译安装PHP 5.2.14所需的支持库:

tarzxvf libiconv-1.13.1.tar.gz

cd libiconv-1.13.1/

./configure --prefix=/usr/local

make

make install

cd ../

tar zxvf libmcrypt-2.5.8.tar.gz

cd libmcrypt-2.5.8/

./configure

make

make install

/sbin/ldconfig

cd libltdl/

./configure --enable-ltdl-install

make

cd ../../

tar zxvf mhash-0.9.9.9.tar.gz

cd mhash-0.9.9.9/

./configure

make

make install

cd ../

ln -s /usr/local/lib/https://www.doczj.com/doc/4414085691.html, /usr/lib/https://www.doczj.com/doc/4414085691.html,

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/https://www.doczj.com/doc/4414085691.html, /usr/lib/https://www.doczj.com/doc/4414085691.html,

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.1

ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config

tar zxvf mcrypt-2.6.8.tar.gz

cd mcrypt-2.6.8/

/sbin/ldconfig

./configure

make

make install

cd ../

2、编译安装MySQL 5.5.3-m3

/usr/sbin/groupaddmysql

/usr/sbin/useradd -g mysqlmysql

tar zxvf mysql-5.5.3-m3.tar.gz

cd mysql-5.5.3-m3/

./configure --prefix=/usr/local/webserver/mysql/ --enable-assembler --with-extra-charsets=complex

--enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=partition,innobase,myisammrg

make && make install

chmod +w /usr/local/webserver/mysql

chown -R mysql:mysql /usr/local/webserver/mysql

cd ../

附:以下为附加步骤,如果你想在这台服务器上运行MySQL数据库,则执行以下几步。如果你只是希望让PHP支持MySQL扩展库,能够连接其他服务器上的MySQL数据库,那么,以下两步无需执行。

①、创建MySQL数据库存放目录

mkdir -p /data0/mysql/3306/data/

mkdir -p /data0/mysql/3306/binlog/

mkdir -p /data0/mysql/3306/relaylog/

chown -R mysql:mysql /data0/mysql/

②、以mysql用户帐号的身份建立数据表:

/usr/local/webserver/mysql/bin/mysql_install_db --basedir=/usr/local/webserver/mysql

--datadir=/data0/mysql/3306/data --user=mysql

③、创建https://www.doczj.com/doc/4414085691.html,f配置文件:

vi /data0/mysql/3306/https://www.doczj.com/doc/4414085691.html,f

输入以下内容:

引用

[client]

character-set-server = utf8

port = 3306

socket = /tmp/mysql.sock

[mysqld]

character-set-server = utf8

replicate-ignore-db = mysql

replicate-ignore-db = test

replicate-ignore-db = information_schema

user = mysql

port = 3306

socket = /tmp/mysql.sock

basedir = /usr/local/webserver/mysql

datadir = /data0/mysql/3306/data

log-error = /data0/mysql/3306/mysql_error.log

pid-file = /data0/mysql/3306/mysql.pid

open_files_limit = 10240

back_log = 600

max_connections = 5000

max_connect_errors = 6000

table_cache = 614

external-locking = FALSE

max_allowed_packet = 32M

sort_buffer_size = 1M

join_buffer_size = 1M

thread_cache_size = 300

#thread_concurrency = 8

query_cache_size = 512M

query_cache_limit = 2M

query_cache_min_res_unit = 2k

default-storage-engine = MyISAM

thread_stack = 192K

transaction_isolation = READ-COMMITTED

tmp_table_size = 246M

max_heap_table_size = 246M

long_query_time = 3

log-slave-updates

log-bin = /data0/mysql/3306/binlog/binlog

binlog_cache_size = 4M

binlog_format = MIXED

max_binlog_cache_size = 8M

max_binlog_size = 1G

relay-log-index = /data0/mysql/3306/relaylog/relaylog relay-log-info-file = /data0/mysql/3306/relaylog/relaylog relay-log = /data0/mysql/3306/relaylog/relaylog

expire_logs_days = 30

key_buffer_size = 256M

read_buffer_size = 1M

read_rnd_buffer_size = 16M

bulk_insert_buffer_size = 64M

myisam_sort_buffer_size = 128M

myisam_max_sort_file_size = 10G

myisam_repair_threads = 1

myisam_recover

interactive_timeout = 120

wait_timeout = 120

skip-name-resolve

#master-connect-retry = 10

slave-skip-errors = 1032,1062,126,1114,1146,1048,1396

#master-host = 192.168.1.2

#master-user = username

#master-password = password

#master-port = 3306

server-id = 1

innodb_additional_mem_pool_size = 16M

innodb_buffer_pool_size = 512M

innodb_data_file_path = ibdata1:256M:autoextend

innodb_file_io_threads = 4

innodb_thread_concurrency = 8

innodb_flush_log_at_trx_commit = 2

innodb_log_buffer_size = 16M

innodb_log_file_size = 128M

innodb_log_files_in_group = 3

innodb_max_dirty_pages_pct = 90

innodb_lock_wait_timeout = 120

innodb_file_per_table = 0

#log-slow-queries = /data0/mysql/3306/slow.log

#long_query_time = 10

[mysqldump]

quick

max_allowed_packet = 32M

④、创建管理MySQL数据库的shell脚本:

vi /data0/mysql/3306/mysql

输入以下内容(这里的用户名admin和密码12345678接下来的步骤会创建):

#!/bin/sh

mysql_port=3306

mysql_username="admin"

mysql_password="12345678"

function_start_mysql()

{

printf "Starting MySQL...\n"

/bin/sh /usr/local/webserver/mysql/bin/mysqld_safe --defaults-file=/data0/mysql/${mysql_port}/https://www.doczj.com/doc/4414085691.html,f 2>&1 > /dev/null &

}

function_stop_mysql()

{

printf "Stoping MySQL...\n"

/usr/local/webserver/mysql/bin/mysqladmin -u ${mysql_username} -p${mysql_password} -S /tmp/mysql.sock shutdown

}

function_restart_mysql()

{

printf "Restarting MySQL...\n"

function_stop_mysql

sleep 5

function_start_mysql

}

function_kill_mysql()

{

kill -9 $(ps -ef| grep 'bin/mysqld_safe' | grep ${mysql_port} | awk '{printf $2}') kill -9 $(ps -ef| grep 'libexec/mysqld' | grep ${mysql_port} | awk '{printf $2}') }

if [ "$1" = "start" ]; then

function_start_mysql

elif [ "$1" = "stop" ]; then

function_stop_mysql

elif [ "$1" = "restart" ]; then

function_restart_mysql

elif [ "$1" = "kill" ]; then

function_kill_mysql

else

printf "Usage: /data0/mysql/${mysql_port}/mysql {start|stop|restart|kill}\n"

fi

⑤、赋予shell脚本可执行权限:

chmod +x /data0/mysql/3306/mysql

⑥、启动MySQL:

/data0/mysql/3306/mysql start

⑦、通过命令行登录管理MySQL服务器(提示输入密码时直接回车):

/usr/local/webserver/mysql/bin/mysql -u root -p -S /tmp/mysql.sock

⑧、输入以下SQL语句,创建一个具有root权限的用户(admin)和密码(12345678):GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY '12345678';

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'127.0.0.1' IDENTIFIED BY '12345678';

⑨、(可选)停止MySQL:

/data0/mysql/3306/mysqlstop

3、编译安装PHP(FastCGI模式)

tar zxvf php-5.2.14.tar.gz

gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1

cd php-5.2.14/

./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php/etc

--with-mysql=/usr/local/webserver/mysql --with-mysqli=/usr/local/webserver/mysql/bin/mysql_config

--with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem

--enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm

--enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap

make ZEND_EXTRA_LIBS='-liconv'

make install

cp php.ini-dist /usr/local/webserver/php/etc/php.ini

cd ../

4、编译安装PHP5扩展模块

tarzxvf memcache-2.2.5.tgz

cd memcache-2.2.5/

/usr/local/webserver/php/bin/phpize

./configure --with-php-config=/usr/local/webserver/php/bin/php-config

make

make install

cd ../

tar jxvf eaccelerator-0.9.6.1.tar.bz2

cd eaccelerator-0.9.6.1/

/usr/local/webserver/php/bin/phpize

./configure --enable-eaccelerator=shared --with-php-config=/usr/local/webserver/php/bin/php-config

make

make install

cd ../

tar zxvf PDO_MYSQL-1.0.2.tgz

cd PDO_MYSQL-1.0.2/

/usr/local/webserver/php/bin/phpize

./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-pdo-mysql=/usr/local/webserver/mysql make

make install

cd ../

tar zxvf ImageMagick.tar.gz

cd ImageMagick-6.5.1-2/

./configure

make

make install

cd ../

tar zxvf imagick-2.3.0.tgz

cd imagick-2.3.0/

/usr/local/webserver/php/bin/phpize

./configure --with-php-config=/usr/local/webserver/php/bin/php-config

make

make install

cd ../

5、修改php.ini文件

手工修改:查找/usr/local/webserver/php/etc/php.ini中的extension_dir = "./"

修改为extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"

并在此行后增加以下几行,然后保存:

extension = "memcache.so"

extension = "pdo_mysql.so"

extension = "imagick.so"

再查找output_buffering = Off

修改为output_buffering = On

再查找; cgi.fix_pathinfo=0

修改为cgi.fix_pathinfo=0,防止Nginx文件类型错误解析漏洞。

自动修改:若嫌手工修改麻烦,可执行以下shell命令,自动完成对php.ini文件的修改:

sed -i 's#extension_dir = "./"#extension_dir =

"/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"\nextension = "memcache.so"\nextension = "pdo_mysql.so"\nextension = "imagick.so"\n#' /usr/local/webserver/php/etc/php.ini

sed -i 's#output_buffering = Off#output_buffering = On#' /usr/local/webserver/php/etc/php.ini

sed -i "s#; always_populate_raw_post_data = On#always_populate_raw_post_data = On#g"

/usr/local/webserver/php/etc/php.ini

sed -i "s#; cgi.fix_pathinfo=0#cgi.fix_pathinfo=0#g" /usr/local/webserver/php/etc/php.ini

6、配置eAccelerator加速PHP:

mkdir -p /usr/local/webserver/eaccelerator_cache

vi /usr/local/webserver/php/etc/php.ini

按shift+g键跳到配置文件的最末尾,加上以下配置信息:

引用

[eaccelerator]

zend_extension="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"

eaccelerator.shm_size="64"

eaccelerator.cache_dir="/usr/local/webserver/eaccelerator_cache"

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"

https://www.doczj.com/doc/4414085691.html,press="1"

https://www.doczj.com/doc/4414085691.html,press_level="9"

7、创建www用户和组,以及供https://www.doczj.com/doc/4414085691.html,和https://www.doczj.com/doc/4414085691.html,两个虚拟主机使用的目录:

/usr/sbin/groupadd www

/usr/sbin/useradd -g www www

mkdir -p /data0/htdocs/blog

chmod +w /data0/htdocs/blog

chown -R www:www /data0/htdocs/blog

mkdir -p /data0/htdocs/www

chmod +w /data0/htdocs/www

chown -R www:www /data0/htdocs/www

8、创建php-fpm配置文件(php-fpm是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi):

在/usr/local/webserver/php/etc/目录中创建php-fpm.conf文件:

rm -f /usr/local/webserver/php/etc/php-fpm.conf

vi /usr/local/webserver/php/etc/php-fpm.conf

输入以下内容(如果您安装Nginx + PHP 用于程序调试,请将以下的0改为1,以便显示PHP错误信息,否则,Nginx会报状态为500的空白错误页):

All relative paths in this config are relative to php's install prefix

Pid file

/usr/local/webserver/php/logs/php-fpm.pid

Error log file

/usr/local/webserver/php/logs/php-fpm.log

Log level

notice

When this amount of php processes exited with SIGSEGV or SIGBUS ...

10

... in a less than this interval of time, a graceful restart will be initiated.

Useful to work around accidental curruptions in accelerator's shared memory.

1m

Time limit on waiting child's reaction on signals from master

5s

Set to 'no' to debug fpm

yes

Name of pool. Used in logs and stats.

default

Address to accept fastcgi requests on.

Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'

127.0.0.1:9000

Set listen(2) backlog

-1

Set permissions for unix socket, if one used.

In Linux read/write permissions must be set in order to allow connections from web server. Many BSD-derrived systems allow connections regardless of permissions.

0666

Additional php.ini defines, specific to this pool of workers.

/usr/sbin/sendmail -t -i

0

Unix user of processes

www

Unix group of processes

www

Process manager settings

Sets style of controling worker process count.

Valid values are 'static' and 'apache-like'

static

Sets the limit on the number of simultaneous requests that will be served.

Equivalent to Apache MaxClients directive.

Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi

Used with any pm_style.

128

Settings group for 'apache-like' pm style

Sets the number of server processes created on startup.

Used only when 'apache-like' pm_style is selected

20

Sets the desired minimum number of idle server processes.

Used only when 'apache-like' pm_style is selected

5

Sets the desired maximum number of idle server processes.

Used only when 'apache-like' pm_style is selected

35

The timeout (in seconds) for serving a single request after which the worker process will be terminated Should be used when 'max_execution_time' ini option does not stop script execution for some reason '0s' means 'off'

0s

The timeout (in seconds) for serving of single request after which a phpbacktrace will be dumped to slow.log file '0s' means 'off'

0s

The log file for slow requests

logs/slow.log

Set open file descrlimit

65535

Set max core size rlimit

0

Chroot to this directory at the start, absolute path

Chdir to this directory at the start, absolute path

Redirect workers' stdout and stderr into main error log.

If not set, they will be redirected to /dev/null, according to FastCGI specs

yes

How much requests each process should execute before respawn.

Useful to work around memory leaks in 3rd party libraries.

For endless request processing please specify 0

Equivalent to PHP_FCGI_MAX_REQUESTS

1024

Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.

Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)

Makes sense only with AF_INET listening socket.

127.0.0.1

Pass environment variables like LD_LIBRARY_PATH

All $VARIABLEs are taken from current environment

$HOSTNAME

/usr/local/bin:/usr/bin:/bin

/tmp

/tmp

/tmp

$OSTYPE

$MACHTYPE

2

9、启动php-cgi进程,监听127.0.0.1的9000端口,进程数为128(如果服务器内存小于3GB,可以只开启64个进程),用户为www:

ulimit -SHn 65535

/usr/local/webserver/php/sbin/php-fpm start

注:/usr/local/webserver/php/sbin/php-fpm还有其他参数,包括:start|stop|quit|restart|reload|logrotate,修改php.ini 后不重启php-cgi,重新加载配置文件使用reload。

三、安装Nginx 0.8.46

1、安装Nginx所需的pcre库:

tarzxvf pcre-8.10.tar.gz

cd pcre-8.10/

./configure

make && make install

cd ../

2、安装Nginx

tarzxvf nginx-0.8.46.tar.gz

cd nginx-0.8.46/

./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module

--with-http_ssl_module

make && make install

cd ../

3、创建Nginx日志目录

mkdir -p /data1/logs

chmod +w /data1/logs

chown -R www:www /data1/logs

4、创建Nginx配置文件

①、在/usr/local/webserver/nginx/conf/目录中创建nginx.conf文件:

rm -f /usr/local/webserver/nginx/conf/nginx.conf

vi /usr/local/webserver/nginx/conf/nginx.conf

输入以下内容:

引用

user wwwwww;

worker_processes 8;

error_log /data1/logs/nginx_error.log crit;

pid /usr/local/webserver/nginx/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process. worker_rlimit_nofile 65535;

events

{

use epoll;

worker_connections 65535;

}

http

{

include mime.types;

default_type application/octet-stream;

#charset gb2312;

server_names_hash_bucket_size 128;

client_header_buffer_size 32k;

large_client_header_buffers 4 32k;

client_max_body_size 8m;

sendfile on;

tcp_nopush on;

keepalive_timeout 60;

tcp_nodelay on;

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

gzip on;

gzip_min_length 1k;

gzip_buffers 4 16k;

gzip_http_version 1.0;

gzip_comp_level 2;

gzip_types text/plain application/x-javascript text/css application/xml;

gzip_vary on;

#limit_zone crawler $binary_remote_addr 10m;

server

{

listen 80;

server_name https://www.doczj.com/doc/4414085691.html,;

index index.html index.htm index.php;

root /data0/htdocs/blog;

#limit_conn crawler 20;

location ~ .*\.(php|php5)?$

{

#fastcgi_pass unix:/tmp/php-cgi.sock;

fastcgi_pass 127.0.0.1:9000;

fastcgi_indexindex.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;

}

server

{

listen 80;

server_name https://www.doczj.com/doc/4414085691.html,;

index index.html index.htm index.php;

root /data0/htdocs/www;

location ~ .*\.(php|php5)?$

{

#fastcgi_pass unix:/tmp/php-cgi.sock;

fastcgi_pass 127.0.0.1:9000;

fastcgi_indexindex.php;

include fcgi.conf;

}

log_format wwwlogs '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" $http_x_forwarded_for';

access_log /data1/logs/wwwlogs.log wwwlogs;

}

server

{

listen 80;

server_name https://www.doczj.com/doc/4414085691.html,;

location / {

stub_status on;

access_log off;

}

}

}

②、在/usr/local/webserver/nginx/conf/目录中创建fcgi.conf文件:

vi /usr/local/webserver/nginx/conf/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;

5、启动Nginx

ulimit -SHn 65535

/usr/local/webserver/nginx/sbin/nginx

四、配置开机自动启动Nginx + PHP

vi /etc/rc.local

在末尾增加以下内容:

引用

ulimit -SHn 65535

/usr/local/webserver/php/sbin/php-fpm start

/usr/local/webserver/nginx/sbin/nginx

五、优化Linux内核参数

vi /etc/sysctl.conf

在末尾增加以下内容:

引用

# Add

net.ipv4.tcp_max_syn_backlog = 65536

https://www.doczj.com/doc/4414085691.html,dev_max_backlog = 32768

net.core.somaxconn = 32768

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syn_retries = 2

net.ipv4.tcp_tw_recycle = 1

#net.ipv4.tcp_tw_len = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_max_orphans = 3276800

#net.ipv4.tcp_fin_timeout = 30

#net.ipv4.tcp_keepalive_time = 120

net.ipv4.ip_local_port_range = 1024 65535

使配置立即生效:

/sbin/sysctl -p

六、在不停止Nginx服务的情况下平滑变更Nginx配置

1、修改/usr/local/webserver/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:

/usr/local/webserver/nginx/sbin/nginx -t

如果屏幕显示以下两行信息,说明配置文件正确:

the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok

the configuration file /usr/local/webserver/nginx/conf/nginx.conf was tested successfully

2、平滑重启:

①、对于Nginx 0.8.x版本,现在平滑重启Nginx配置非常简单,执行以下命令即可:

/usr/local/webserver/nginx/sbin/nginx -s reload

②、对于Nginx 0.8.x之前的版本,平滑重启稍微麻烦一些,按照以下步骤进行即可。输入以下命令查看Nginx主进程号:

ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'

屏幕显示的即为Nginx主进程号,例如:

6302

这时,执行以下命令即可使修改过的Nginx配置文件生效:

kill -HUP 6302

或者无需这么麻烦,找到Nginx的Pid文件:

kill -HUP `cat /usr/local/webserver/nginx/nginx.pid`

七、编写每天定时切割Nginx日志的脚本

1、创建脚本/usr/local/webserver/nginx/sbin/cut_nginx_log.sh

vi /usr/local/webserver/nginx/sbin/cut_nginx_log.sh

输入以下内容:

引用

#!/bin/bash

# This script run at 00:00

# The Nginx logs path

logs_path="/usr/local/webserver/nginx/logs/"

mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/

mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log

kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`

2、设置crontab,每天凌晨00:00切割nginx访问日志

crontab -e

输入以下内容:

引用

00 00 * * * /bin/bash /usr/local/webserver/nginx/sbin/cut_nginx_log.sh

Windows下Nginx的安装与配置

Windows下Nginx的安装与配置 Windows下Nginx的安装与配置 Nginx ("engine x") 是一款高性能的,轻量级的HTTP Web服务器和反向代理服务器及电子邮件IMAP/POP3/SMTP代理服务器。 Nginx是由俄罗斯的程序设计师Igor Sysoev 所开发,为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过四年多时间了,Igor 将源代码以类BSD许可证的形式发布。 自Nginx 发布四年来,Nginx 已经因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。Nginx 超越Apache的高性能和稳定性,使得国内使用Nginx 作为Web 服务器的网站也越来越多。 目前国内各大门户网站已经部署了Nginx,如新浪、网易、腾讯等;新近发现Nginx 技术在国内日趋火热,越来越多的网站开始应用部署Nginx。 一、首先去官网下载nginx1.0.11的Windows版本,官网下载: https://www.doczj.com/doc/4414085691.html,/download/nginx-1.0.11.zip 下载到软件包后,解压nginx-nginx1.0.11.zip 包到你喜欢的根目录,并将目录名改为nginx。 然后,执行下列操作: cd nginx start nginx 这样,nginx 服务就启动了。打开任务管理器,查看nginx.exe 进程,有二个进程会显示,占用系统资源,那是相当的少。然后再打开浏览器,输入http://127.0.0.1/就可以看到nginx 的欢迎页面了,非常友好 nginx -s stop // 停止nginx nginx -s reload // 重新加载配置文件 nginx -s quit // 退出nginx 二、接下来就是配置nginx的conf文件了。下面是我的配置: #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid;

系统管理员易犯错误及解决方法汇总

系统管理员易犯错误及解决方法汇总 本文分享的都是系统管理员在工作的时候容易犯的错误,经抚琴煮酒整理并提供解决方法,希望可以给大家一些指导,避免在工作中出现此类问题。作者简介:余洪春,网名抚琴煮酒,英文名Andrew.Yu,武汉某外企高级Linux/Unix系统管理员、项目实施工程师,红帽RHCE 讲师,擅长负载均衡高可用和中小型证券类和商务网站架构,目前关注网站架构研究及网络安全。 一、安装FreeBSD后无法重启 问题描述: 装惯了Linux的人肯定知道一般会有个boot分区,可是在bsd就不那么容易了。在安装FreeBSD 8.1的时候遇到了问题,查阅了chinaunix上面,正好也有相关问题整理,特摘录如下: 我要求FreeBSD分区: 2G For / 4G For swap 10G For /root 256M For /boot 其余 for /usr 安装正常,结果安装重启后便出现杯具了: >> FreeBSD/i386 BOOT Default: 0:da(0,a)/boot/kernel/kernel boot: 原因: 通过网上查资料,了解到手动引导的全过程,发现了问题所在: 由于独立分区/boot造成了FreeBSD引导过程中无法正确找到内核引导的位置。 解决方法: 通过 boot: 0:da(0,e)/loader 可以解决引导问题,然后进入loader界面 *这个引导盘符根据da0s1x 的 x 得来,因此你安装系统的时候/boot所在分区区号,才是真正的x字母,如果不知道就从往后试试 同样由于默认kernel位置是/boot/kernel所以依然需要手动加载 ok load kernel/kernel 获得kernel信息后 ok boot 这样就可以正常引导了。 但是这样还没有彻底解决问题,随后还需要在磁盘挂载的时候输入 mount root>ufs:/dev/da0s1a 才能进入系统,而且每次重启都手动一次。所以其实问题没有彻底解决。 所以,为了避免以上的/boot问题,目前我装机一般规范化操作,一般只分三个区,避免独立分区/boot,也希望玩Linux的朋友们重视下这个问题。 2048M For / 4096M For swap 其余的均For /usr

Nginx 502错误触发条件与解决办法汇总===

Nginx 502错误触发条件与解决办法汇总 一些运行在Nginx上的网站有时候会出现502 Bad Gateway错误,有些时候甚至频繁的出现。有些站长是在刚刚转移到Nginx之后就出现了这个问题,所以经常会怀疑这是不是Nginx的问题,但事实上这是个误区。以... 一些运行在Nginx上的网站有时候会出现“502 Bad Gateway”错误,有些时候甚至频繁的出现。有些站长是在刚刚转移到Nginx之后就出现了这个问题,所以经常会怀疑这是不是Nginx的问题,但事实上这是个误区。 以下是从张宴和Ayou的博客搜集整理的一些Nginx 502错误的排查方法,供大家参考: Nginx 502错误的原因比较多,是因为在代理模式下后端服务器出现问题引起的。这些错误一般都不是nginx本身的问题,一定要从后端找原因!但nginx把这些出错都揽在自己身上了,着实让nginx的推广者备受置疑,毕竟从字眼上理解,bad gateway?不就是bad nginx吗?让不了解的人看到,会直接把责任推在nginx身上,希望nginx下一个版本会把出错提示写稍微友好一些,至少不会是现在简单的一句502 Bad Gateway,另外还不忘附上自己的大名。 Nginx 502的触发条件 502错误最通常的出现情况就是后端主机当机。在upstream配置里有这么一项配置:proxy_next_upstream,这个配置指定了nginx在从一个后端主机取数据遇到何种错误时会转到下一个后端主机,里头写上的就是会出现502的所有情况拉,默认是error timeout。error就是当机、断线之类的,timeout就是读取堵塞超时,比较容易理解。我一般是全写上的: proxy_next_upstream error timeout invalid_header http_500 http_503; 不过现在可能我要去掉http_500这一项了,http_500指定后端返回500错误时会转一个主机,后端的jsp出错的话,本来会打印一堆stacktrace的错误信息,现在被502取代了。但公司的程序员可不这么认为,他们认定是nginx出现了错误,我实在没空跟他们解释502的原理了…… 503错误就可以保留,因为后端通常是apache resin,如果apache死机就是error,但resin死机,仅仅是503,所以还是有必要保留的。 解决办法 遇到502问题,可以优先考虑按照以下两个步骤去解决。 1、查看当前的PHP FastCGI进程数是否够用:

centos7配置nginx+php5.6+mysql5.6+netcore2.0

Centos7配置.netcore+nginx+mysql+php 1 安装nginx yum install epel-release yum install nginx 启动nginx服务 systemctl restart nginx 检查服务是否起来 ps –ef|grep nginx 修改配置文件 cd /etc/nginx cp nginx.conf nginx.conf.bak cp nginx.conf.default nginx.conf 浏览器访问,测试是否安装成功 加入守护进程,使其开机自启动 sytemctl enable nginx 配置文件位置:/etc/nginx/nginx.conf 网站位置:/usr/share/nginx/htm

2 安装.net core 2.0 检查系统安装glibc的版本 cd /usr/lib64 strings libstdc++.so.6|grep GLIBC GLIBCXX大于3.4.18 sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl=https://https://www.doczj.com/doc/4414085691.html,/yumrepos/microsoft-rhel7. 3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft .com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'

win7_apache_+mysql+PHP_配置更新篇(赛林)

win7安装Apache+PHP+MySql环境 apache 简介 2012年5月Web服务器市场份额 Windows7下的apache + php安装配置 一、需要的软件 httpd-2.2.22-win32-x86-openssl-0.9.8t.msi 官网下载地址: https://www.doczj.com/doc/4414085691.html,/apache//httpd/binaries/win32/httpd-2.2.22-win32-x86-openssl-0.9.8t.m si php-5.4.1-Win32-VC9-x86.zip 最新版下载地址: https://www.doczj.com/doc/4414085691.html,/downloads/releases/php-5.4.3-Win32-VC9-x86.zip mysql-5.5.24-win32.msi 二、首先安装好apache A、双击httpd-2.2.22-win32-x86-openssl-0.9.8t.msi文件安装,在安装过程中输入Network Domain(填写网络域名,自己定吧,https://www.doczj.com/doc/4414085691.html,、https://www.doczj.com/doc/4414085691.html,都可以,以后在配置文件中可以再改)、

Server Name(填写服务名,自己定吧,https://www.doczj.com/doc/4414085691.html,、https://www.doczj.com/doc/4414085691.html,都可以,以后在配置文件中可以再改)、Administrator's Email Address(填写你的邮件地址,只要是邮件地址都可以)后,点击next,直到完成。 B、在浏览器中输入http://localhost,回车,如果出现It works.则表示安装成功。 三、安装并配置php A、解压php-5.4.1-Win32-VC9-x86.zip,将解压过后的文件重命名为php54,将其放在e盘目录下(也就是php54的路径是e:/php54)。 B、在e:/php54文件夹下,将php.ini-development文件重命名为php.ini。然后用记事本打开此文件。 开启php扩展模块,php有许多模块,php安装文件中有个ext的目录(e:/php54/ext),这个目录下,有php所有的支持模块。首先我们要启用这个目录下的模块,就需要如下操作:找到; extension_dir = "ext"(大概在730行这个位置),将其改为extension_dir = "e:/php54/ext",php 安装目录下ext 子目录的绝对路径,也就是e:/php54/ext路径,这步很重要。否则接下来php 会找不到php_mysql.dll等模块,无法装载。MySQL 的扩展默认是没有打开的。将其打开。类似上面这样的脚本,是可选择的php 扩展模块,如果需要加载,直接去掉前面的; 号即可。 C、开启mysql等模块支持,找到以下位置,去掉其前面的;(冒号),将其开启; ;extension=php_gd2.dll(在871行) ;extension=php_mbstring.dll(在878行) ;extension=php_mysql.dll(在880行) ;extension=php_mysqli.dll(在881行) 将前面的; 号去掉,改成: extension=php_gd2.dll extension=php_mbstring.dll extension=php_mysql.dll extension=php_mysqli.dll 最后,保存保存php.ini文件。 四、配置Apache 打开Apache 安装目录下的conf 子目录中的httpd.conf 文件(win7下默认安装的话,其配置文件所在目录是C:\Program Files\Apache Software Foundation\Apache2.2\conf)。 A、修改端口。 找到:Listen 80,如果80端口已经被占用了,就需要改为其他的,比如改为:Listen 82, Listen 83都可以,如果没有被占用,则一般不需要改。 B、设置网站存放目录。 首先,建一个用于存放网站内容的目录,比如,在e盘建一个phpweb目录(e:/phpweb)。 找到: DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"将其 改成你本机用于存放网站内容的目录,改为: DocumentRoot “e:/phpweb” C、设置网站存放目录权限

Linux下Nginx+PHP+MySQL配置(图)

Nginx是一个高性能的HTTP和反向代理服务器,同时还是IMAP/POP3/SMTP代理服务器,该程序由俄罗斯Rambler.ru 站点开发,Nginx因为性能稳定、低系统资源消耗而闻名,近几年Nginx在国内已经成炙热化状态,比如像腾讯、网易、51CTO、迅雷、当当网、51、人人网等诸多大型网站都已经使用Nginx来做Web服务器,所以我们要学会运用Nginx还是非常有必要的,下面我们一起来看一下Nginx是如何在Linux平台上搭建的 安装前首先使用yum命令安装、升级所需的程序库 yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-de vel libpng libpng-de vel freetype freet ype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-de vel glib2 glib2-devel bzip2 bzip2-de vel ncurses ncurses-devel curl curl-de vel ssse2fsprogs e2fsprogs-de vel krb5 krb5-de vel libidn libidn-de vel ope nssl openssl-devel openl dap openldap-de vel nss_ldap openlda p-clients openlda p-servers 一、安装MySQL 目前web服务器已经很少有跑静态页面的,如果要跑动态网站那当然就离不开数据库,虽然在以前文章中有写MySQL是怎么安装的,但是感觉好久没装MySQL,现在只把步骤贴出来,就不做过多的讲解了 #useradd mysql #tar zxvf mysql-5.0.40.tar.gz #cd mysql-5.0.40 #./configure --prefix=/usr/local/mysql #make && make install #/usr/local/mysql/bin/mysql_install_db --user=mysql //初始化MySQL数据库 #chown -R mysql /usr/local/mysql/var #/usr/local/mysql/bin/mysqld_safe & //启动MySQL #/usr/local/mysql/bin/mysqladmin -u root password 123456 //设置MySQL密码 #cp support-files/https://www.doczj.com/doc/4414085691.html,f /etc/https://www.doczj.com/doc/4414085691.html,f #echo "/usr/local/mysql/bin/mysqld_safe &" >>/etc/rc.local

Nginx常见错误与解决方法解读

上海纽斯达科技Nginx常见错误与解决方法 上海纽斯达科技有限公司 2014-10-25

文档状态 目的: 在Nginx 服务器出现故障时,能快速定位并解决相关错误。 保密: 本文档仅供内部使用,请勿外传 概述: Nginx 常见错误与问题之解决方法技术指南。 安装环境: 系统环境:redhat enterprise 6.5 64bit 文件状态: 【 】草稿 【 】修改稿 【√】正式发布 文档编号 Nsdkj-778 保 密 等 级 限制 作 者 刘恒亮 最后完成日期 2014-12-25 审 核 人 最后审核日期 2014-12-25 批 准 人 最后批准日期 2014-12-25

1、Nginx 常见启动错误 有的时候初次安装nginx的时候会报这样的错误 sbin/nginx -c conf/nginx.conf 报错内容:sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory 启动时如果报异常error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory 这说明我们的环境还不是和启动需要 小小的配置一下 解决方法(直接运行): 32位系统 [root@sever lib]# ln -s /usr/local/lib/libpcre.so.1 /lib 64位系统 [root@sever lib]# ln -s /usr/local/lib/libpcre.so.1 /lib64 然后执行ps -ef | grep nginx 查看nginx进程确认是否真的已经启动了,在进程列表里会有最起码两个, worker(nginx工作进程)和master(nginx主进程) root 4349 1 0 02:24 ? 00:00:00 nginx: master process sbin/nginx -c conf/nginx.conf nginx 4350 4349 0 02:24 ? 00:00:00 nginx: worker process root 4356 28335 0 02:30 pts/1 00:00:00 grep nginx NGINX 就 OK了 2、400 bad request错误的原因和解决办法 配置nginx.conf相关设置如下. client_header_buffer_size 16k; large_client_header_buffers 4 64k; 根据具体情况调整,一般适当调整值就可以。 3、Nginx 502 Bad Gateway错误 在php.ini和php-fpm.conf中分别有这样两个配置项:max_execution_time和 request_terminate_timeout。

windows下搭建基于nginx的rtmp服务器

windows下搭建基于nginx的rtmp服务器 Windows机器配置:Windows7旗舰版64位Intel(R) Core(TM)i5-2520 CPU @2.50GHz 2.50 GHz内存: 4GB1. 下载nginx 1.7.11.3 Gryphon下载链接: http://nginx-win.ecsds.eu/download/nginx 1.7.11.3 Gryphon.zip 下载完成后解压;将解压后的目录名: nginx 1.7.11.3 Gryphon改成: nginx-1.7.11.3-Gryphon2. 下载服务器状态检查程序stat.xslhttps://https://www.doczj.com/doc/4414085691.html,/arut/nginx-rtmp-module/将nginx-rtmp-module-master.zip解压后复制到目 录:nginx-1.7.11.3-Gryphon下,保证stat.xls的目录 为:nginx-1.7.11.3-Gryphon\nginx-rtmp-module\stat.xsl3. 配置文件conf\nginx-win-rtmp.conf 内容如下:#user nobody;# multiple workers works !worker_processes 2;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 8192; # max value 32768, nginx recycling connections+registry optimization = # this.value * 20 = max concurrent connections currently tested with one worker # C1000K should be possible depending there is enough ram/cpu power # multi_accept on;}rtmp { server { listen 1935;

CentOS+Nginx+PHP+MySQL详细配置(带有图解)

CentOS+Nginx+PHP+MySQL详细配置(带有图解) 一、安装MySQL 目前web服务器已经很少有跑静态页面的,如果要跑动态网站那当然就离不开数据库,虽然在以前文章中有写MySQL是怎么安装的,但是感觉好久没装MySQL,现在只把步骤贴出来,就不做过多的讲解了 #useradd mysql #tar zxvf mysql-5.0.40.tar.gz #cd mysql-5.0.40 #./configure --prefix=/usr/local/mysql #make && make install #/usr/local/mysql/bin/mysql_install_db --user=mysql //初始化MySQL数据库 #chown -R mysql /usr/local/mysql/var #/usr/local/mysql/bin/mysqld_safe & //启动MySQL #/usr/local/mysql/bin/mysqladmin -u root password 123456 //设置MySQL密码 #cp support-files/https://www.doczj.com/doc/4414085691.html,f /etc/https://www.doczj.com/doc/4414085691.html,f #echo "/usr/local/mysql/bin/mysqld_safe &" >>/etc/rc.local 二、安装PCRE PCRE是perl所用到的正则表达式,目的是让所装的软件支持正则表达式。默认情况下,Nginx只处理静态的网页请求,也就是html.如果是来自动态的网页请求,比如*.php,那么Nginx就要根据正则表达式查询路径,然后把*.PHP交给PHP去处理 #rpm -qa | grep pcre //查询系统中有没有安装PCRE,一般装系统是默认装有,所以我们要删掉系统自带的 #cp /lib/libpcre.so.0 / //在删除系统自带的PCRE之前,要先备份一下libpcre.so.0这个文件,因为RPM包的关联性太强,在删除后没libpcre.so.0这个文件时我们装PCRE是装不上的 #rpm -e --nodeps pcre-6.6-1.1 //删除系统自带的PCRE # tar zxvf pcre-8.00.tar.gz #cd pcre-8.00 #cp /libpcre.so.0 /lib/ //把我们删除系统自带的PCRE之前备份的libpcre.so.0拷贝到/lib 目录下 #./configure //配置PCRE,因为PCRE是一个库,而不是像pache、php、postfix等这样的程序,所以我们安装时选择默认路径即可,这样会在后面安装其它东西时避免一些不必要的麻烦,执行完这部后会显示出下图,上面显示了我们对PCRE的配置 #make && make install

linux centos安装nginx常见错误及解决办法

1. 安装完成Nginx后无法站外访问? 刚安装好nginx一个常见的问题是无法站外访问,本机wget、telnet都正常。而服务器之外,不管是局域网的其它主机还是互联网的主机都无法访问站点。如果用telnet的话,提示: 正在连接到192.168.0.xxx...不能打开到主机的连接,在端口 80: 连接失败 如果用wget命令的话,提示: Connecting to 192.168.0.100:80... failed: No route to host. 如果是以上的故障现象,很可能是被CentOS的防火墙把80端口拦住了,尝试执行以下命令,打开80端口: iptables -I INPUT -p tcp --dport 80 -j ACCEPT 然后用: /etc/init.d/iptables status 查看当前的防火墙规则,如果发现有这样一条: ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 就说明防火墙规则已经添加成功了,再在站外访问就正常了。 2. 编译pcre错误(源码安装nginx必须先要装pcre) libtool: compile: unrecognized option `-DHAVE_CONFIG_H' libtool: compile: Try `libtool --help' for more information. make[1]: *** [pcrecpp.lo] Error 1 make[1]: Leaving directory `/usr/local/src/pcre-8.21' make: *** [all] Error 2

Nginx 错误处理方法

Nginx (―engine x‖) 是一个高性能的HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。Nginx 是由Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。Nginx 超越Apache 的高性能和稳定性。 Nginx+Tomcat是目前主流的Java web架构,很多公司在使用,Nginx+Tomcat通过简单的配置,可以实现高性能的负载均衡,通过本文学习,可以实现Nginx+Tomcat 负载均衡。 工具资源 1、Java运行环境,JDK 2、Tomcat7.0.65压缩版下载 3、Nginx1.8.1稳定版下载 本文基于win10进行配置 配置步骤 1、JDK环境配置略 2、Tomcat安装配置 请参考:一台服务器安装运行多个Tomcat及注册服务 本测试安装两个Tomcat,端口分别是8801和8802 安装配置完成后请确保每一个Tomcat可以正常访问 为了区分两个Tomcat,本文将第二个Tomcat的页面名称改为:Apache Tomcat/7.0.65-2 3、Nginx配置

1.解压Nginx到D盘根目录 2.修改Nginx配置 #user nobody; worker_processes 1; #工作进程的个数 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; #单个进程最大连接数} http {

【IT专家】nginx环境下配置支持php5.6(nginx+PHP)

本文由我司收集整编,推荐下载,如有疑问,请与我司联系nginx环境下配置支持php5.6(nginx+PHP)该文主要讲述在nginx环境下如何配置支持php5.6,主要分为三部分:配置安装PHP5.6.25,配置php-fpm组件,配置nginx支持PHP(请自行编译安装nginx)?1、配置安装PHP5.6.25 ?[root@localhost share]# cp php-5.6.25.tar.gz/usr/local ?[root@localhost share]# cd /usr/local ?[root@localhost local]# tar -zvxf php-5.6.25.tar.gz ?[root@localhost local]# cd php-5.6.25 ?[root@localhost php-5.6.25]# ./configure--prefix=/usr/local/php --enable-fpm ?要想使php支持php-fpm,只需要在编译的时候带上--enable-fpm 就可以了 ?configure error xml2-config not found. pleasecheck your libxml2 installation ?编译时报以上错误,此时安装相关包再重新编译安装即可。 ?[root@localhost php-5.6.25]# yum install libxml2 ?[root@localhost php-5.6.25]# yum install libxml2-devel ?[root@localhost php-5.6.25]# ./configure--prefix=/usr/local/php --enable-fastcgi --enable-fpm ?[root@localhost php-5.6.25]# make ?[root@localhost php-5.6.25]# makeinstall ?Installing shared extensions:/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/ ?Installing PHP CLI binary: /usr/local/php/bin/ ?Installing PHP CLI man page: /usr/local/php/php/man/man1/ ?Installing PHP FPM binary: /usr/local/php/sbin/ ?Installing PHP FPM config: /usr/local/php/etc/ ?Installing PHP FPM man page: /usr/local/php/php/man/man8/ ?Installing PHP FPM status page: /usr/local/php/php/php/fpm/

FreeBSD7.2下ports方式安装配置“Nginx0.8.24+PHP5.2.11(FastCGI)+ GD+Mysql5.1.40+系统优化+防ddos攻击”

版权声明 本文版权归作者所有,如其他个人、第三方网站或媒体报刊等需转载全文或节选,请注明原文链接: https://www.doczj.com/doc/4414085691.html,/manual/freebsd-nginx-php-mysql-ports.html 如果因此而给您带来麻烦,请您原谅,谢谢合作。 前言 ?版本:1.0 ?作者:lynn ?项目主页:https://www.doczj.com/doc/4414085691.html, ?个人主页:https://www.doczj.com/doc/4414085691.html, ?最后更新:2009-11-11(光棍节) 本文档是在FreeBSD7.2系统下,以ports系统为基础,所涉及软件全部是开源软件,版权以GPL为主,作为企业应用没有任何版权/法律问题。 编写本文的初衷,是给那些希望快速架设高性能、高负载Web服务系统而不想过多了解复杂的系统知识的网管/用户。 本文假定读者是在FreeBSD 7.2 平台上安装,并具有一定的Unix平台 / FreeBSD平台系统经验,懂得ports基本命令及常规的系统操作,如文件的删除,目录创建,改名,和vi编辑器的基本使用等。 源代码方式安装请参考(推荐): https://www.doczj.com/doc/4414085691.html,/manual/freebsd-nginx-php-mysql-source.html 目录 ?为什么要选择FreeBSD? ?为什么要选择Nginx? ?软件组成 ?安装FreeBSD7.2

?更新ports ?安装axel提高ports的安装速度 ?安装Mysql5.1.40 ?安装Nginx 安装pcre8.00 安装Nginx0.8.24 ?安装libxml2-2.7.6 ?安装GD 安装zlib1.2.3 安装libpng1.2.40 安装jpeg v7 安装freetype2.3.11 安装gd2.0.35 ?安装PHP 安装php5.2.11(FastCGI模式) ?测试 ?系统优化 ?防ddos攻击 ?结束语 ?ChangeLog 为什么要选择FreeBSD? 官方网站:https://www.doczj.com/doc/4414085691.html,中文网站:https://www.doczj.com/doc/4414085691.html,/zh_CN/ FreeBSD是一个优秀的unix操作系统,基于宽松的BSD协议,是完美的企业级操作系统,以重点突出性能和安全而闻名,行业领先的企业多年以来一直使用FreeBSD服务器。具有同所有其它开源软件操作系统竞争的高级性能。 1.Unix兼容性强 2.速度快

服务器故障解决思路

遇到服务器故障,问题出现的原因很少可以一下就想到。基本上都会从以下步骤入手: 一、尽可能搞清楚问题的前因后果 不要一下子就扎到服务器前面,你需要先搞明白对这台服务器有多少已知的情况,还有故障的具体情况。不然你很可能就是在无的放矢。 必须搞清楚的问题有: ? 故障的表现是什么?无响应?报错? ? 故障是什么时候发现的? ? 故障是否可重现? ? 有没有出现的规律(比如每小时出现一次) ? 最后一次对整个平台进行更新的内容是什么(代码、服务器等)? ? 故障影响的特定用户群是什么样的(已登录的, 退出的, 某个地域的…)? ? 基础架构(物理的、逻辑的)的文档是否能找到? ? 是否有监控平台可用? (比如Munin 、Zabbix 、 Nagios 、 New Relic … 什么都可以) ? 是否有日志可以查看?. (比如Loggly 、Airbrake 、 Graylog…) 最后两个是最方便的信息来源,不过别抱太大希望,基本上它们都不会有。只能再继续摸索了。 二、有谁在? 1 2 $ w $ last

用这两个命令看看都有谁在线,有哪些用户访问过。这不是什么关键步骤,不过最好别在其他用户正干活的时候来调试系统。有道是一山不容二虎嘛。(ne cook in the kitchen is enough.) 三、之前发生了什么? 1 $ history 查看一下之前服务器上执行过的命令。看一下总是没错的,加上前面看的谁登录过的信息,应该有点用。另外作为admin 要注意,不要利用自己的权限去侵犯别人的隐私哦。 到这里先提醒一下,等会你可能会需要更新 HISTTIMEFORMAT 环境变量来显示这些命令被执行的时间。对要不然光看到一堆不知道啥时候执行的命令,同样会令人抓狂的。 四、现在在运行的进程是啥? 1 2 $ pstree -a $ ps aux 这都是查看现有进程的。 ps aux 的结果比较杂乱, pstree -a 的结果比较简单明了,可以看到正在运行的进程及相关用户。 五、监听的网络服务 1 2 3 $ netstat -ntlp $ netstat -nulp $ netstat -nxlp 我一般都分开运行这三个命令,不想一下子看到列出一大堆所有的服务。netstat -nalp 倒也可以。不过我绝不会用 numeric 选项 (鄙人一点浅薄的看法:IP 地址看起来更方便)。 找到所有正在运行的服务,检查它们是否应该运行。查看各个监听端口。在netstat 显示的服务列表中的PID 和 ps aux 进程列表中的是一样的。 如果服务器上有好几个Java 或者Erlang 什么的进程在同时运行,能够按PID 分别找到每个进程就很重要了。 通常我们建议每台服务器上运行的服务少一点,必要时可以增加服务器。如果你看到一台服务器上有三四十个监听端口开着,那还是做个记录,回头有空的时候清理一下,重新组织一下服务器。

实战Nginx与PHP(FastCGI)的作用、安装、配置与优化

实战Nginx与PHP(FastCGI)的作用、安装、配置与优 化 一、什么是 FastCGI FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。多数流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等,同时,FastCGI也被许多脚本语言所支持,其中就有PHP。 FastCGI是从CGI发展改进而来的。传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后结果被返回给HTTP服务器。这在处理高并发访问时,几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少被使用了。 FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。 二、Nginx+FastCGI运行原理 Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux下是socket,(这个socket可以是文件socket,也可以是ip socket)。为了调用CGI程序,还需要一个FastCGI的wrapper (wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接纳到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端,这就是Nginx+FastCGI的整个运作过程。详细的过程,如图1所示。 图1 Nginx+FastCGI运行原理

Nginx与PHP(FastCGI)的安装、配置与优化

Nginx与PHP(FastCGI)的安装、配置与优化 FastCGI的介绍和工作原理 首先简单的介绍下FastCGI: FastCGI是语言无关的、可伸缩结构的CGI开放扩展,其主要行为是将CGI解释器进行保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail-Over特性等。 FastCGI的工作原理是: (1)FastCGI进程管理器自身初始化,启动多个CGI解释器进程(多个php-cgi进程)并等待来自Web Server的连接。在文本中,采用PHP-FPM进程管理器启动多个php-cgi FastCGI进程。启动php-cgi FastCGI进程时,可以配置以TCP和UNIX套接字两种方式启动。 (2)当客户端请求达到Web服务器(Nginx)时,Web服务器将请求采用TCP协议或UNIX 套接字方式转发到FastCGI主进程,FastCGI主进程选择并连接到一个CGI解释器(子进程)。Web服务器将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。 (3)FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web服务器(Nginx)。当FastCGI子进程关闭连接时,请求便告知处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理的下一个连接。而在一般的普通CGI模式中,php-cgi在此便退出了。 PHP-FPM PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 https://www.doczj.com/doc/4414085691.html,/downloads.php下载得到.PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。

window下nginx配置

原来一直以为nginx只能在Linux下搭建,最近查了些资料才恍然大悟,Windows下其实也可以跑nginx。当你的网站访问量越来越高的时候,一台服务器已经没有办法承受流量压力,后果可想而知,怎么办呢?那就增加几台服务器来做负载吧。但当下的硬件设施又是贵得离谱,比如F5,所以这种情况下,免费的nginx成了我们不错的选择,nginx目前好多门户网站与大访问量的网站都在使用做为HTTP服务器,所以nginx是相当优秀的…… 实验环境:(2台服务器) 第一台: 系统:Win2003 nginx:nginx/Windows-0.8.32 IP:192.168.0.51 环境:本地 第二台: 系统:Win2003 IP:192.168.0.52 环境:远程 说明: 本次测试,软件nginx放在本地(192.168.0.51),也就是说放在域名绑定的那台服务器,这台服务器的IIS不能使用80端口,因为等一下nginx软件要使用80这个端口。(为了方便,我将本机的hosts文件添加了我要测试的域名192.168.0.51 https://www.doczj.com/doc/4414085691.html,) 下载nginx的地址如下: nginx下载:https://www.doczj.com/doc/4414085691.html,/ 下载解压到C:\,把目录名改成nginx 一切准备就绪,开始实验: No.1: 在本地(192.168.0.51)这台服务器IIS创建一个网站,使用端口为808,如下图:

IIS 网站绑定设置图 No.2: 在远程192.168.0.52的IIS创建一个网站,使用端口为80,如下图: No.3: 好了,以上已经设置好两台服务器的IIS了,下面配置nginx软件来实现网站负载均衡,打开如下文件: C:\nginx\conf\nginx.conf 1、找到内容server { 在它的上面加入如下内容:

相关主题
文本预览
相关文档 最新文档