始终linux在补锅匠,在尚未完成linux根据 - 型nginxserver环境进行部署,这些天来,无论它是什么部署,遇到的问题非常多,今天,我的环境中部署文档发行,够一起讨论一下,希望大家採用后遇到问题多多沟通。

|| 安装所需各种依赖包







sudo -s

LANG=C

yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel
krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers





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

tar zxvf 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

make install

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/libmcrypt.la /usr/lib/libmcrypt.la

ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so

ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4

ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8

ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a

ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la

ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so

ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2

ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.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 ../



关于/etc/ld.so.conf:

这个文件记录了编译时使用的动态链接库的路径。

默认情况下,编译器仅仅会使用/lib和/usr/lib这两个文件夹下的库文件

将自己可能存放库文件的路径都增加到/etc/ld.so.conf中是明智的选择

加入方法也极其简单,将库文件的绝对路径直接写进去就OK了,一行一个。比如:

/usr/X11R6/lib

/usr/local/lib

/opt/lib



ldconfig是什么?

它是一个程序,通常它位于/sbin下,供root用户使用。

它的作用就是将/etc/ld.so.conf列出的路径下的库文件 缓存到/etc/ld.so.cache 以供使用,因此当安装完一些库文件,或者修改ld.so.conf添加新的库路径后,须要执行一下/sbin/ldconfig,使全部的库文件都被缓存到ld.so.cache中,假设没做,即使库文件明明就在/usr/lib下的。也是不会被使用的。结果编译过程中报错。缺少xxx库。

切记修改库文件后一定要执行一下ldconfig,在不论什么文件夹下执行都能够。

2、编译安装MySQL 5.5.3-m3

/usr/sbin/groupadd mysql

/usr/sbin/useradd -g mysql mysql

tar zxvf mysql-5.5.3-m3.tar.gz

cd mysql-5.5.3-m3/

./configure --prefix=/home/pubsrc/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 /home/pubsrc/mysql

chown -R mysql:mysql /home/pubsrc/mysql/

cd ../

  ①、创建MySQL数据库存放文件夹

mkdir -p /home/pubsrc/mysql/data/

     mkdir -p /home/pubsrc/mysql/logs/binlog/

     mkdir -p /home/pubsrc/mysql/logs/relaylog/

     chown -R mysql:mysql /home/pubsrc/mysql/

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

/home/pubsrc/mysql/bin/mysql_install_db --basedir=/home/pubsrc/mysql --datadir=/home/pubsrc/mysql/data --user=mysql

③、创建my.cnf配置文件:

vi /home/pubsrc/mysql/my.cnf

输入下面内容:

[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 = /home/pubsrc/mysql

datadir = /home/pubsrc/mysql/data

log-error = /home/pubsrc/mysql/logs/mysql_error.log

pid-file = /home/pubsrc/mysql/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 = /home/pubsrc/mysql/logs/binlog

binlog_cache_size = 4M

binlog_format = MIXED

max_binlog_cache_size = 8M

max_binlog_size = 1G

relay-log-index = /home/pubsrc/mysql/logs/relaylog

relay-log-info-file = /home/pubsrc/mysql/logs/relaylog

relay-log = /home/pubsrc/mysql/logs/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 = /home/pubsrc/mysql/logs/slow.log

#long_query_time = 10



[mysqldump]

quick

max_allowed_packet = 32M





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

vi /home/pubsrc/mysql/mysql

#!/bin/sh

mysql_port=3306

mysql_username="admin"

mysql_password="12345678"



function_start_mysql()

{

    printf "Starting MySQL...\n"

    /bin/sh /home/pubsrc/mysql/bin/mysqld_safe --defaults-file=/home/pubsrc/mysql/my.cnf 2>&1 > /dev/null &

}



function_stop_mysql()

{

    printf "Stoping MySQL...\n"

    /home/pubsrc/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 /home/pubsrc/mysql/mysql

    ⑥、启动MySQL:

        /home/pubsrc/mysql/mysql start

    ⑦、通过命令行登录管理MySQLserver(提示输入password时直接回车):

        /home/pubsrc/mysql/bin/mysql -u admin -p -S /tmp/mysql.sock

⑧、输入下面SQL语句,创建一个具有root权限的用户(admin)和password(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:

/home/pubsrc/mysql/mysql stop

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=/home/pubsrc/php --with-config-file-path=/home/pubsrc/php/etc --with-mysql=/home/pubsrc/mysql --with-mysqli=//home/pubsrc/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 --without-pear





make ZEND_EXTRA_LIBS='-liconv'

make install

cp php.ini-dist /home/pubsrc/php/etc/php.ini

cd ../

4、编译安装PHP5扩展模块

tar zxvf memcache-2.2.5.tgz

cd memcache-2.2.5/

/home/pubsrc/php/bin/phpize

./configure --with-php-config=/home/pubsrc/php/bin/php-config

make

make install

cd ../



tar jxvf eaccelerator-0.9.6.1.tar.bz2

cd eaccelerator-0.9.6.1/

/home/pubsrc/php/bin/phpize

./configure --enable-eaccelerator=shared --with-php-config=/home/pubsrc/php/bin/php-config

make

make install

cd ../



tar zxvf PDO_MYSQL-1.0.2.tgz

cd PDO_MYSQL-1.0.2/

/home/pubsrc/php/bin/phpize

./configure --with-php-config=/home/pubsrc/php/bin/php-config --with-pdo-mysql=/home/pubsrc/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/

/home/pubsrc/php/bin/phpize

./configure --with-php-config=/home/pubsrc/php/bin/php-config

make

make install

cd ../

5、改动php.ini文件

  手工改动:查找/home/pubsrc/php/etc/php.ini中的extension_dir = "./"

  改动为extension_dir = "/home/pubsrc/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 = "/home/pubsrc/php/lib/php/extensions/no-debug-non-zts-20060613/"\nextension = "memcache.so"\nextension = "pdo_mysql.so"\nextension = "imagick.so"\n#' /home/pubsrc/php/etc/php.ini

sed -i 's#output_buffering = Off#output_buffering = On#' /home/pubsrc/php/etc/php.ini

sed -i "s#; always_populate_raw_post_data = On#always_populate_raw_post_data = On#g" /home/pubsrc/php/etc/php.ini

sed -i "s#; cgi.fix_pathinfo=0#cgi.fix_pathinfo=0#g" /home/pubsrc/php/etc/php.ini

6、配置eAccelerator加速PHP:

mkdir -p /home/pubsrc/eaccelerator_cache

vi /home/pubsrc/php/etc/php.ini

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

[eaccelerator]

zend_extension="/home/pubsrc/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"

eaccelerator.shm_size="64"

eaccelerator.cache_dir="/home/pubsrc/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"

eaccelerator.compress="1"

eaccelerator.compress_level="9"

7、创建www用户和组,以及供blog.test.com和www.test.com两个虚拟主机使用的文件夹:

/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):

  在/home/pubsrc/php/etc/文件夹中创建php-fpm.conf文件:

rm -f /home/pubsrc/php/etc/php-fpm.conf

vi /home/pubsrc/php/etc/php-fpm.conf

输入下面内容(假设您安装 Nginx + PHP 用于程序调试,请将下面的<value name="display_errors">0</value>改为<value name="display_errors">1</value>。以便显示PHP错误信息。否则。Nginx 会报状态为500的空白错误页):





 

<?xml version="1.0" ?

>

<configuration>



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



  <section name="global_options">



    Pid file

    <value name="pid_file">/home/pubsrc/php/logs/php-fpm.pid</value>



    Error log file

    <value name="error_log">/home/pubsrc/php/logs/php-fpm.log</value>



    Log level

    <value name="log_level">notice</value>



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

    <value name="emergency_restart_threshold">10</value>



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

    <value name="emergency_restart_interval">1m</value>



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

    <value name="process_control_timeout">5s</value>



    Set to 'no' to debug fpm

    <value name="daemonize">yes</value>



  </section>



  <workers>



    <section name="pool">



      Name of pool. Used in logs and stats.

      <value name="name">default</value>



      Address to accept fastcgi requests on.

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

      <value name="listen_address">127.0.0.1:9000</value>



      <value name="listen_options">



        Set listen(2) backlog

        <value name="backlog">-1</value>



        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.

        <value name="owner"></value>

        <value name="group"></value>

        <value name="mode">0666</value>

      </value>



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

      <value name="php_defines">

        <value name="sendmail_path">/usr/sbin/sendmail -t -i</value>

        <value name="display_errors">1</value>

      </value>



      Unix user of processes

        <value name="user">www</value>



      Unix group of processes

        <value name="group">www</value>



      Process manager settings

      <value name="pm">



        Sets style of controling worker process count.

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

        <value name="style">static</value>



        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.

        <value name="max_children">128</value>



        Settings group for 'apache-like' pm style

        <value name="apache_like">



          Sets the number of server processes created on startup.

          Used only when 'apache-like' pm_style is selected

          <value name="StartServers">20</value>



          Sets the desired minimum number of idle server processes.

          Used only when 'apache-like' pm_style is selected

          <value name="MinSpareServers">5</value>



          Sets the desired maximum number of idle server processes.

          Used only when 'apache-like' pm_style is selected

          <value name="MaxSpareServers">35</value>



        </value>



      </value>



      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'

      <value name="request_terminate_timeout">0s</value>



      The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file

      '0s' means 'off'

      <value name="request_slowlog_timeout">0s</value>



      The log file for slow requests

      <value name="slowlog">logs/slow.log</value>



      Set open file desc rlimit

      <value name="rlimit_files">65535</value>



      Set max core size rlimit

      <value name="rlimit_core">0</value>



      Chroot to this directory at the start, absolute path

      <value name="chroot"></value>



      Chdir to this directory at the start, absolute path

      <value name="chdir"></value>



      Redirect workers' stdout and stderr into main error log.

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

      <value name="catch_workers_output">yes</value>



      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

      <value name="max_requests">102400</value>



      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.

      <value name="allowed_clients">127.0.0.1</value>



      Pass environment variables like LD_LIBRARY_PATH

      All $VARIABLEs are taken from current environment

      <value name="environment">

        <value name="HOSTNAME">$HOSTNAME</value>

        <value name="PATH">/usr/local/bin:/usr/bin:/bin</value>

        <value name="TMP">/tmp</value>

        <value name="TMPDIR">/tmp</value>

        <value name="TEMP">/tmp</value>

        <value name="OSTYPE">$OSTYPE</value>

        <value name="MACHTYPE">$MACHTYPE</value>

        <value name="MALLOC_CHECK_">2</value>

      </value>



    </section>



  </workers>



</configuration>



9、启动php-cgi进程,监听127.0.0.1的9000port,进程数为128(假设server内存小于3GB,能够仅仅开启64个进程)。用户为www:

ulimit -SHn 65535

/home/pubsrc/php/sbin/php-fpm start

注:/home/pubsrc/php/sbin/php-fpm还有其它參数,包含:start|stop|quit|restart|reload|logrotate。改动php.ini后不重新启动php-cgi,又一次载入配置文件使用reload。

三、安装Nginx 0.8.46

  1、安装Nginx所需的pcre库:

tar zxvf pcre-8.10.tar.gz

cd pcre-8.10/

./configure

make && make install

cd ../

   2、安装Nginx

tar zxvf nginx-0.8.46.tar.gz

cd nginx-0.8.46/

./configure --user=www --group=www --prefix=/home/pubsrc/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配置文件

  ①、在/home/pubsrc/nginx/conf/文件夹中创建nginx.conf文件:

rm -f /home/pubsrc/nginx/conf/nginx.conf

vi /home/pubsrc/nginx/conf/nginx.conf

输入下面内容:

user  www www;



worker_processes 8;



error_log  /home/pubsrc/nginx/logs/nginx_error.log  crit;



pid        /home/pubsrc/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       4590;

    server_name  www.inner.bbs.com;

    index index.html index.htm index.php;

    root  /home/wwwroot/bbs;



    #limit_conn   crawler  20;



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

$

    {

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

      fastcgi_pass  127.0.0.1:9000;

      fastcgi_index index.php;

      include fcgi.conf;

    }



    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)?$

    {

      expires      30d;

    }



    location ~ .*\.(js|css)?

$

    {

      expires      1h;

    }



    log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '

              '$status $body_bytes_sent "$http_referer" '

              '"$http_user_agent" $http_x_forwarded_for';

    access_log  /home/pubsrc/nginx/logs/access.log  access;

      }



  server

  {

    listen       4591;

    server_name  www.inner.uc.com;

    index index.html index.htm index.php;

    root  /data/wwwroot/uc;



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

    {

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

      fastcgi_pass  127.0.0.1:9000;

      fastcgi_index index.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  /home/pubsrc/nginx/logs/wwwlogs.log  wwwlogs;

  }

}

②、在/home/pubsrc/nginx/conf/文件夹中创建fcgi.conf文件:

vi /home/pubsrc/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

/home/pubsrc/nginx/sbin/nginx

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

vi /etc/rc.local

在末尾添加下面内容:

ulimit -SHn 65535

/home/pubsrc/php/sbin/php-fpm start

/home/pubsrc/nginx/sbin/nginx

五、优化Linux内核參数

vi /etc/sysctl.conf

在末尾添加下面内容:

# Add

net.ipv4.tcp_max_syn_backlog = 65536

net.core.netdev_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、改动/home/pubsrc/nginx/conf/nginx.conf配置文件后。请运行下面命令检查配置文件是否正确:

/home/pubsrc/nginx/sbin/nginx -t

假设屏幕显示下面两行信息,说明配置文件正确:

      the configuration file /home/pubsrc/nginx/conf/nginx.conf syntax is ok

      the configuration file /home/pubsrc/nginx/conf/nginx.conf was tested successfully



  2、平滑重新启动:

      ①、对于Nginx 0.8.x版本号。如今平滑重新启动Nginx配置很easy,运行下面命令就可以:

/home/pubsrc/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 /home/pubsrc/nginx/nginx.pid`

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

  1、创建脚本/home/pubsrc/nginx/sbin/cut_nginx_log.sh

vi /home/pubsrc/nginx/sbin/cut_nginx_log.sh

     输入下面内容:

#!/bin/bash

# This script run at 00:00



# The Nginx logs path

logs_path="/home/pubsrc/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 /home/pubsrc/nginx/nginx.pid`

2、设置crontab。每天凌晨00:00分割nginx訪问日志

crontab –e

输入下面内容:

00 00 * * * /bin/bash  /home/pubsrc/nginx/sbin/cut_nginx_log.sh



开启php.ini中的cgi.fix_pathinfo=0,防止Nginx文件类型错误解析漏洞。

3,创建nginx启东脚本

vi nginxctl

输入一下内容

#!/bin/bash



BIN=/home/pubsrc/nginx/sbin/nginx

PID=/home/pubsrc/nginx/nginx.pid

case $1 in

        start)

                $BIN -c /home/pubsrc/nginx/conf/nginx.conf;

                exit $?

;

                ;;

        stop)

                kill $(cat $PID);

                exit $?;

                ;;

        reload)

                kill -HUP $(cat $PID);

                exit $?;

                ;;

        rotate)

                kill -USR1 $(cat $PID);

                exit $?;

                ;;

        port)

                echo "Your port is $(( 4000 + $(id -u) ))";

                ;;

        *)

                echo "Usage: $0 {start|stop|reload|roate|port}";

                exit 1;

esac

最后赋予可运行权限

chmod 777 nginxctl







CentOS系统上CentOS Memcached安装。

1.CentOS Memcached安装前须要先安装Libevent:

# curl -O http://www.monkey.org/~provos/libevent-1.4.9-stable.tar.gz

# tar zxf libevent-1.4.9-stable.tar.gz

# cd libevent-1.4.9-stable

# ./configure

# make

# make install

2.继续CentOS Memcached安装:

# curl -O http://www.danga.com/memcached/dist/memcached-1.2.7.tar.gz

# tar zxf memcached-1.2.7.tar.gz

# cd memcached-1.2.7

# ./configure

# make

# make install

3.CentOS Memcached安装接着在当前用户的.bash_profile中加入

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

export LD_LIBRARY_PATH

4.CentOS Memcached执行

# memcached -m 512 -u nobody -vv

測试时候发现会出现下面错误信息:

“/usr/local/memcached/bin/memcached: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory”

错误的原因是未在系统中注冊Libevent. 解决方法例如以下:

# vi /etc/ld.so.conf.d/libevent-i386.conf

在VI中输入下面一行内容:

/usr/local/lib/

最后不要忘了

# ldconfig

5.CentOS Memcached执行

# memcached -m 512 -u nobody -vv

<6 server listening

<7 server listening

<8 send buffer was 109568, now 268435456

<8 server listening (udp)

<9 send buffer was 109568, now 268435456

<9 server listening (udp)

CentOS Memcached执行正常。

以上介绍CentOS Memcached安装及执行检測。





1、启动Memcache 经常使用參数

-p <num>      设置port号(默认不设置为: 11211)

-U <num>      UDP监听port(默认: 11211, 0 时关闭)

-l <ip_addr>  绑定地址(默认:全部都同意,不管内外网或者本机更换IP。有安全隐患,若设置为127.0.0.1就仅仅能本机訪问)

-d            独立进程执行

-u <username> 绑定使用指定用于执行进程<username>

-m <num>      同意最大内存用量。单位M (默认: 64 MB)

-P <file>     将PID写入文件<file>,这样能够使得后边进行高速进程终止, 须要与-d 一起使用















版权声明:本文博主原创文章,博客,未经同意不得转载。

php+mysql+nginx于linux部署对环境的更多相关文章

  1. .NET Core+MySql+Nginx 容器化部署

    .NET Core容器化@Docker .NET Core容器化之多容器应用部署@Docker-Compose .NET Core+MySql+Nginx 容器化部署 GitHub-Demo:Dock ...

  2. Ubuntu-18.04.2系统 Nginx+uWSGI+Django 部署生产环境

    首先准备环境: 1.使用虚拟机 VMware Workstation Pro (也可以不用),安装Ubuntu-18.04.2系统 开始搭建环境 (因为ubuntu18.4.2集成了python3.6 ...

  3. Linux部署Java环境

    一. yum安装jdk (1) 搜索jdk安装包 yum search java|grep jdk (2) 下载jdk1.8,下载之后默认的目录为: /usr/lib/jvm/ yum install ...

  4. Linux部署node环境

    # wget https://nodejs.org/dist/v8.11.4/node-v8.11.4-linux-x64.tar.xz# tar -axvf node-v8.11.4-linux-x ...

  5. NET Core+MySql+Nginx

    NET Core+MySql+Nginx 容器化部署 .NET Core容器化@Docker.NET Core容器化之多容器应用部署@Docker-Compose.NET Core+MySql+Ngi ...

  6. Linux Ubuntu从零开始部署web环境及项目 -----tomcat+jdk+mysql (二)

    上一篇介绍如何在linux系统下搭建ssh环境 这篇开始将如何搭建web服务器 1,下载文件 在官网下载好 tomcat.jdk.mysql的linux压缩包 后缀名为.tar.gz 并通过xftp上 ...

  7. CentOS7 + Python3 + Django(rest_framework) + MySQL + nginx + uwsgi 部署 API 开发环境, 记坑篇

    CentOS7 + Python3 + Django(rest_framework) + MySQL + nginx + uwsgi 部署 API 开发环境 CentOS7 + Python3 + D ...

  8. 数据仓库006 - MySQL 5.6.x - Linux最佳生产环境离线部署

    一.离线安装包 文件准备 这里以mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz为例,记一次MySQL 5.6.x 的生产环境离线部署过程.使用SecureCRT连接 ...

  9. ASP.NET Core 实战:使用 Docker 容器化部署 ASP.NET Core + MySQL + Nginx

    一.前言 在之前的文章(ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路)中,我介绍了如何在 Linux 环境中安装 .NET Core SDK / .NET Core ...

随机推荐

  1. FZU 2020 组合

    组合数求模要用逆元,用到了扩展的欧几里得算法. #include<cstdio> int mod; typedef long long LL; void gcd(LL a,LL b,LL ...

  2. PBOC

    http://blog.sina.com.cn/s/blog_64cc82620100rcgu.html 最近在做一个基于PBOC电子现金卡的终端应用, 项目还没有完成, 但电子现金部分的处理模块已完 ...

  3. "网络适配器本地连接没有有效ip地址配置"错误的解决办法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 win server2008通过一台win xp的共享网络来上网,采用ipv4,网址设置如下: win xp是可以上网 ...

  4. Chinese remainder theorem

    https://en.wikipedia.org/wiki/Chinese_remainder_theorem http://planetmath.org/ChineseRemainderTheore ...

  5. Spring boot(二) springboot + jsp

    官方不推荐JSP在Spring Boot中使用! 一.添加依赖 在pim.xml 里面添加以下 jsp依赖 <dependency> <groupId>org.springfr ...

  6. wdcp忘记mysql的root密码

    复制别人的 不管出于何种原因,应该有不少的朋友在自己的VPS/服务器上采用WDCP管理面板的时候有忘记MYSQL ROOT账户管理密码在寻找解决方法,甚至有忘记WDCP后台管理登录密码的.这些问题都比 ...

  7. SDE 空间表操作

    1. 创建空间表(包含st_geometry属性字段) CREATE TABLE sensitive_areas (area_id integer, name varchar(128), area_s ...

  8. Kinect小小玩偶游戏----小小潜水员

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接: http://blog.csdn.net/cartzhang/article/details/44939887 作者:ca ...

  9. 【codeforces 760C】Pavel and barbecue

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  10. Android 带清除功能的输入框控件EditTextWithDel

    记录下一个非常有用的小控件EditTextWithDel.就是在Android系统的输入框右边增加一个小图标.点击小图标能够清除输入框里面的内容,由于Android原生EditText不具备此功能,所 ...