Ubuntu一键化部署java项目shell脚本

前言:前段时间,被安排编写项目离线的一键化部署的脚本,从零开始编写脚本,碰到了不少问题。现在基本已经完成了脚本,在这里分享下经验。

Ubuntu需要离线安装的软件

需要安装的软件和插件主要包括:jdk、nginx、mysql、redis、supervisor(进程守护)、以及python2.、ssh、build-essential(C++环境)、update这些。
下面主要介绍jdk、nginx、mysql、redis、supervisor(进程守护)的离线安装,剩余的可以去网上自己寻找如何安装(运行下面的脚本之前,请先确认python2.
、ssh、build-essential(C++环境)、update是否已经安装),或者使用下面的脚本先安装(python自己找方法装)

#!/bin/source
echo "在线安装环境"
echo "更新库索引"
apt-get update
echo "安装vim编译器"
apt-get install vim
echo "安装ssh-server"
apt-get install ssh
echo "安装GCC"
apt-get install gcc
echo "安装make"
apt-get install make
echo "安装zip工具"
apt-get install zip
echo "安装C++编译环境"
apt-get install build-essential

Shell脚本编写注意事项

很重要的一点,由于linux系统和windows系统回车换行不是同一个字符,因此脚本最好在linux系统上编写,不然执行的时候很多文件会无法编辑。
其次,安装部署的脚本最好要切换成root用户执行,避免出现权限不足的问题
最后,下面的脚本基本用source执行

一、jdk离线安装的shell脚本

不多说,上脚本

#!/bin/source
echo "解压jdk..."
mkdir -p /usr/local/jvm
tar zxvf jdk-8u231-linux-x64.tar.gz -C /usr/local/jvm
#修改环境变量
echo "修改环境变量..."
echo 'export JAVA_HOME=/usr/local/jvm/jdk1.8.0_231' >>/etc/profile
echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >>/etc/profile
echo 'export PATH=$JAVA_HOME/bin:$PATH' >>/etc/profile
source /etc/profile
echo "jdk 安装配置完成"

jdk下载:https://pan.baidu.com/s/12BMosfirRKNcrtIxFMi5HQ
脚本中,mkdir 是创建一个文件夹,mkdir -p是表示,若有则不创建,无则创建
tar zxvf xxx.tar.gz -C 路径 指的是将和脚本同目录下的tar文件解压到指定路径下

echo 'export JAVA_HOME=/usr/local/jvm/jdk1.8.0_231' >>/etc/profile
echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >>/etc/profile
echo 'export PATH=$JAVA_HOME/bin:$PATH' >>/etc/profile

这部分指的是,在 /etc/profile 这个文件的最后增加配置,配置环境变量。
jdk解压完且配置好环境变量后,可以直接通过java -version查看当前配置的java版本。

二、mysql离线安装并部署环境

mysql的离线安装我当初找了挺久的,才找到一个靠谱点的

#!/bin/source
echo "开始安装mysql"
sudo dpkg -i libaio1_0.3.110-2_amd64.deb libevent-core-2.0-5_2.0.21-stable-2ubuntu0.16.04.1_amd64.deb mysql-client-5.7_5.7.25-0ubuntu0.16.04.2_amd64.deb mysql-client-core-5.7_5.7.25-0ubuntu0.16.04.2_amd64.deb mysql-common_5.7.25-0ubuntu0.16.04.2_all.deb mysql-server_5.7.25-0ubuntu0.16.04.2_all.deb mysql-server-5.7_5.7.25-0ubuntu0.16.04.2_amd64.deb mysql-server-core-5.7_5.7.25-0ubuntu0.16.04.2_amd64.deb

sudo dpkg -i mysql-server-5.7_5.7.25-0ubuntu0.16.04.2_amd64.deb
echo "mysql安装完成"

mysql的离线安装挺麻烦的,需要下载挺多文件的,具体可见https://pan.baidu.com/s/1VvniJWr_MPTh62drsddClA
安装mysql的时候需要手动进行mysql的密码设置,这个密码可以登录mysql数据库

安装完mysql后自然要进行配置了

#!/bin/source
echo "mysql数据库建表"
echo "登录mysql,请输入密码"
mysql -uroot -p <>/etc/mysql/mysql.conf.d/mysqld.cnf
source /etc/mysql/mysql.conf.d/mysqld.cnf
echo "重启mysql"
sudo systemctl restart mysql

mysql -uroot -p 登录mysql数据库进行建库建表的操作。

<

source data1.sql;是运行与脚本同目录下的sql文件进行建表操作。
是在可以在shell中执行mysql的命令。

create user 'root'@'%' identified by '123456'; 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;

创建一个新的用户并设置密码和用户权限。
mysql默认不开启对外访问权限的,若要开启权限,需要自行更改配置文件。

     vim /etc/mysql/mysql.conf.d/mysqld.cnf
     #将bind-address            = 127.0.0.1  注释掉
     #Shift + : wq! 保存离开

mysql安装配置完成后悔开机自启,因此在后面的supervisor中就没有再配置mysql了。

三、redis

相比于mysql,redis就简单许多

#!/bin/source
echo "安装redis....."
echo "<=====================解压redis压缩包======================>"
tar -zxvf redis-3.2.6.tar.gz
echo "<======================redis解压完成======================>"
cd redis-3.2.6
echo "<======================开始安装redis=======================>"
sudo make 
sudo make install
mkdir -p /etc/redis
cp redis.conf /etc/redis
sed -i "s/daemonize no/daemonize yes/g" "/etc/redis/redis.conf"
#cd /usr/local/bin
#redis-server /etc/redis/redis.conf
#redis-cli -p 6379
echo "redis安装完成"

其中, sed -i "s/daemonize no/daemonize yes/g" "/etc/redis/redis.conf" 这句是将/etc/redis/redis.conf该配置文件中的daemonize no改成daemonize yes。
对于脚本中实现编辑文本这一块,可以参考https://blog.csdn.net/wdz306ling/article/details/80087889等博文(网上找的话挺多的,sed的用法)。

四、nginx

nginx的安装和配置其实也很简单,比较麻烦的就是你要先准备好适用你项目的nginx配置文件,这里就主要贴一下脚本代码

#!/bin/source
echo "<===安装Nginx===>"
echo "解压pcre依赖...."
tar zxvf pcre-8.35.tar.gz -C /usr/local
echo "解压openssl依赖...."
tar zxvf openssl-1.0.1f.tar.gz -C /usr/local
echo "解压zlib依赖...."
tar zxvf zlib-1.2.11.tar.gz -C /usr/local
echo "解压nginx"
tar zxvf nginx-1.15.10.tar.gz -C /usr/local
cd /usr/local
echo "修改解压后的依赖文件名"
mv pcre-8.35 pcre
mv openssl-1.0.1f openssl
mv zlib-1.2.11 zlib
echo "执行pcer配置并安装"
cd /usr/local/pcre
./configure
make
make install
echo "执行openssl配置并安装"
cd /usr/local/openssl
./configure
make
make install
echo "执行zlib配置并安装"
cd /usr/local/zlib
./configure
make
make install
echo "安装配置nginx"
mkdir -p /usr/local/nginx
cd /usr/local/nginx-1.15.10
./configure --with-zlib=/usr/local/zlib --with-openssl=/usr/local/openssl --with-pcre=/usr/local/pcre
make 
make install
echo "修改nginx配置文件"
rm -rf /usr/local/nginx/conf/nginx.conf
cp -r /home/ubuntu/deployment/nginx/nginx.conf /usr/local/nginx/conf
echo "配置nginx环境变量"
echo 'export NGINX_HOME=/usr/local/nginx'>>/etc/profile
echo 'export PATH=$PATH:$NGINX_HOME/sbin'>>/etc/profile
source /etc/profile
echo "nginx安装完成"

nginx的安装文件可见:https://pan.baidu.com/s/1zQkXDixQ9sObKeJs_Ui_Yg
nginx和jdk一样,也会配置环境变量,nginx的配置文件请自行准备。
安装好后的nginx会在/usr/local 目录下的nginx中。

五、supervisor(进程守护)

项目在设备上适用supervisor进行进程守护,实现开机项目自启,以及断线重连的操作。
离线安装supervisor需要确保系统有安装python2.*,离线安装需要先行下载以下几个文件。
meld依赖文件
https://files.pythonhosted.org/packages/45/a0/317c6422b26c12fe0161e936fc35f36552069ba8e6f7ecbd99bbffe32a5f/meld3-1.0.2.tar.gz
supervisor安装文件
https://files.pythonhosted.org/packages/31/7e/788fc6566211e77c395ea272058eb7
以及setuptools(之前安装过程中出现过缺失这个)
https://files.pythonhosted.org/packages/0f/b6/9357ac9dcbd267209621a1550ef6cf800d6055a6ed5814c75c1aa8c0dee7/setuptools-19.2.zip
安装supervisor

#!/bin/bash
echo "--------------安装supervisor---------------"
unzip setuptools-19.2.zip
cd setuptools-19.2
python setup.py install
cd ..
tar -zxvf meld3-1.0.2.tar.gz
cd meld3-1.0.2
python setup.py install
cd ..
tar -zxvf supervisor-3.3.3.tar.gz
cd supervisor-3.3.3
python setup.py install
cd ..

配置supervisor开机自启

#!/bin/bash
echo "配置supervisor变量"
mkdir /etc/supervisor
cp supervisord.conf /etc/supervisor
cp -r conf.d /etc/supervisor
mkdir -p /var/log/supervisor
supervisord -c /etc/supervisor/supervisord.conf
echo "设置supervisor开机自启"
cp supervisor.service /lib/systemd/system/
chmod 776 /lib/systemd/system/supervisor.service
systemctl daemon-reload
systemctl enable  supervisor.service

supervisor的配置文件可以自己去网上寻找如何修改和编辑,这里就不贴了。
supervisor.service

[Unit]
Description=supervisor
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/local/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

配置文件请根据实际情况修改。

结束语:以上就是主要的安装配置了,项目启动脚本请根据实际情况编写,其中可能漏了一两个环境或者安装的,毕竟写这个这的写的头疼,若有缺漏,欢迎补充。

你可能感兴趣的:(Ubuntu一键化部署java项目shell脚本)