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