LNMP自动化部署脚本

LNMP一键脚本(编程思路)

1)LNMP是目前互联网主流的WEB服务器架构,主要是由Linux+Nginx+MYSQL|Mariadb+PHP组合,可以发布企业门户网站代码(PHP动态网页),运维人员要能够独立构建LNMP平台。
2)基于手工MAKE源码方式构建LNMP WEB平台,操作步骤、指令非常的繁琐,如果企业要求快速、高效的配置平台,通过手工操作会消耗大量的人力成本,可以引入SHELL编程自动化实现。
Nginx官网下载Nginx软件包&解压&编译&安装;
MYSQL官网下载MYSQL软件包&解压&编译&安装;
PHP官网下载PHP软件包&解压&编译&安装;
LNMP配置文件整合,创建PHPinfo测试页面&访问。

#!/bin/bash
#2020年2月25日20:23:16
#auto install lnmp web
#by Joker
#############################################################
#Define nginx variable
NGX_VER="1.16.0"
NGX_YUM="yum install -y"
NGX_DIR="/usr/local/nginx"
NGX_SOFT="nginx-${NGX_VER}.tar.gz"
NGX_URL="http://nginx.org/download"
NGX_SRC=$(echo $NGX_SOFT|sed 's/\.tar.gz//g')
NGX_ARGS="--user=www --group=www --with-http_stub_status_module"
#Define mysql variable
MYSQL_YUM="yum install -y"
MYSQL_SOFT="mysql-5.6.45.tar.gz"
MYSQL_DIR="/usr/local/mysql56/"
MYSQL_SRC="echo $MYSQL_SOFT|sed 's/\.tar.gz//g'"
MYSQL_URL="http://mirrors.163.com/mysql/Downloads/MySQL-5.6"
#Define php variable
PHP_YUM="yum install -y"
PHP_SOFT="php-5.6.28.tar.bz2"
PHP_DIR="/usr/local/php5/"
PHP_SRC="echo $PHP_SOFT|sed 's/\.tar.gz//g'"
PHP_URL="http://mirrors.sohu.com/php/"
function install_nginx(){
	#Install nginx web
	CHECK_NUM=$(rpm -qa|grep -wcE "gcc|pcre-devel")
	if [ $CHECK_NUM -lt 2 ];then
		$NGX_YUM wget gzip tar make gcc
		$NGX_YUM pcre pcre-devel zlib zlib-devel
	fi
	wget -c  $NGX_URL/$NGX_SOFT
	tar -xzf $NGX_SOFT
	cd $NGX_SRC 
	useradd -s /sbin/nologin www -M
	./configure --prefix=$NGX_DIR $NGX_ARGS 
	if [ $? -eq 0 ];then
		make
		make install
	fi
	$NGX_DIR/sbin/nginx
	ps -ef|grep nginx
	netstat -tnl|grep -w 80
	setenforce 0
	firewall-cmd --add-port=80/tcp --permanent
	systemctl reload firewalld.service
	iptables -t filter -A INPUT -m tcp -p tcp --dport 80 -j ACCEPT
}
function install_mysql(){
	#Install MYSQL db
	$MYSQL_YUM gcc-c++ ncurses-devel cmake make perl gcc autoconf
	$MYSQL_YUM automake zlib libxml2 libxml2-devel libgcrypt libtool bison
	wget -c  $MYSQL_URL/$MYSQL_SOFT
	tar -xzf $MYSQL_SOFT
	cd $MYSQL_SRC
	cmake  .  -DCMAKE_INSTALL_PREFIX=$MYSQL_DIR/ \
	-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
	-DMYSQL_DATADIR=/data/mysql \
	-DSYSCONFDIR=/etc \
	-DMYSQL_USER=mysql \
	-DMYSQL_TCP_PORT=3306 \
	-DWITH_XTRADB_STORAGE_ENGINE=1 \
	-DWITH_INNOBASE_STORAGE_ENGINE=1 \
	-DWITH_PARTITION_STORAGE_ENGINE=1 \
	-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
	-DWITH_MYISAM_STORAGE_ENGINE=1 \
	-DWITH_READLINE=1 \
	-DENABLED_LOCAL_INFILE=1 \
	-DWITH_EXTRA_CHARSETS=1 \
	-DDEFAULT_CHARSET=utf8 \
	-DDEFAULT_COLLATION=utf8_general_ci \
	-DEXTRA_CHARSETS=all \
	-DWITH_BIG_TABLES=1 \
	-DWITH_DEBUG=0
	make
	make install
	#Add MYSQL system service
	cd $MYSQL_DIR/
	\cp support-files/my-default.cnf /etc/my.cnf
	\cp support-files/mysql.server /etc/init.d/mysqld
	chkconfig --add mysqld
	chkconfig --level 35 mysqld on
	service  mysqld stop
	mv /data/mysql/ /data/mysql.bak/
	mkdir  -p  /data/mysql/
	useradd  mysql
	$MYSQL_DIR/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=$MYSQL_DIR/
	ln  -s  $MYSQL_DIR/bin/* /usr/bin/
	service  mysqld  restart
}
function install_php(){
	#Install PHP FPM WEB
	yum install libxml2 libxml2-devel gzip bzip2 -y
	wget -c $PHP_URL/$PHP_SOFT
	tar jxf  $PHP_SOFT
	cd $PHP_SRC
	./configure --prefix=$PHP_DIR --with-config-file-path=$PHP_DIR/etc --with-mysql=$MYSQL_DIR/
	--enable-fpm
	make
	make install
	#Config LNMP WEB and Start Server.
	cp  php.ini-development   $PHP_DIR/etc/php.ini
	cp  $PHP_DIR/etc/php-fpm.conf.default  $PHP_DIR/etc/php-fpm.conf
	cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
	chmod o+x /etc/init.d/php-fpm
	/etc/init.d/php-fpm start
}
function lnmp_config(){
cat>$NGX_DIR/conf/nginx.conf <<EOF
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  \$document_root\$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}
EOF
$NGX_DIR/sbin/nginx -s reload
}
case $1 in
	1 )
	install_nginx
	;;
	2 )
	install_mysql
	;;
	3 )
	install_php
	;;
	4 )
	lnmp_config
	;;
	*  )
	echo -e "\033[32m----------------\033[0m"
	echo -e "\033[32m1)Install Nginx WEB.\033[0m"
	echo -e "\033[32m2)Install MYSQL DB.\033[0m"
	echo -e "\033[32m3)Install PHP-FPM WEB.\033[0m"
	echo -e "\033[32m4)Install LNMP config.\033[0m"
	echo -e "\033[32mUsage:{/bin/sh $0 1|2|3|4|help}\033[0m"
esac

注意:请根据自己实际情况进行变通更改其中的变量,以及要安装的依赖包等。
总结:在写一些自动化脚本 前可以先手工安装一遍,同时将命令记录下来,再进行优化,将重复的部分设置成函数以便后期做更改管理。写完运行测试,没有问题才能用到生产环境。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值