lnmp的一键部署(脚本)

  • Post author:
  • Post category:其他


#!/bin/bash

#安装环境依赖包

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

yum -y install expect &> /dev/null

nginx() {

yum -y install gcc gcc-c++ pcre-devel zlib-devel make

useradd -M -s /sbin/nologin nginx

cd /opt

if [ -f nginx-1.15.9.tar.gz ];then

echo “安装包已存在,正在解压”

tar xzvf nginx-1.15.9.tar.gz

else

echo “安装包不存在,请将安装包放在opt目录下”

fi

cd nginx-1.15.9/

./configure \

–prefix=/usr/local/nginx \

–user=nginx \

–group=nginx \

–with-http_stub_status_module

make && make install

#路径优化

cp /usr/local/nginx/sbin/nginx /usr/local/sbin/

#检查配置文件

nginx

nginx -t

if [ $? -eq 0 ];then

echo “nginx安装成功”

else

echo “nginx安装失败,请检查”

fi

killall -s HUP nginx

echo “[Unit]

Description=nginx

After=network.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/usr/bin/kill -s HUP $MAINPID

ExecStop=/usr/bin/kill -s QUIT $MAINPID

PrivateTmp=true

[Install]

WantedBy=multi-user.target” > /lib/systemd/system/nginx.service

chmod 754 /lib/systemd/system/nginx.service

systemctl enable nginx.service

killall -3 nginx

systemctl start nginx

}

mysql() {

yum -y install gcc gcc-c++ pcre-devel zlib-devel make

yum -y install \

ncurses \

ncurses-devel \

bison \

cmake

useradd -s /sbin/nologin  mysql

cd /opt

if [ -f mysql-boost-5.7.20.tar.gz ];then

echo “安装文件已经存在正在解压”

tar xzvf mysql-boost-5.7.20.tar.gz

else

echo “安装文件不存在,请检查”

fi

cd /opt/mysql-5.7.20/

cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \

-DSYSCONFDIR=/etc \

-DSYSTEMD_PID_DIR=/usr/local/mysql \

-DDEFAULT_CHARSET=utf8  \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DWITH_BOOST=boost \

-DWITH_SYSTEMD=1

make && make install

#对数据库进行权限调整

chown -R mysql:mysql /usr/local/mysql/

echo “[client]

port = 3306

default-character-set=utf8

socket = /usr/local/mysql/mysql.sock

[mysql]

port = 3306

default-character-set=utf8

socket = /usr/local/mysql/mysql.sock

[mysqld]

user = mysql

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

port = 3306

character_set_server=utf8

pid-file = /usr/local/mysql/mysqld.pid

socket = /usr/local/mysql/mysql.sock

server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES” > /etc/my.cnf

chown mysql:mysql /etc/my.cnf

#设置环境变量

echo ‘PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH’ >> /etc/profile

echo ‘export PATH’ >> /etc/profile


export PATH

#初始化数据库

cd /usr/local/mysql/

bin/mysqld \

–initialize-insecure \

–user=mysql \

–basedir=/usr/local/mysql \

–datadir=/usr/local/mysql/data

cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

systemctl start mysqld

systemctl enable mysqld

/usr/bin/expect <<EOF

spawn mysqladmin -u root -p password

expect {

“Enter password”

{send “\r”;exp_continue}

“New password”

{send “abc123\r”;exp_continue}

“Confirm new password”

{send “abc123\r”}

}

expect eof

EOF

php() {

yum -y install \

libjpeg \

libjpeg-devel \

libpng libpng-devel \

freetype freetype-devel \

libxml2 \

libxml2-devel \

zlib zlib-devel \

curl curl-devel \

openssl openssl-devel

cd /opt

find /opt -name php*

if [ $? -gt 0 ];then

echo “未找到安装包,请将php安装包放置在/opt目录下”

else

tar xjvf php-7.1.10.tar.bz2

echo “安装包已解压”

fi

cd php-7.1.10

./configure \

–prefix=/usr/local/php \

–with-mysql-sock=/usr/local/mysql/mysql.sock \

–with-mysqli \

–with-zlib \

–with-curl \

–with-gd \

–with-jpeg-dir \

–with-png-dir \

–with-freetype-dir \

–with-openssl \

–enable-fpm \

–enable-mbstring \

–enable-xml \

–enable-session \

–enable-ftp \

–enable-pdo \

–enable-tokenizer \

–enable-zip

make && make install

cp php.ini-development /usr/local/php/lib/php.ini

sed -i ‘s/mysqli.default_socket =/mysqli.default_socket = \/usr\/local\/mysql\/mysql.sock/’ /usr/local/php/lib/php.ini

sed -i ‘s/date.timezone =/date.timezone = Asia\/Shanghai’ /usr/local/php/lib/php.ini

/usr/local/php/bin/php -m

cd /usr/local/php/etc/

cp  php-fpm.conf.default php-fpm.conf

cd /usr/local/php/etc/php-fpm.d/

cp www.conf.default www.conf

sed -i ‘s/; pid = run/php-fpm.pid/pid = run\/php-fpm.pid/’ /usr/local/php/etc/php-fpm.conf

/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini

netstat -anpt | grep 9000

if [ $? -eq 0 ];then

echo “服务已开启”

else

echo “服务未开启,请检查”

fi

cp -r /usr/local/php/bin/ /usr/local/bin/

sed -i ’42alocation ~ \.php$ {\n        root        html;\n        fastcgi_pass   127.0.0.1:9000;\n          fastcgi_index  index.php;\n        fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;\n        include        fastcgi_params;\n}’ /usr/local/nginx/conf/nginx.conf

/usr/bin/expect <<EOF

spawn mysql -uroot -p123456

expect {

“mysql> ”

{ send “CREATE DATABASE bbs;\r” exp_continue; }

}

expect {

“mysql> ”

{ send “GRANT all ON bbs.* TO ‘bbsuser’@’%’ IDENTIFIED BY ‘admin123’;\r” exp_continue; }

}

expect {

“mysql> ”

{ send “GRANT all ON bbs.* TO ‘bbsuser’@’localhost’ IDENTIFIED BY ‘admin123’;\r” exp_continue; }

}

expect {

“mysql> ”

{ send “flush privileges;\r”}

}

expect eof

EOF

echo “<?php

phpinfo();

?>” > /usr/local/nginx/html/index.php

systemctl restart nginx

}

discuz() {

cd /opt

if [ -f Discuz_X3.4_SC_UTF8.zip ];then

echo “安装文件已存在,正在解压”

unzip Discuz_X3.4_SC_UTF8.zip  -d /tmp

else

echo “安装文件不存在,请检查”

fi

cd /tmp/dir_SC_UTF8/

cp -r upload/ /usr/local/nginx/html/bbs/

cd /usr/local/nginx/html/bbs/

chown -R root:nginx ./config/

chown -R root:nginx ./data/

chown -R root:nginx ./uc_client/

chown -R root:nginx ./uc_server/

chmod -R 777 ./config/

chmod -R 777 ./data/

chmod -R 777 ./uc_client/

chmod -R 777 ./uc_server/

}

nginx

mysql

php

discuz



版权声明:本文为a_b_e_l_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。