始终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. (嵌入式开发)自己写bootloader之编写第一阶段

    最简单的bootloader的编写步骤: 1. 初始化硬件:关看门狗.设置时钟.设置SDRAM.初始化NAND FLASH 2. 如果bootloader比较大,要把它重定位到SDRAM 3. 把内核 ...

  2. swift项目第三天:手写代码搭建主框架

    一:先配置环境:自定义Log输出(DEBUG 和 release模式),并屏蔽后台多余的打印信息 1:屏蔽后台多余的打印信息:如果写了OS_ACTIVITY_MODE = disable 还是不行.把 ...

  3. js进阶 12-1 jquery的鼠标事件有哪些

    js进阶 12-1 jquery的鼠标事件有哪些 一.总结 一句话总结:1+3*2+1+1,其中里面有两组移入移出,一组和click,总结就是click(3个),hover(5个),mousemove ...

  4. keil编译后Program Size: Code=46284 RO-data=988 RW-data=580 ZI-data=1094588

    Program Size: Code=46284 RO-data=988 RW-data=580 ZI-data=1094588 Code      :   程序中代码所占字节大小 RO-data : ...

  5. mysql 查询字段名所在的表

    select * from (select * from information_schema.COLUMNS where table_schema = '数据库名') temp where colu ...

  6. 【MySQL】15个有用的MySQL/MariaDB性能调整和优化技巧

    MySQL 是一个强大的开源关系数据库管理系统(简称 RDBMS).它发布于 1995 年(20年前).它采用结构化查询语言(SQL),这可能是数据库内容管理中最流行的选择.最新的 MySQL 版本是 ...

  7. 【Lucene4.8教程之五】Luke 2014-06-24 15:12 1092人阅读 评论(0) 收藏

    一.Luke基本内容 1.Luke简介 Luke可用于查看Lucene创建的索引,并对其进行基本操作. 2.创建Luke (1)从Github上下载源文件 https://github.com/tar ...

  8. Linux基本命令(一)

    目标 熟练使用 Linux常用的命令 ls clear cd pwd mkdir touch rm cp mv tree chmod find grep 重定向 软连接.硬链接 压缩 shutdown ...

  9. 卡特兰(Catalan)数列

    卡特兰数又称卡塔兰数,英文名 Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名,其前几项为 : 1 ...

  10. php如何实现读取网易有道词典输出单词的xml格式并且转化为html形式

    php实现读取网易有道词典输出单词的xml格式并且转化为html形式 一.总结 一句话总结:将xml中的文件用preg_match_all读出来,然后组合成想要的数据 1.explode除了爆炸的意思 ...