财务系统oneinstack部署教程
接连
1、基础环境
服务器:腾讯云或阿里云(或其他厂商云服务器)
操作系统:CentOS 7.9 64位
域名:一定要解析
端口:一定要开放端口80、443等(有的云服务器默认是不开启常用端口)
2、安装oneinstack环境
执行以下指令wget -c http://mirrors.oneinstack.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 1 --jdk_option 3 --db_option 1 --dbinstallmethod 1 --dbrootpwd iti7bejd --redis --reboot
安装完成后如下图
3、将installl.sh文件上传到服务器上data(放到服务器上即可,不限制位置)目录下
installl.sh 文件内容:
#!/bin/bash
cd /data
initDir(){
if [ ! -d "/data/logs" ]; then
mkdir /data/logs
fi
if [ ! -d "/data/script" ]; then
mkdir /data/script
echo '#!/bin/bash
front_end_path="/data/wwwroot/$1"
rm -rf ${front_end_path}/*
echo "success clean $1"' > /data/script/clean.sh
echo 'chown -R www.www /data/logs
chown -R www.www /data/server
chown -R www.www /data/temp
chown -R www.www /data/upload
chown -R www.www /data/worker
chown -R www.www /data/wwwroot
find /data/logs -type d -exec chmod 755 {} \;
find /data/logs -type f -exec chmod 644 {} \;
find /data/server -type d -exec chmod 755 {} \;
find /data/server -type f -exec chmod 644 {} \;
find /data/temp -type d -exec chmod 755 {} \;
find /data/temp -type f -exec chmod 644 {} \;
#find /data/upload -type d -exec chmod 755 {} \;
#find /data/upload -type f -exec chmod 644 {} \;
find /data/worker -type d -exec chmod 755 {} \;
find /data/worker -type f -exec chmod 644 {} \;
find /data/wwwroot -type d -exec chmod 755 {} \;
find /data/wwwroot -type f -exec chmod 644 {} \;
chmod +x /data/server/*/*.jar;
' > /data/script/mod.sh
echo '#!/bin/bash
counter=1;
http_addr="http://127.0.0.1:$1/"
while : ;do
status_code=`curl -m 5 -s -o /dev/null -w %{http_code} $http_addr`
if [ $counter -gt 60 ]; then
echo "[ERROR]: started error"
exit 0
fi
if [ $status_code -eq 403 ]; then
echo "[INFO]: http connection is ok: $http_addr"
exit 0
elif [ $status_code -ne 200 ]; then
echo "[ERROR]: http connection error: $http_addr code:$status_code time: $counter"
counter=$[$counter+1]
sleep 1
else
echo "[INFO]: http connection is ok: $http_addr"
exit 0
fi
done' > /data/script/http-check.sh
echo '#!/bin/bash
bs_server_dir="/data/server/$1"
nowtime=$(date "+%Y%m%d%H%M%S")
echo "start update $1 server"
systemctl stop $1
#备份
rm -rf ${bs_server_dir}/$1.*.bak
mv ${bs_server_dir}/$1.jar ${bs_server_dir}/$1.${nowtime}.bak
cp ${bs_server_dir}/$1-*.jar ${bs_server_dir}/$1.jar
sh /data/script/mod.sh $1
systemctl start $1
echo "server success update $1"
sh /data/script/http-check.sh $2' > /data/script/update.sh
chmod 755 /data/script/clean.sh
chmod 755 /data/script/mod.sh
chmod 755 /data/script/http-check.sh
chmod 755 /data/script/update.sh
fi
if [ ! -d "/data/server" ]; then
mkdir /data/server
fi
if [ ! -d "/data/temp" ]; then
mkdir /data/temp
fi
if [ ! -d "/data/upload" ]; then
mkdir /data/upload
fi
if [ ! -d "/data/worker" ]; then
mkdir /data/worker
fi
}
initServer(){
read -p "请输入服务名称: " serverName
read -p "请输入服务端口: " serverPort
read -p "请输入服务域名: " siteUrl
mkdir -p /data/logs/$serverName
mkdir -p /data/server/$serverName
mkdir -p /data/worker/$serverName
mkdir -p /data/temp/$serverName
echo "JAVA_HOME=/usr/lib/jvm
JAVA_OPTS='-server -Xms1024m -Xmx1024m -Dspring.config.import=file:/data/server/${serverName}/application.yml -Djava.io.tmpdir=/data/temp/${serverName}/ -Djava.security.egd=file:/dev/./urandom'" > /data/server/$serverName/${serverName}.conf
echo "spring:
profiles:
active: prod
datasource:
url: jdbc:mysql://localhost:3306/$serverName?characterEncoding=UTF-8&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true
password:
username:
logging:
file:
path: /data/logs/$serverName
server:
port: $serverPort
tomcat:
basedir: /data/worker/$serverName/" > /data/server/$serverName/application.yml
echo "[Unit]
Description=$serverName
After=network.target
[Service]
User=www
Group=www
WorkingDirectory=/data/worker/$serverName
ExecStart=/data/server/$serverName/$serverName.jar
ExecStop=kill $MAINPID
SuccessExitStatus=143
Restart=always
[Install]
WantedBy=multi-user.target" > /etc/systemd/system/$serverName.service
systemctl enable $serverName.service
sed -i "/502.html;/ a location ^~ /api/ { \n index index.html index.htm; \n if ( !-e \$request_filename ) { \n rewrite \^/api/\(.*\)\$ /\$1 break; \n proxy_pass http://127.0.0.1:$serverPort; \n } \n include proxy.conf;\n} \nlocation / { \n try_files \$uri \$uri/ /index.html; \n}\n" /usr/local/nginx/conf/vhost/$siteUrl.conf
systemctl reload nginx
}
cat <<EOF
(1) 安装服务
(0) 初始化目录
EOF
read -p "请选择需要的操作(0-1): " input
case $input in
0)
initDir
;;
1)
initServer
;;
esac
4、执行installl.sh文件
初始化目录sh installl.sh
输入0 ,初始化目录
5、添加虚拟主机(可以参考oneinstack官网的教程,如果添加不成功可以多试几次)
打开oneinstack目录 cd oneinstack
执行 ./vhost.sh
注意:首次创建的过程需要输入邮箱,输入自己的邮箱即可。
1.添加客户端
创建成功后的文件夹目录
2.添加管理端
创建成功后的文件夹目录
3.可以在对应目录查看配置文件
6、创建服务
服务名和端口自定义,域名对应上面创建的虚拟机域名,如果不对应的话创建完成不会自动配置代理。
1.客户端服务
2.管理服务端
创建成功后会自动配置好代理
3.需要重新加载nginx
7、修改服务配置文件
1.创建服务成功后会自动创建对应的目录和文件
2.修改application.yml文件,连接数据库改成自己的库就可以,然后再添加短信部分的配置
3.修改csqt.conf的内存,把1024改成512
4.服务管理端csht的配置同上
8、上传项目
1.把打包好的客户端服务jar包和文字字体文件上传到server/csqt目录并把jar包名称改成与csqt.conf文件名称一样
2.把打包好的管理端服务jar包上传到server/csht目录并把jar包名称改成与csht.conf文件名称一样
3.把打包好的前端项目上传到wwwroot/你的域名文件夹(记得分清哪个是客户端的哪个是管理端的)
9、修改用户组
注:如果不修改可能启动不成功:
修改成功后如下
10、启动服务
在logs目录下可以看到对应的日志