安装准备:
yum install libxml2* libjpeg-devel libpng-devel freetype-devel m4 autoconf -y
nginx安装脚本
#!/bin/sh
soft_dir=/home/apps/soft_origin
install_dir=/usr/local/nginx
nginx_version=nginx-1.10.1
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
wget http://nginx.org/download/$nginx_version.tar.gz
tar zxvf pcre-8.39.tar.gz &&
cd pcre-8.39
./configure &&
make && make install &&
cd $soft_dir &&
tar zxvf $nginx_version.tar.gz &&
cd $nginx_version
./configure --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre --prefix=$install_dir &&
make && make install
启动nginx
/usr/local/nginx/sbin/nginx
验证配置文件是否正确
/usr/local/nginx/sbin/nginx -t
平滑重启
/usr/local/nginx/sbin/nginx -s reload
查看nginx包含模块
/usr/local/nginx/sbin/nginx -V
php安装脚本
#!/bin/sh
soft_dir=/home/apps/soft_origin
php_dir=/usr/local/php/bin
php_version="php-5.4.45"
php_install_dir=/usr/local/php
cd $soft_dir
tar jxvf libmcrypt-2.5.8.tar.bz2 &&
cd libmcrypt-2.5.8 &&
./configure --prefix=/usr/local/libmcrypt &&
make && make install &&
cd $soft_dir &&
tar zxvf mhash-0.8.15.tar.gz &&
cd mhash-0.8.15 &&
./configure --prefix=/usr/local/mhash &&
make && make install &&
cd $soft_dir &&
tar zxvf mcrypt-2.6.8.tar.gz &&
cd mcrypt-2.6.8 &&
export LD_LIBRARY_PATH=/usr/local/libmcrypt/lib:/usr/local/mhash/lib &&
export LDFLAGS="-L/usr/local/mhash/lib -I/usr/local/mhash/include/" &&
export CFLAGS="-I/usr/local/mhash/include/" &&
./configure --prefix=/usr/local/mcrypt --with-libmcrypt-prefix=/usr/local/libmcrypt &&
make && make install &&
cd $soft_dir &&
tar zxvf $php_version.tar.gz &&
cd $php_version &&
./configure '--prefix=/usr/local/php' '--enable-fpm' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-jpeg-dir' '--with-png-dir' '--enable-ftp' '--with-libxml-dir' '--enable-xml' '--disable-rpath' '--enable-bcmath' '--enable-shmop' '--enable-sysvsem' '--enable-inline-optimization' '--enable-mbregex' '--enable-mbstring' '--with-gd' '--enable-gd-native-ttf' '--with-openssl' '--with-mhash' '--enable-pcntl' '--enable-sockets' '--with-xmlrpc' '--enable-zip' '--enable-soap' '--without-pear' '--enable-calendar' '--with-gettext' '--with-freetype-dir=/usr/include/freetype2/freetype' &&
make && make install &&
echo "#####################" &&
echo "for php mcrypt" &&
cd $soft_dir/$php_version/ext/mcrypt &&
$php_dir/phpize &&
./configure --with-php-config=$php_dir/php-config --with-mcrypt=/usr/local/libmcrypt/ &&
make && make install &&
echo "####################" &&
yum install curl-devel -y
echo "for php curl" &&
cd $soft_dir/$php_version/ext/curl &&
$php_dir/phpize &&
./configure --with-php-config=$php_dir/php-config &&
make && make install &&
echo "####################" &&
echo "for php zlib" &&
cd $soft_dir/$php_version/ext/zlib &&
cp config0.m4 config.m4
$php_dir/phpize &&
./configure --with-php-config=$php_dir/php-config &&
make && make install &&
echo "####################" &&
echo "for php mongo" &&
cd $soft_dir &&
tar zxvf mongo-1.6.11.tgz &&
cd mongo-1.6.11 &&
$php_dir/phpize &&
./configure --with-php-config=$php_dir/php-config &&
make && make install &&
echo "####################" &&
echo "for php redis" &&
cd $soft_dir &&
tar zxvf redis-2.2.7.tgz &&
cd redis-2.2.7 &&
$php_dir/phpize &&
./configure --with-php-config=$php_dir/php-config &&
make && make install &&
echo "####################" &&
echo "for php imagick" &&
cd $soft_dir &&
wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-7.0.2-5.tar.gz
wget http://pecl.php.net/get/imagick-3.4.2.tgz &&
tar zxvf ImageMagick-7.0.2-5.tar.gz &&
cd ImageMagick-7.0.2-5 &&
./configure --prefix=/usr/local/imagemagick
make && make install &&
cd $soft_dir &&
tar zxvf imagick-3.4.2.tgz &&
cd imagick-3.4.2
$php_dir/phpize &&
./configure --with-php-config=$php_dir/php-config --with-imagick=/usr/local/imagemagick &&
make && make install &&
cd $soft_dir
cp -r php-fpm.conf $php_install_dir/etc/
cp -r php.ini $php_install_dir/lib/
rm -rf mcrypt-2.6.8
rm -rf mhash-0.8.15
rm -rf mongo-1.6.11
rm -rf libmcrypt-2.5.8
rm -rf redis-2.2.7
rm -rf php-5.4.45
echo
echo "###################################"
echo "php is ok"
echo "###################################"
启动php
/usr/local/php/sbin/php-fpm
查看php包含模块
/usr/local/php/sbin/php-fpm -m
php配置文件
/usr/local/php/lib/php.ini
/usr/local/php/etc/php-fpm.conf
测试php配置是否正确
/usr/local/php/sbin/php-fpm -t
nginx图片服务器配置样例
nginx.conf内容:
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /home/server/logs/nginx/error.log crit;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /home/server/env/nginx/pid/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream;
charset utf-8;
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 /home/server/logs/nginx/access.log main;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
sendfile on;
tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 60;
tcp_nodelay on;
server_tokens off;
client_body_buffer_size 512k;
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
proxy_temp_path /home/server/data/nginx/proxy_temp_dir;
proxy_cache_path /home/server/data/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=5g;
# Load config files from the /etc/nginx/conf.d directory
# The default server is in conf.d/default.conf
include /home/server/conf/nginx/conf.d/*.conf;
}
/home/server/conf/nginx/conf.d路径下的com.dtdt2.pic.conf如下
server {
listen 80;
#charset koi8-r;
server_name pic.dtdt2.com 192.168.10.111;
location / {
proxy_cache cache_one;
proxy_cache_valid 200 304 12h;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forward-For $remote_addr;
# proxy_pass http://14.17.97.228:8080;
root /home/server/images;
#log_format cache '***$time_local '
# '$upstream_cache_status '
# 'Cache-Control: $upstream_http_cache_control '
# 'Expires: $upstream_http_expires '
# '"$request" ($status) '
# '"$http_user_agent" ';
#access_log /home/server/logs/nginx/cache.log cache; #使用这个日志格式
expires 1d;
}
location ~ /purge(/.*)
{
#设置只允许指定的IP或IP段才可以清除URL缓存。
allow 127.0.0.1;
deny all;
#proxy_cache_purge cache_one$host$1$is_args$args;
}
#扩展名以.php、.jsp、.cgi结尾的动态应用程序不缓存。
location ~ .*\.(php|jsp|cgi)?$
{
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
access_log off;
#location /NginxStatus {
# stub_status on;
# access_log /server/logs/nginx/NginxStatus.log;
# auth_basic "NginxStatus";
# auth_basic_user_file /etc/nginx/htpasswd;
# }
}
一般站点配置样例
nginx部分
ngxin.conf
user www www;
worker_processes auto;
error_log /server/wwwlogs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
multi_accept on;
}
http
{
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 50m;
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 256k;
fastcgi_intercept_errors on;
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;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
#limit_conn_zone $binary_remote_addr zone=perip:10m;
##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.
server_tokens off;
#log format
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
#include vhost/*.conf;
server{
listen 80;
#server_name www.dtdt2.com m.dtdt2.com dtdt2.com;
server_name www.dtdt2.com dtdt2.com;
set $mobile_rewrite do_not_perform;
server_name_in_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
if ($http_user_agent ~* "(Android|iPhone|Windows Phone|UC|Kindle|Nokia|Mobile|SAMSUNG|SonyEricsson|MOT|BlackBerry|LG|HTC|J2ME|Opera Mini)") {
set $mobile_rewrite perform;
}
if ($host = m.dtdt2.com){
set $mobile_rewrite perform;
}
location / {
#proxy_pass http://www.dtdt2.com:8080;
proxy_pass http://localhost:8080;
## if ($mobile_rewrite = perform){ ##for mobile modify
#proxy_pass http://m.dtdt2.com:8081;
## proxy_pass http://localhost:8081;
## }
}
}
include /server/conf/nginx/conf.d/*.conf;
}
/server/conf/nginx/conf.d/下com.dtdt2.wx.conf配置
server
{
listen 80;
server_name wx.dtdt2.com;
index index.html index.htm index.php;
root /server/www/wx.dtdt2.com;
set_real_ip_from 127.0.0.1;
set_real_ip_from 14.17.97.231;
set_real_ip_from 192.168.10.116;
real_ip_header X-Real-IP;
#error_log /server/wwwlogs/www.dtdt2.com.err.log warn;
error_log /server/wwwlogs/wx.dtdt2.com.err.log debug;
access_log /server/wwwlogs/wx.dtdt2.com.access.log access;
location /admin.php {
if ( !-e $request_filename ) {
rewrite ^/admin.php(.*)$ /admin.php?s=$1 last;
}
}
location / {
if ( !-e $request_filename ) {
rewrite ^/(.*)$ /index.php?s=$1 last;
}
}
location /images {
alias /server/img/images;
}
location ~ \.php$ {
include php-fpm.conf;
fastcgi_index index.php;
include fastcgi.conf;
}
# if ($host = dtdt2.com){
# rewrite ^(.*)$ http://www.dtdt2.com permanent;
# }
# if ($server_port = 8080){
# rewrite ^(.*)$ http://www.dtdt2.com permanent;
# }
}
其他域名配置
com.dtdt2.pic.conf把访问pic.dtdt2.com转发到192.168.10.112主机
server
{
listen 80;
server_name pic.dtdt2.com;
# index index.html index.htm index.php;
# root /server/www/wx.dtdt2.com;
server_name_in_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#real_ip_header X-Real-IP;
error_log /server/wwwlogs/pic.dtdt2.com.err.log debug;
access_log /server/wwwlogs/pic.dtdt2.com.access.log access;
location / {
#proxy_pass http://www.dtdt2.com:8080;
proxy_pass http://192.168.10.112;
}
}
nginx中php-fpm.conf内容
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi.conf内容
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
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_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 HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
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;
php部分配置
php.ini如下:
[PHP]
engine = On
short_open_tag = Off
asp_tags = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 17
disable_functions =
disable_classes =
zend.enable_gc = On
expose_php = On
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
max_execution_time = 30
max_input_time = 60
memory_limit = 512M
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = On
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 8M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
doc_root =
user_dir =
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/"
extension = "mongodb.so"
extension = "mongo.so"
extension = "redis.so"
extension = "imagick.so"
extension = "memcache.so"
enable_dl = Off
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 20
;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
[CLI Server]
cli_server.color = On
[Date]
[filter]
[iconv]
[intl]
[sqlite]
[sqlite3]
[Pcre]
[Pdo]
[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=
[Phar]
[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = On
[SQL]
sql.safe_mode = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQL]
mysql.allow_local_infile = On
mysql.allow_persistent = On
mysql.cache_size = 2000
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off
[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off
[OCI8]
[PostgreSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10
[bcmath]
bcmath.scale = 0
[browscap]
[Session]
session.save_handler = files
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 10800
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
mssql.secure_connection = Off
[Assertion]
[COM]
[mbstring]
[gd]
[exif]
[Tidy]
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5
[sysvshm]
[ldap]
ldap.max_links = -1
[mcrypt]
[dba]
[curl]
php-fpm.conf如下 :
;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;
;include=etc/fpm.d/*.conf
;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;
[global]
;error_log = log/php-fpm.log
;syslog.facility = daemon
; Default Value: php-fpm
;syslog.ident = php-fpm
; Default Value: notice
;log_level = notice
;emergency_restart_threshold = 0
;emergency_restart_interval = 0
;process_control_timeout = 0
; process.max = 128
; process.priority = -19
;daemonize = yes
;rlimit_files = 1024
;rlimit_core = 0
;events.mechanism = epoll
;systemd_interval = 10
;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;
; pool name ('www' here)
[www]
user = www
group = www
listen = /tmp/php-cgi.sock
listen.backlog = -1
listen.owner = www
listen.group = www
listen.mode = 0660
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 6
;pm.process_idle_timeout = 10s;
;pm.max_requests = 500
;pm.status_path = /status
;ping.path = /ping
;ping.response = pong
;access.log = log/$pool.access.log
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
slowlog = var/log/slow.log
request_slowlog_timeout = 0
request_terminate_timeout = 100
;rlimit_files = 1024
;rlimit_core = 0
;chroot =
;chdir = /var/www
;catch_workers_output = yes
;clear_env = no
;security.limit_extensions = .php .php3 .php4 .php5
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
配置完成
yum install libxml2* libjpeg-devel libpng-devel freetype-devel m4 autoconf -y
nginx安装脚本
#!/bin/sh
soft_dir=/home/apps/soft_origin
install_dir=/usr/local/nginx
nginx_version=nginx-1.10.1
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
wget http://nginx.org/download/$nginx_version.tar.gz
tar zxvf pcre-8.39.tar.gz &&
cd pcre-8.39
./configure &&
make && make install &&
cd $soft_dir &&
tar zxvf $nginx_version.tar.gz &&
cd $nginx_version
./configure --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre --prefix=$install_dir &&
make && make install
启动nginx
/usr/local/nginx/sbin/nginx
验证配置文件是否正确
/usr/local/nginx/sbin/nginx -t
平滑重启
/usr/local/nginx/sbin/nginx -s reload
查看nginx包含模块
/usr/local/nginx/sbin/nginx -V
php安装脚本
#!/bin/sh
soft_dir=/home/apps/soft_origin
php_dir=/usr/local/php/bin
php_version="php-5.4.45"
php_install_dir=/usr/local/php
cd $soft_dir
tar jxvf libmcrypt-2.5.8.tar.bz2 &&
cd libmcrypt-2.5.8 &&
./configure --prefix=/usr/local/libmcrypt &&
make && make install &&
cd $soft_dir &&
tar zxvf mhash-0.8.15.tar.gz &&
cd mhash-0.8.15 &&
./configure --prefix=/usr/local/mhash &&
make && make install &&
cd $soft_dir &&
tar zxvf mcrypt-2.6.8.tar.gz &&
cd mcrypt-2.6.8 &&
export LD_LIBRARY_PATH=/usr/local/libmcrypt/lib:/usr/local/mhash/lib &&
export LDFLAGS="-L/usr/local/mhash/lib -I/usr/local/mhash/include/" &&
export CFLAGS="-I/usr/local/mhash/include/" &&
./configure --prefix=/usr/local/mcrypt --with-libmcrypt-prefix=/usr/local/libmcrypt &&
make && make install &&
cd $soft_dir &&
tar zxvf $php_version.tar.gz &&
cd $php_version &&
./configure '--prefix=/usr/local/php' '--enable-fpm' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-jpeg-dir' '--with-png-dir' '--enable-ftp' '--with-libxml-dir' '--enable-xml' '--disable-rpath' '--enable-bcmath' '--enable-shmop' '--enable-sysvsem' '--enable-inline-optimization' '--enable-mbregex' '--enable-mbstring' '--with-gd' '--enable-gd-native-ttf' '--with-openssl' '--with-mhash' '--enable-pcntl' '--enable-sockets' '--with-xmlrpc' '--enable-zip' '--enable-soap' '--without-pear' '--enable-calendar' '--with-gettext' '--with-freetype-dir=/usr/include/freetype2/freetype' &&
make && make install &&
echo "#####################" &&
echo "for php mcrypt" &&
cd $soft_dir/$php_version/ext/mcrypt &&
$php_dir/phpize &&
./configure --with-php-config=$php_dir/php-config --with-mcrypt=/usr/local/libmcrypt/ &&
make && make install &&
echo "####################" &&
yum install curl-devel -y
echo "for php curl" &&
cd $soft_dir/$php_version/ext/curl &&
$php_dir/phpize &&
./configure --with-php-config=$php_dir/php-config &&
make && make install &&
echo "####################" &&
echo "for php zlib" &&
cd $soft_dir/$php_version/ext/zlib &&
cp config0.m4 config.m4
$php_dir/phpize &&
./configure --with-php-config=$php_dir/php-config &&
make && make install &&
echo "####################" &&
echo "for php mongo" &&
cd $soft_dir &&
tar zxvf mongo-1.6.11.tgz &&
cd mongo-1.6.11 &&
$php_dir/phpize &&
./configure --with-php-config=$php_dir/php-config &&
make && make install &&
echo "####################" &&
echo "for php redis" &&
cd $soft_dir &&
tar zxvf redis-2.2.7.tgz &&
cd redis-2.2.7 &&
$php_dir/phpize &&
./configure --with-php-config=$php_dir/php-config &&
make && make install &&
echo "####################" &&
echo "for php imagick" &&
cd $soft_dir &&
wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-7.0.2-5.tar.gz
wget http://pecl.php.net/get/imagick-3.4.2.tgz &&
tar zxvf ImageMagick-7.0.2-5.tar.gz &&
cd ImageMagick-7.0.2-5 &&
./configure --prefix=/usr/local/imagemagick
make && make install &&
cd $soft_dir &&
tar zxvf imagick-3.4.2.tgz &&
cd imagick-3.4.2
$php_dir/phpize &&
./configure --with-php-config=$php_dir/php-config --with-imagick=/usr/local/imagemagick &&
make && make install &&
cd $soft_dir
cp -r php-fpm.conf $php_install_dir/etc/
cp -r php.ini $php_install_dir/lib/
rm -rf mcrypt-2.6.8
rm -rf mhash-0.8.15
rm -rf mongo-1.6.11
rm -rf libmcrypt-2.5.8
rm -rf redis-2.2.7
rm -rf php-5.4.45
echo
echo "###################################"
echo "php is ok"
echo "###################################"
启动php
/usr/local/php/sbin/php-fpm
查看php包含模块
/usr/local/php/sbin/php-fpm -m
php配置文件
/usr/local/php/lib/php.ini
/usr/local/php/etc/php-fpm.conf
测试php配置是否正确
/usr/local/php/sbin/php-fpm -t
nginx图片服务器配置样例
nginx.conf内容:
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /home/server/logs/nginx/error.log crit;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /home/server/env/nginx/pid/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream;
charset utf-8;
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 /home/server/logs/nginx/access.log main;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
sendfile on;
tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 60;
tcp_nodelay on;
server_tokens off;
client_body_buffer_size 512k;
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
proxy_temp_path /home/server/data/nginx/proxy_temp_dir;
proxy_cache_path /home/server/data/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=5g;
# Load config files from the /etc/nginx/conf.d directory
# The default server is in conf.d/default.conf
include /home/server/conf/nginx/conf.d/*.conf;
}
/home/server/conf/nginx/conf.d路径下的com.dtdt2.pic.conf如下
server {
listen 80;
#charset koi8-r;
server_name pic.dtdt2.com 192.168.10.111;
location / {
proxy_cache cache_one;
proxy_cache_valid 200 304 12h;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forward-For $remote_addr;
# proxy_pass http://14.17.97.228:8080;
root /home/server/images;
#log_format cache '***$time_local '
# '$upstream_cache_status '
# 'Cache-Control: $upstream_http_cache_control '
# 'Expires: $upstream_http_expires '
# '"$request" ($status) '
# '"$http_user_agent" ';
#access_log /home/server/logs/nginx/cache.log cache; #使用这个日志格式
expires 1d;
}
location ~ /purge(/.*)
{
#设置只允许指定的IP或IP段才可以清除URL缓存。
allow 127.0.0.1;
deny all;
#proxy_cache_purge cache_one$host$1$is_args$args;
}
#扩展名以.php、.jsp、.cgi结尾的动态应用程序不缓存。
location ~ .*\.(php|jsp|cgi)?$
{
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
access_log off;
#location /NginxStatus {
# stub_status on;
# access_log /server/logs/nginx/NginxStatus.log;
# auth_basic "NginxStatus";
# auth_basic_user_file /etc/nginx/htpasswd;
# }
}
一般站点配置样例
nginx部分
ngxin.conf
user www www;
worker_processes auto;
error_log /server/wwwlogs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
multi_accept on;
}
http
{
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 50m;
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 256k;
fastcgi_intercept_errors on;
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;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
#limit_conn_zone $binary_remote_addr zone=perip:10m;
##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.
server_tokens off;
#log format
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
#include vhost/*.conf;
server{
listen 80;
#server_name www.dtdt2.com m.dtdt2.com dtdt2.com;
server_name www.dtdt2.com dtdt2.com;
set $mobile_rewrite do_not_perform;
server_name_in_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
if ($http_user_agent ~* "(Android|iPhone|Windows Phone|UC|Kindle|Nokia|Mobile|SAMSUNG|SonyEricsson|MOT|BlackBerry|LG|HTC|J2ME|Opera Mini)") {
set $mobile_rewrite perform;
}
if ($host = m.dtdt2.com){
set $mobile_rewrite perform;
}
location / {
#proxy_pass http://www.dtdt2.com:8080;
proxy_pass http://localhost:8080;
## if ($mobile_rewrite = perform){ ##for mobile modify
#proxy_pass http://m.dtdt2.com:8081;
## proxy_pass http://localhost:8081;
## }
}
}
include /server/conf/nginx/conf.d/*.conf;
}
/server/conf/nginx/conf.d/下com.dtdt2.wx.conf配置
server
{
listen 80;
server_name wx.dtdt2.com;
index index.html index.htm index.php;
root /server/www/wx.dtdt2.com;
set_real_ip_from 127.0.0.1;
set_real_ip_from 14.17.97.231;
set_real_ip_from 192.168.10.116;
real_ip_header X-Real-IP;
#error_log /server/wwwlogs/www.dtdt2.com.err.log warn;
error_log /server/wwwlogs/wx.dtdt2.com.err.log debug;
access_log /server/wwwlogs/wx.dtdt2.com.access.log access;
location /admin.php {
if ( !-e $request_filename ) {
rewrite ^/admin.php(.*)$ /admin.php?s=$1 last;
}
}
location / {
if ( !-e $request_filename ) {
rewrite ^/(.*)$ /index.php?s=$1 last;
}
}
location /images {
alias /server/img/images;
}
location ~ \.php$ {
include php-fpm.conf;
fastcgi_index index.php;
include fastcgi.conf;
}
# if ($host = dtdt2.com){
# rewrite ^(.*)$ http://www.dtdt2.com permanent;
# }
# if ($server_port = 8080){
# rewrite ^(.*)$ http://www.dtdt2.com permanent;
# }
}
其他域名配置
com.dtdt2.pic.conf把访问pic.dtdt2.com转发到192.168.10.112主机
server
{
listen 80;
server_name pic.dtdt2.com;
# index index.html index.htm index.php;
# root /server/www/wx.dtdt2.com;
server_name_in_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#real_ip_header X-Real-IP;
error_log /server/wwwlogs/pic.dtdt2.com.err.log debug;
access_log /server/wwwlogs/pic.dtdt2.com.access.log access;
location / {
#proxy_pass http://www.dtdt2.com:8080;
proxy_pass http://192.168.10.112;
}
}
nginx中php-fpm.conf内容
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi.conf内容
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
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_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 HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
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;
php部分配置
php.ini如下:
[PHP]
engine = On
short_open_tag = Off
asp_tags = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 17
disable_functions =
disable_classes =
zend.enable_gc = On
expose_php = On
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
max_execution_time = 30
max_input_time = 60
memory_limit = 512M
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = On
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 8M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
doc_root =
user_dir =
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/"
extension = "mongodb.so"
extension = "mongo.so"
extension = "redis.so"
extension = "imagick.so"
extension = "memcache.so"
enable_dl = Off
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 20
;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
[CLI Server]
cli_server.color = On
[Date]
[filter]
[iconv]
[intl]
[sqlite]
[sqlite3]
[Pcre]
[Pdo]
[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=
[Phar]
[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = On
[SQL]
sql.safe_mode = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQL]
mysql.allow_local_infile = On
mysql.allow_persistent = On
mysql.cache_size = 2000
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off
[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off
[OCI8]
[PostgreSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10
[bcmath]
bcmath.scale = 0
[browscap]
[Session]
session.save_handler = files
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 10800
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
mssql.secure_connection = Off
[Assertion]
[COM]
[mbstring]
[gd]
[exif]
[Tidy]
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5
[sysvshm]
[ldap]
ldap.max_links = -1
[mcrypt]
[dba]
[curl]
php-fpm.conf如下 :
;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;
;include=etc/fpm.d/*.conf
;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;
[global]
;error_log = log/php-fpm.log
;syslog.facility = daemon
; Default Value: php-fpm
;syslog.ident = php-fpm
; Default Value: notice
;log_level = notice
;emergency_restart_threshold = 0
;emergency_restart_interval = 0
;process_control_timeout = 0
; process.max = 128
; process.priority = -19
;daemonize = yes
;rlimit_files = 1024
;rlimit_core = 0
;events.mechanism = epoll
;systemd_interval = 10
;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;
; pool name ('www' here)
[www]
user = www
group = www
listen = /tmp/php-cgi.sock
listen.backlog = -1
listen.owner = www
listen.group = www
listen.mode = 0660
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 6
;pm.process_idle_timeout = 10s;
;pm.max_requests = 500
;pm.status_path = /status
;ping.path = /ping
;ping.response = pong
;access.log = log/$pool.access.log
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
slowlog = var/log/slow.log
request_slowlog_timeout = 0
request_terminate_timeout = 100
;rlimit_files = 1024
;rlimit_core = 0
;chroot =
;chdir = /var/www
;catch_workers_output = yes
;clear_env = no
;security.limit_extensions = .php .php3 .php4 .php5
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
配置完成