博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生产服务器LNMP全自动安装脚本
阅读量:6515 次
发布时间:2019-06-24

本文共 10926 字,大约阅读时间需要 36 分钟。

此脚本在生产服务器上使用了一年多,可以在任何一台有网络的服务器上自动配置LNMP。

使用方法:将nginx_php代码保存一个文件,例如nginx_php。上传到服务器上执行。

此脚本在CentOS 5.6 i386/x86_64环境下通过。

bash nginx_php出现提示,如下列图所示。

根据大家自己的需要选择数字中任意一个,开始全自动安装LNMP的世界中去吧。

如果之前安装过nginx或者 php 的话,脚本会自动检测它们是不是安装过。例如

就会提示nginx或者php 已经安装过了。

nginx_php 源码

#!/bin/bash# author:coralzd powered by www.freebsdsystem.org# written by coralzd 2011.09.30# version 0.1.5 build 20110930nginx_dir="/usr/local/nginx"php52_dir="/usr/local/php52"mysql_dir="/usr/local/mysql"function check_init() #检测初始化工作有没有执行{   if [ `rpm -qa |grep re2c` == "re2c-0.12.1-2.el5.x86_64" ];then   echo "init already exec!"   exit 0   fi} function check_nginx() #检测nginx有没有安装{   if [ -d /usr/local/nginx/ ];then    echo "nginx already installed!"   exit 1        fi}function check_php52() #检测php有没有安装{   if [ -d /usr/local/php52 ];then     echo "php 5.2.17 already installed!"    exit 1   fi}function check_mysql() #检测mysql有没有安装{    if [ -d /usr/local/mysql/ ];then    echo -n "mysql already installed!"    exit 1    fi}function init() #系统初始化工作{yum -y install wget gcc gcc-c++ autoconf bison flex re2c  libmhash libjpeg libjpeg-devel libpng libpng-devel \freetype freetype-devel gd gd-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-devel libidn libidn-devel openssl openssl-devel        echo -n "starting download nginx_php ..."cat > list << "EOF" &&nginx-1.0.1.tar.gzphp-5.2.17.tar.gzphp-5.2.17-fpm-0.5.14.diff.gzlibiconv-1.13.1.tar.gzlibmcrypt-2.5.8.tar.gzmcrypt-2.6.8.tar.gzmemcache-2.2.5.tgzmhash-0.9.9.9.tar.gzmysql-5.1.58.tar.gzsuhosin-patch-5.2.17-0.9.7.patchpcre-8.10.tar.gzautoconf-2.13.tar.gzeaccelerator-0.9.5.3.tar.bz2PDO_MYSQL-1.0.2.tgzlibunwind-0.99.tar.gzImageMagick.tar.gzimagick-2.3.0.tgzgoogle-perftools-1.6.tar.gzfcgi.confphp.iniphp-fpmnginxdmy.cnfnginx.confphp-fpm.confEOFmkdir packages        for i in `cat list`doif [ -s packages/$i ]; then  echo "$i [found]"else  echo "Error: $i not found!!!download now......"  wget http://www.freebsdsystem.org/linux/nginx-php/$i -P packages/fidonemv packages/nginxd /etc/init.d/mv packages/php-fpm /etc/init.d/chmod 755 /etc/init.d/*chkconfig --add nginxdchkconfig --add php-fpmecho "create the eaccelerator directory to /data0/cache"mkdir /data0/cacheecho "create the mysql data directory to /data0/mysql/data"mkdir -p /data0/mysql/dataecho "PATH=/usr/local/mysql/bin/:$PATH" >> /etc/profilesource  /etc/profilegroupadd -g 80 www &&  useradd www -s /sbin/nologin -g www -u 80groupadd -g 3306 mysql && useradd mysql -s /sbin/nologin -g mysql -u 3306echo "www and mysql user && group create!"cd packages//bin/rm -rf listecho -e "All of installed sucussful!"}function is_version() #检测系统是64位的还是32位的?{if [ `uname -m` == "x86_64" ];thentar zxf libunwind-0.99.tar.gztar zxvf libunwind-0.99.tar.gzcd libunwind-0.99/CFLAGS=-fPIC ./configuremake CFLAGS=-fPICmake CFLAGS=-fPIC installcd ../else        echo "your system is 32bit ,not install libunwind lib!"fi}function ins_nginx()#安装nginx{check_nginxcd packages/is_versiontar zxf google-perftools-1.6.tar.gzcd google-perftools*./configuremakemake installcd ..tar zxf pcre-8.10.tar.gzcd pcre-*./configure makemake install cd ..tar zxf nginx-1.0.1.tar.gzcd nginx-1.0.1./configure --prefix=${nginx_dir} --user=www --group=www --with-http_stub_status_module   make && make installcd .. rm -rf /usr/local/nginx/conf/nginx.confecho "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf cp nginx.conf /usr/local/nginx/conf/cp fcgi.conf /usr/local/nginx/conf/echo "nginx installed sucussfully!"}function ins_mysqlserver()# 安装mysql服务端{cd packages/tar zxf mysql-5.1.58.tar.gzcd mysql-5.1.58CHOST="x86_64-pc-linux-gnu"CFLAGS="-march=nocona -O2 -pipe"CXXFLAGS="${CFLAGS}"./configure --prefix=/usr/local/mysql --enable-assembler --with-server-suffix=-DZWWW --enable-thread-safe-client --enable-local-infile --enable-thread-safe-client --with-big-tables --with-charset=utf8 --with-client-ldflags=-all-static --with-collation=utf8_general_ci --with-extra-charsets=all --with-mysqld-ldflags=-all-static --with-mysqld-ldflags=-ltcmalloc  --with-mysqld-user=mysql --with-plugins=partition,myisammrg --with-pthread --with-unix-socket-path=/tmp/mysql.sock --without-ndb-debug make && make install cp support-*/mysql.server /etc/init.d/mysqldcp my.cnf /etc/chmod 744 /etc/init.d/mysqldcd /usr/local/mysqlchown -R mysql:mysql .rm -rf sql-bench mysql-testmkdir -p /data0/mysql/relaylog/mkdir -p /data0/mysql/binlog/chown -R mysql.mysql /data0/mysql/usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data0/mysql/dataecho "mysql server  5.1.58 installed successfully!"}function ins_mysqlclient() #安装mysql客户端{cd packages/tar zxf mysql-5.1.58.tar.gzcd mysql-5.1.58CHOST="x86_64-pc-linux-gnu"CFLAGS="-march=nocona -O2 -pipe"CXXFLAGS="${CFLAGS}"./configure "--prefix=${mysql_dir}"   "--with-mysqld-user=mysql"   "--without-debug" "--with-charset=utf8"  "--with-extra-charsets=all"  "--with-pthread" "--with-big-tables" "--enable-thread-safe-client" "--enable-assembler" "--with-readline" "--with-ssl" "--enable-local-infile"  "--without-server" make && make installcd /usr/local/mysqlchown -R mysql:mysql .rm -rf sql-bench mysql-testecho "mysql client  5.1.58 installed successfully!"}function ins_php52()#安装php {check_php52cd packages/tar zxf libiconv-1.13.1.tar.gzcd libiconv-1.13.1/./configure --prefix=/usr/localmakemake installcd ../tar zxf autoconf-2.13.tar.gzcd autoconf-2.13./configuire --prefix=/usrmake && make installcd ..tar zxf libmcrypt-2.5.8.tar.gzcd libmcrypt-2.5.8/./configuremakemake install/sbin/ldconfigcd libltdl/./configure --enable-ltdl-installmakemake installcd ../../tar zxf mhash-0.9.9.9.tar.gzcd mhash-0.9.9.9/./configuremakemake installcd ../ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.laln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.soln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.aln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.laln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.soln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-configtar zxf mcrypt-2.6.8.tar.gzcd mcrypt-2.6.8//sbin/ldconfig./configuremakemake installcd ../tar zxf php-5.2.17.tar.gzgzip -cd php-5.2.17-fpm-0.5.14.diff.gz | patch -d php-5.2.17 -p1cd php-5.2.17/patch -p1 -i ../suhosin-patch-5.2.17-0.9.7.patch./buildconf --force  ./configure --prefix=${php52_dir} --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=${php52_dir}/etc  --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 --enable-suhosin --enable-ftp make ZEND_EXTRA_LIBS='-liconv'make installcd ..cp php.ini /usr/local/php52/etc/cp php-fpm.conf /usr/local/php52/etc/echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf.d/mysql_lib.conf/sbin/ldconfigecho "php52 installed successfully!"}function ins_php52ext() #安装php 扩展{cd packages/tar zxf memcache-2.2.5.tgzcd memcache-2.2.5/${php52_dir}/bin/phpize./configure --with-php-config=${php52_dir}/bin/php-configmakemake installcd ../tar jxf eaccelerator-0.9.5.3.tar.bz2cd eaccelerator-0.9.5.3${php52_dir}/bin/phpize./configure --enable-eaccelerator=shared --with-eaccelerator-shared-memory --with-php-config=${php52_dir}/bin/php-configmakemake installcd ../tar zxf ImageMagick.tar.gzcd ImageMagick-6.5.1-2/./configuremakemake installcd ../tar zxf imagick-2.3.0.tgzcd imagick-2.3.0/${php52_dir}/bin/phpize./configure --with-php-config=${php52_dir}/bin/php-configmakemake installcd ..echo "php52 extension installed successfully!"}cat << EOF-* The script is advocating a simple aesthetic, only one file to complete downloading, extract, configure, compile and install Nginx php mysql *--* 1  only install nginx                                                                                                                       *--* 2  only install nginx php                                                                                                                   *--*  3  installation of all(include nginx php mysql)                                                                                             *--*  4  only download software, no installation other                                                                                            *--* 5  only install php 5.2.17                                                                                                                  *--* 6  only install mysql server 5.1.58                                                                                                         *-EOFread -p "Now select the top option to install LNMP...1|2|3|4|5|6:" selectoptcase "$selectopt" in     "1")         init        ins_nginx     ;;     "2")          init          ins_nginx          ins_mysqlclient          ins_php52         ins_php52ext     ;;     "3")          init          ins_nginx          ins_mysqlserver          ins_php52          ins_php52ext     ;;     "4")          init     ;;          "5")         ins_php52         ins_php52ext      ;;     "6")         ins_mysqlserver     ;;               *)          echo "$0 nginx_php"    ;;esac

nginx_php 各部分功能讲述

不管安装nginx php和mysql,如果脚本检测系统没有执行脚本的时候,将会自动执行初始化工作(包括yum 安装相关组件和下载所有的软件包以及配置nginx php服务)

nginx_php里的函数init 表示初始化,分几步来执行初始化:

1) yum 安装nginx php mysql相关组件

2) 在没有发现当前目录有packages的情况下, wget 下载软件包、配置文档、服务脚本到创建的packages下,之后删除软件列表。

3) 设置nginx和php-fpm服务

4) 创建eaccelerator 缓存目录/data0/cache,创建mysql数据目录/data0/mysql/data

5) 将mysql bin路径加入系统PATH中。

6) 创建myql组和mysql用户,www组和www用户

函数check_init表示,检测初始化工作有没有执行。

函数check_nginx表示,检测nginx有没有安装

函数check_php52表示,检测php有没有安装

函数check_mysql表示,检测mysql有没有安装

函数is_version表示,检测系统是64位的还是32位的,如果是64位的话,就安装libunwind库,因为google-perftools在64位系统中用到了libunwind库,在32位的是不需要安装libunwind库的。

函数ins_nginx表示安装nginx,其中有判断系统是否是64位,以便于顺利安装google-pertfools。

函数ins_mysqlclient表示安装mysql 客户端,这是让php 可以连接mysql server。

函数ins_mysqlserver表示安装mysql 服务端,并设置mysql安装目录为mysql组和mysql用户所有,已经配置mysql系统库。

函数ins_php52表示安装php,包括libiconv、autoconf、libmcrypt、mhash、mcrypt、suhosin等安装。并配置php.ini

函数ins_php52ext表示安装php的扩展,包括mecache、eacceletator、imagick等安装。

 

【51CTO.com独家特稿,转载请注明原文作者和出处。】

作者简介:崔晓辉(),网名coralzd,大众网系统管理员,精通网站系统架构、Unix技术。gtalk:coralzd@gmail.com 。

你可能感兴趣的文章
js页内查找
查看>>
专家:人工智能可能劫持人机界面
查看>>
[置顶] IT职场法则七条——献给正在努力奋斗的你们
查看>>
一个C++程序
查看>>
T001_QTP之对象库
查看>>
记录一次服务器登录后提示邮件报错550
查看>>
程序员,请停止学习框架!
查看>>
华为P30价格曝光,加入超级光谱镜头 有望登顶DxOMark
查看>>
PC寄存器-方法区
查看>>
Mybatis源码解读-设计模式总结
查看>>
OC中的加密方法(MD5、DES)
查看>>
Android系统下读写Sqlite数据库的源码
查看>>
配置默认路由器
查看>>
ssl证书一年多少钱?
查看>>
关于桌面类软件的测试
查看>>
数据防泄密行业标准
查看>>
用XMODEM恢复cisco3550交换机的ios
查看>>
chroot限制普通用户登录特定目录
查看>>
salt cmd.run 模块
查看>>
MySQL二进制日志的管理
查看>>