发表于: 2018-01-12 22:24:06
1 724
编辑日报内容...
今天完成的事情:
执行mvn install命令,打包为war包。
本地、服务器都执行一遍,都成功。
部署
第1步,上传文件到服务器
第2步,在服务器打包为war
第3步,把war包放到webapps下(备份原来的war)
第4步,重新加载war包(重启tomcat,或者配置reloadable="true")
第1步的几种方法:scp/sftp命令上传、git/svn服务器上传、idea上传
第2步的方法:maven默认插件、其他插件
第3步:mv 命令
全过程自动部署的几种方法:shell脚本、python脚本、idea远程部署、maven-tomcat插件自动部署
用脚本的话:可以掌控每个步骤,比较好排错,比较灵活。上传文件这一步就有很多实现方法。推荐使用脚本。
python脚本更简单些,会python的推荐。
下面是写的python部署脚本
代码:
from fabric.api import env, run, local, warn_only
from fabric.operations import sudo
from fabric.colors import *
import shutil
GIT_REPO = "https://github.com/bpzj/linux.conf"
repo = "git@120.79.47.191:/home/git/repo.git"
repo_folder = '/home/git/repo.git'
data_folder = '/home/bpzj/data/repo/'
local_repo = r'E:\repo'
local_proj_folder = r'E:\OneDrive\GitHubCode\Study\Java'
project = r'ssmcrud'
env.user = 'root'
# 使用 本机私钥登录
env.key_filename = '~/.ssh/id_rsa'
env.hosts = ['120.79.47.191']
env.port = '22'
# 跳过错误
env.warn_only = True
# env.hosts = ['www.lqtblog.com']
# env.port = '29183'
# env.password = '****' # 使用密码
def deploy():
# 复制项目文件到 git仓库文件夹
copyfile(local_proj_folder, local_repo, project)
local('''cd %s && git add . && git commit -m "new" && git push''' % local_repo)
run("""cd {} && git pull """.format(data_folder))
remote_repo = data_folder + project
sudo('cd %s && mvn package' % remote_repo)
war_path = remote_repo + r"/target/" + project + ".war"
sudo('cp -rf ' + war_path + ' /usr/local/tomcat/webapps/')
sudo('systemctl restart tomcat')
sudo('nginx -s reload')
def deploy2():
pass
def copyfile(parent_src_dir, parent_dst_dir, proj):
"""
用来复制一个项目到指定文件夹
:param parent_src_dir: 项目文件夹的父文件夹
:param parent_dst_dir: 目标文件夹
:param proj: 项目名称,也就是项目文件夹的名称
:return:
"""
# 把上级目录 join 项目名称,获取复制时真正的源地址和目标地址
src_dir = os.path.join(parent_src_dir, proj)
dst_dir = os.path.join(parent_dst_dir, proj)
# 先删除项目的目标文件夹
for root, dirs, files in os.walk(parent_dst_dir):
if proj in dirs:
shutil.rmtree(dst_dir)
# 先复制src文件夹
shutil.copytree(os.path.join(src_dir, "src"), os.path.join(dst_dir, "src"))
# 再复制 pom 文件
shutil.copy(os.path.join(src_dir, "pom.xml"), os.path.join(dst_dir, "pom.xml"))
运行:fab deploy:
中间是打包过程。。。
如果配置了自动热加载,可以不用重启tomcat
使用ip + 端口访问 REST请求
成功,任务2已经实现了。已经把8080端口从安全组去掉了,就不截图了,很简单。
nginx子域访问
安装nginx
配置.conf文件,新建 /etc/nginx/conf.d/nginx-tomcat.conf
直接访问80端口:
这里因为设置静态文件使用nginx处理,但是没有在相应文件夹放静态文件,所以访问的话,只有文字,没有图片和样式。
访问task2项目正常
明天计划的事情:
完成任务3、学习aop、mybatis动态sql。
遇到的问题:
mvn install 执行test单元测试报错
跳过单元测试。
git服务器密钥不管用。
https://www.jianshu.com/p/a8886a5f46d6
这篇文章很详细,涉及到那几个文件权限的地方一定要注意。
按步骤做下来,成功,问题还是在
**修改 .ssh 目录的权限为 700**
**修改 .ssh/authorized_keys 文件的权限为 600**
这两步。
收获:
见上面。
评论