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测试页面&访问。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
1#!/bin/bash
2#2020年2月25日20:23:16
3#auto install lnmp web
4#by Joker
5#############################################################
6#Define nginx variable
7NGX_VER="1.16.0"
8NGX_YUM="yum install -y"
9NGX_DIR="/usr/local/nginx"
10NGX_SOFT="nginx-${NGX_VER}.tar.gz"
11NGX_URL="http://nginx.org/download"
12NGX_SRC=$(echo $NGX_SOFT|sed 's/\.tar.gz//g')
13NGX_ARGS="--user=www --group=www --with-http_stub_status_module"
14#Define mysql variable
15MYSQL_YUM="yum install -y"
16MYSQL_SOFT="mysql-5.6.45.tar.gz"
17MYSQL_DIR="/usr/local/mysql56/"
18MYSQL_SRC="echo $MYSQL_SOFT|sed 's/\.tar.gz//g'"
19MYSQL_URL="http://mirrors.163.com/mysql/Downloads/MySQL-5.6"
20#Define php variable
21PHP_YUM="yum install -y"
22PHP_SOFT="php-5.6.28.tar.bz2"
23PHP_DIR="/usr/local/php5/"
24PHP_SRC="echo $PHP_SOFT|sed 's/\.tar.gz//g'"
25PHP_URL="http://mirrors.sohu.com/php/"
26function install_nginx(){
27  #Install nginx web
28  CHECK_NUM=$(rpm -qa|grep -wcE "gcc|pcre-devel")
29  if [ $CHECK_NUM -lt 2 ];then
30      $NGX_YUM wget gzip tar make gcc
31      $NGX_YUM pcre pcre-devel zlib zlib-devel
32  fi
33  wget -c  $NGX_URL/$NGX_SOFT
34  tar -xzf $NGX_SOFT
35  cd $NGX_SRC
36  useradd -s /sbin/nologin www -M
37  ./configure --prefix=$NGX_DIR $NGX_ARGS
38  if [ $? -eq 0 ];then
39      make
40      make install
41  fi
42  $NGX_DIR/sbin/nginx
43  ps -ef|grep nginx
44  netstat -tnl|grep -w 80
45  setenforce 0
46  firewall-cmd --add-port=80/tcp --permanent
47  systemctl reload firewalld.service
48  iptables -t filter -A INPUT -m tcp -p tcp --dport 80 -j ACCEPT
49}
50function install_mysql(){
51  #Install MYSQL db
52  $MYSQL_YUM gcc-c++ ncurses-devel cmake make perl gcc autoconf
53  $MYSQL_YUM automake zlib libxml2 libxml2-devel libgcrypt libtool bison
54  wget -c  $MYSQL_URL/$MYSQL_SOFT
55  tar -xzf $MYSQL_SOFT
56  cd $MYSQL_SRC
57  cmake  .  -DCMAKE_INSTALL_PREFIX=$MYSQL_DIR/ \
58  -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
59  -DMYSQL_DATADIR=/data/mysql \
60  -DSYSCONFDIR=/etc \
61  -DMYSQL_USER=mysql \
62  -DMYSQL_TCP_PORT=3306 \
63  -DWITH_XTRADB_STORAGE_ENGINE=1 \
64  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
65  -DWITH_PARTITION_STORAGE_ENGINE=1 \
66  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
67  -DWITH_MYISAM_STORAGE_ENGINE=1 \
68  -DWITH_READLINE=1 \
69  -DENABLED_LOCAL_INFILE=1 \
70  -DWITH_EXTRA_CHARSETS=1 \
71  -DDEFAULT_CHARSET=utf8 \
72  -DDEFAULT_COLLATION=utf8_general_ci \
73  -DEXTRA_CHARSETS=all \
74  -DWITH_BIG_TABLES=1 \
75  -DWITH_DEBUG=0
76  make
77  make install
78  #Add MYSQL system service
79  cd $MYSQL_DIR/
80  \cp support-files/my-default.cnf /etc/my.cnf
81  \cp support-files/mysql.server /etc/init.d/mysqld
82  chkconfig --add mysqld
83  chkconfig --level 35 mysqld on
84  service  mysqld stop
85  mv /data/mysql/ /data/mysql.bak/
86  mkdir  -p  /data/mysql/
87  useradd  mysql
88  $MYSQL_DIR/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=$MYSQL_DIR/
89  ln  -s  $MYSQL_DIR/bin/* /usr/bin/
90  service  mysqld  restart
91}
92function install_php(){
93  #Install PHP FPM WEB
94  yum install libxml2 libxml2-devel gzip bzip2 -y
95  wget -c $PHP_URL/$PHP_SOFT
96  tar jxf  $PHP_SOFT
97  cd $PHP_SRC
98  ./configure --prefix=$PHP_DIR --with-config-file-path=$PHP_DIR/etc --with-mysql=$MYSQL_DIR/
99  --enable-fpm
100 make
101 make install
102 #Config LNMP WEB and Start Server.
103 cp  php.ini-development   $PHP_DIR/etc/php.ini
104 cp  $PHP_DIR/etc/php-fpm.conf.default  $PHP_DIR/etc/php-fpm.conf
105 cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
106 chmod o+x /etc/init.d/php-fpm
107 /etc/init.d/php-fpm start
108}
109function lnmp_config(){
110cat>$NGX_DIR/conf/nginx.conf <<EOF
111worker_processes  1;
112events {
113    worker_connections  1024;
114}
115http {
116    include       mime.types;
117    default_type  application/octet-stream;
118    sendfile        on;
119    keepalive_timeout  65;
120    server {
121        listen       80;
122        server_name  localhost;
123        location / {
124            root   html;
125            fastcgi_pass   127.0.0.1:9000;
126            fastcgi_index  index.php;
127            fastcgi_param  SCRIPT_FILENAME  \$document_root\$fastcgi_script_name;
128            include        fastcgi_params;
129        }
130    }
131}
132EOF
133$NGX_DIR/sbin/nginx -s reload
134}
135case $1 in
136 1 )
137 install_nginx
138 ;;
139 2 )
140 install_mysql
141 ;;
142 3 )
143 install_php
144 ;;
145 4 )
146 lnmp_config
147 ;;
148 *  )
149 echo -e "\033[32m----------------\033[0m"
150 echo -e "\033[32m1)Install Nginx WEB.\033[0m"
151 echo -e "\033[32m2)Install MYSQL DB.\033[0m"
152 echo -e "\033[32m3)Install PHP-FPM WEB.\033[0m"
153 echo -e "\033[32m4)Install LNMP config.\033[0m"
154 echo -e "\033[32mUsage:{/bin/sh $0 1|2|3|4|help}\033[0m"
155esac
156
157

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

给TA打赏
共{{data.count}}人
人已打赏
安全技术安全运维

Windows服务器如何发现被黑

2018-5-20 12:24:31

安全技术

用node.js做cluster,监听异常的邮件提醒服务

2021-12-21 16:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索