十二12 发表于 2018-8-22 06:47:14

一键搭建lnmp环境shell脚本

  此脚本可实现执行一次全自动无从守护搭建lnmp环境,执行完成后,PHP、nginx、MYSQL、以及一些库文件均安装在/usr/local/目录下。如果第一次搭建lnmp环境,最好还是手动装一遍。
  此脚本参考张宴的Nginx 0.7.x + PHP 5.2.8(FastCGI)搭建胜过Apache十倍的Web服务器,地址: http://blog.s135.com/post/366/ ,可以前往了解,对更好配置lnmp环境也有好处。
  把所以需要的软件下载好(可以到官网下载,也可以到张宴博客下载)与shell脚本配置文件放到一个名为lnmp的文件夹内。
  新建一个名为install.sh文件,加上可执行权限,代码如下
  


[*]#!/bin/bash
[*]#升级所需要的库文件,编译工具……
[*]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
[*]
[*]#安装PHP 5.2.8所需要的库
[*]tar zxvf libiconv-1.13.tar.gz
[*]cd ./libiconv-1.13/
[*]./configure --prefix=/usr/local
[*]make && make install
[*]cd ../
[*]
[*]tar zxvf libmcrypt-2.5.7.tar.gz
[*]cd ./libmcrypt-2.5.7/
[*]./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
[*]
[*]tar zxvf mcrypt-2.6.8.tar.gz
[*]cd mcrypt-2.6.8/
[*]/sbin/ldconfig
[*]./configure
[*]make && make install
[*]cd ../
[*]
[*]#安装MySQL 5.1.33
[*]groupadd mysql
[*]useradd -g mysql mysql
[*]tar zxvf mysql-5.0.87.tar.gz
[*]cd mysql-5.0.87
[*]./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readine --with-readine --with-readline--with-ssl --with-embedded-server --enable-local-infile --with-plugins=innobase
[*]make && make install
[*]chmod +w /usr/local/mysql
[*]chown -R mysql:mysql /usr/local/mysql
[*]cp support-files/my-medium.cnf /usr/local/mysql/my.cnf
[*]cd ../
[*]/usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
[*]
[*]#编译安装PHP(FastCGI模式)
[*]tar zxvf php-5.2.14.tar.gz
[*]gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1
[*]cd php-5.2.14
[*]./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/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
[*]make ZEND_EXTRA_LIBS='-liconv'
[*]make install
[*]cp php.ini-dist /usr/local/php/etc/php.ini
[*]cd ../
[*]
[*]#安装PHP5扩展模块
[*]tar zxvf memcache-2.2.5.tgz
[*]cd memcache-2.2.5/
[*]/usr/local/php/bin/phpize
[*]./configure --with-php-config=/usr/local/php/bin/php-config
[*]make && make install
[*]cd ..
[*]
[*]tar jxvf eaccelerator-0.9.5.3.tar.bz2
[*]cd eaccelerator-0.9.5.3/
[*]/usr/local/php/bin/phpize
[*]./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
[*]make && make install
[*]cd ../
[*]
[*]tar zxvf PDO_MYSQL-1.0.2.tgz
[*]cd PDO_MYSQL-1.0.2
[*]/usr/local/php/bin/phpize
[*]./configure -with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
[*]make && make install
[*]cd ../
[*]
[*]tar zxvf ImageMagick.tar.gz
[*]cd ImageMagick-6.6.9-9/
[*]./configure
[*]make && make install
[*]cd ../
[*]
[*]tar zxvf imagick-2.3.0.tgz
[*]cd imagick-2.3.0/
[*]/usr/local/php/bin/phpize
[*]./configure --with-php-config=/usr/local/php/bin/php-config
[*]make && make install
[*]cd ../
[*]
[*]#用sed修改php.ini文件配置
[*]sed -i 's!extension_dir = "./"!extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"\nextension = "memcache.so"\nextension = "pdo_mysql.so"\nextension = "imagick.so"\n!' /usr/local/php/etc/php.ini
[*]sed -i 's!output_buffering = Off!output_buffering = On!' /usr/local/php/etc/php.ini
[*]
[*]mkdir -p /usr/local/eaccelerator_cache
[*]sed -i '$r ./eaccelerator' /usr/local/php/etc/php.ini
[*]
[*]sed -i '$a kernel.shmmax = 134217728' /etc/sysctl.conf
[*]/sbin/sysctl -p
[*]
[*]#增加运行nginx的用户用户组
[*]groupadd www
[*]useradd -g www www
[*]mkdir -p /home/www/phpmyadmin
[*]chmod +w /home/www/phpmyadmin
[*]chown -R www:www /home/www/phpmyadmin
[*]
[*]rm -f /usr/local/php/etc/php-fpm.conf
[*]cp ./php-fpm.conf //usr/local/php/etc/php-fpm.conf
[*]
[*]#安装Nginx 需要的pcre库
[*]tar zxvf pcre-8.01.tar.gz
[*]cdpcre-8.01/
[*]./configure
[*]make && make install
[*]cd ..
[*]
[*]#安装nginx
[*]tar zxvf nginx-0.8.50.tar.gz
[*]cd nginx-0.8.50/
[*]./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
[*]make && make install
[*]cd ..
[*]
[*]#创建nginx日志目录。
[*]mkdir -p /var/www/nginx_log
[*]chmod +w /var/www/nginx_log
[*]chown -R www:www /var/www/nginx_log
[*]
[*]rm -f /usr/local/nginx/conf/nginx.conf
[*]cp ./nginx.conf /usr/local/nginx/conf
[*]cp ./fcgi.conf /usr/local/nginx/conf/
[*]
[*]#修改内核参数
[*]sed -i '$r ./sysctl' /etc/sysctl.conf
[*]sysctl -p
  

  以上代码经本人测试可以无错误地在centOS5.5、centOS5.6环境下安装,如果安装到其它环境或者用新版软件,最好在每一步安装一个软件后写上如下代码,以免出错提示,如第6、7行,如果安装正解,系统参数$?应该为0,否则为安装出错。
  


[*]tar zxvf memcache-2.2.5.tgz
[*]cd memcache-2.2.5/
[*]/usr/local/php/bin/phpize
[*]./configure --with-php-config=/usr/local/php/bin/php-config
[*]make && make install
[*]if [ $? ne 0 ];then
[*]echo "installmemcache error"
[*]cd ..
  

  脚本中所用到的配置文件按顺序如下
  1、eaccelerator
  


[*]
[*]zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
[*]eaccelerator.shm_size="128"
[*]eaccelerator.cache_dir="/usr/local/eaccelerator_cache"
[*]eaccelerator.enable="1"
[*]eaccelerator.optimizer="1"
[*]eaccelerator.check_mtime="1"
[*]eaccelerator.debug="0"
[*]eaccelerator.filter=""
[*]eaccelerator.shm_max="0"
[*]eaccelerator.shm_ttl="300"
[*]eaccelerator.shm_prune_period="120"
[*]eaccelerator.shm_only="0"
[*]eaccelerator.compress="1"
[*]eaccelerator.compress_level="9"
  

  2、php-fpm.conf
  


[*]
[*]
[*]
[*]All relative paths in this config are relative to php's install prefix
[*]
[*]
[*]
[*]    Pid file
[*]    /usr/local/php/logs/php-fpm.pid
[*]
[*]    Error log file
[*]    /usr/local/php/logs/php-fpm.log
[*]
[*]    Log level
[*]    notice
[*]
[*]    When this amount of php processes exited with SIGSEGV or SIGBUS ...
[*]    10
[*]
[*]    ... in a less than this interval of time, a graceful restart will be initiated.
[*]    Useful to work around accidental curruptions in accelerator's shared memory.
[*]    1m
[*]
[*]    Time limit on waiting child's reaction on signals from master
[*]    5s
[*]
[*]    Set to 'no' to debug fpm
[*]    yes
[*]
[*]
[*]
[*]
[*]
[*]   
[*]
[*]      Name of pool. Used in logs and stats.
[*]      default
[*]
[*]      Address to accept fastcgi requests on.
[*]      Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'
[*]      127.0.0.1:9000
[*]
[*]      
[*]
[*]      Set listen(2) backlog
[*]      -1
[*]
[*]      Set permissions for unix socket, if one used.
[*]      In Linux read/write permissions must be set in order to allow connections from web server.
[*]      Many BSD-derrived systems allow connections regardless of permissions.
[*]      
[*]      
[*]      0666
[*]      
[*]
[*]      Additional php.ini defines, specific to this pool of workers.
[*]      
[*]      /usr/sbin/sendmail -t -i
[*]      1
[*]      
[*]
[*]      Unix user of processes
[*]      www
[*]
[*]      Unix group of processes
[*]      www
[*]
[*]      Process manager settings
[*]      
[*]
[*]      Sets style of controling worker process count.
[*]      Valid values are 'static' and 'apache-like'
[*]      static
[*]
[*]      Sets the limit on the number of simultaneous requests that will be served.
[*]      Equivalent to Apache MaxClients directive.
[*]      Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi
[*]      Used with any pm_style.
[*]      128
[*]
[*]      Settings group for 'apache-like' pm style
[*]      
[*]
[*]          Sets the number of server processes created on startup.
[*]          Used only when 'apache-like' pm_style is selected
[*]          20
[*]
[*]          Sets the desired minimum number of idle server processes.
[*]          Used only when 'apache-like' pm_style is selected
[*]          5
[*]
[*]          Sets the desired maximum number of idle server processes.
[*]          Used only when 'apache-like' pm_style is selected
[*]          35
[*]
[*]      
[*]
[*]      
[*]
[*]      The timeout (in seconds) for serving a single request after which the worker process will be terminated
[*]      Should be used when 'max_execution_time' ini option does not stop script execution for some reason
[*]      '0s' means 'off'
[*]      0s
[*]
[*]      The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file
[*]      '0s' means 'off'
[*]      0s
[*]
[*]      The log file for slow requests
[*]      logs/slow.log
[*]
[*]      Set open file desc rlimit
[*]      51200
[*]
[*]      Set max core size rlimit
[*]      0
[*]
[*]      Chroot to this directory at the start, absolute path
[*]      
[*]
[*]      Chdir to this directory at the start, absolute path
[*]      
[*]
[*]      Redirect workers' stdout and stderr into main error log.
[*]      If not set, they will be redirected to /dev/null, according to FastCGI specs
[*]      yes
[*]
[*]      How much requests each process should execute before respawn.
[*]      Useful to work around memory leaks in 3rd party libraries.
[*]      For endless request processing please specify 0
[*]      Equivalent to PHP_FCGI_MAX_REQUESTS
[*]      500
[*]
[*]      Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.
[*]      Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)
[*]      Makes sense only with AF_INET listening socket.
[*]      127.0.0.1
[*]
[*]      Pass environment variables like LD_LIBRARY_PATH
[*]      All $VARIABLEs are taken from current environment
[*]      
[*]      $HOSTNAME
[*]      /usr/local/bin:/usr/bin:/bin
[*]      /tmp
[*]      /tmp
[*]      /tmp
[*]      $OSTYPE
[*]      $MACHTYPE
[*]      2
[*]      
[*]
[*]   
[*]
[*]
[*]
[*]
  

  3、nginx.conf(nginx配置文件)
  


[*]userwww www;
[*]
[*]worker_processes 8;
[*]
[*]error_log/var/www/nginx_log/nginx_error.logcrit;
[*]
[*]pid      /usr/local/nginx/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;
[*]}
[*]
[*]http
[*]{
[*]include       mime.types;
[*]default_typeapplication/octet-stream;
[*]
[*]#charsetgb2312;
[*]
[*]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_length1k;
[*]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_zonecrawler$binary_remote_addr10m;
[*]
[*]server
[*] {
[*]listen80;
[*]server_name phpmyadmin.ke.cn;
[*]index index.html index.htm index.php;
[*]root /home/www/phpmyadmin;
[*]
[*]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 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 /var/www/nginx_log/access.log access;
[*] }
[*]}
  

  4、fcgi.conf (phpFsatCGI配置文件)
  


[*]fastcgi_paramGATEWAY_INTERFACECGI/1.1;
[*]fastcgi_paramSERVER_SOFTWARE    nginx;
[*]
[*]fastcgi_paramQUERY_STRING       $query_string;
[*]fastcgi_paramREQUEST_METHOD   $request_method;
[*]fastcgi_paramCONTENT_TYPE       $content_type;
[*]fastcgi_paramCONTENT_LENGTH   $content_length;
[*]
[*]fastcgi_paramSCRIPT_FILENAME    $document_root$fastcgi_script_name;
[*]fastcgi_paramSCRIPT_NAME      $fastcgi_script_name;
[*]fastcgi_paramREQUEST_URI      $request_uri;
[*]fastcgi_paramDOCUMENT_URI       $document_uri;
[*]fastcgi_paramDOCUMENT_ROOT      $document_root;
[*]fastcgi_paramSERVER_PROTOCOL    $server_protocol;
[*]
[*]fastcgi_paramREMOTE_ADDR      $remote_addr;
[*]fastcgi_paramREMOTE_PORT      $remote_port;
[*]fastcgi_paramSERVER_ADDR      $server_addr;
[*]fastcgi_paramSERVER_PORT      $server_port;
[*]fastcgi_paramSERVER_NAME      $server_name;
[*]
[*]# PHP only, required if PHP was built with --enable-force-cgi-redirect
[*]fastcgi_paramREDIRECT_STATUS    200;
  

  5、sysctl(修改内核文件)
  


[*]net.ipv4.tcp_fin_timeout = 30
[*]net.ipv4.tcp_keepalive_time = 300
[*]net.ipv4.tcp_syncookies = 1
[*]net.ipv4.tcp_tw_reuse = 1
[*]net.ipv4.tcp_tw_recycle = 1
[*]net.ipv4.ip_local_port_range = 5000    65000
  



页: [1]
查看完整版本: 一键搭建lnmp环境shell脚本