一键搭建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]