网站完整部署流程
jar包安装方式
首先部署好的自己程序
1,根据自己的需求改好配置后,打成jar包,halo用的是gradle,这里直接点击打包即可
2,放到服务器上后台部署,最好写个启动/注销 脚本,方便一点
nohup java -jar halo-1.6.0-SNAPSHOT.jar & --启动
#!/bin/bash --杀掉程序进程
ID=`ps -ef|grep halo |grep -v grep |awk '{print $2}'`
echo $ID
for id in $ID
do
kill -9 $id
echo "kill $id"
done
有个小东西,在本地测试环境跑的时候,日志发现就是把后台仪表盘数据的监听是每5秒同步一次,我不太需要这么高的实时性,由每5秒变成了60秒
Docker安装方式
1,安装好docker环境
我这里是用的宝塔,所以就直接宝塔的'软件商店'所搜docker,将docker管理器下载并添加首页
2,开始配置好环境
1,下载好后就自动安好了docker环境,直接在首页点开它,选择镜像管理,获取镜像/镜像搜索 选择好相应的版本镜像
2,后面的基本按照官网提供的命令操作即可,需要注意一下的就是,如果mysql想要用本地可视化软件(navicat等)登陆查看的话,在启动mysql容器的时候需要加上如下:
-p 3306:3306 做容器和服务器的端口映射
--完整
docker run --name some-mysql -p 3306:3306 -v ~/.halo/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw --net halo-net --restart=unless-stopped -d mysql:8.0.27
以上两种方式简易部署后就可以正常的访问网站了,以下是后期的线上环境配置
购买域名
我一般是在哪买的服务器就在哪买域名,方便一点,这次是用的腾讯云
1,认证:
买好域名后,需要先按照提示步骤先认证(我是第一次购买),提交之后要3个工作日左右
2,域名备案
我当时是准备直接去进行域名备案,同时进行的,但域名没有认证成功是没法进行备案,所以就等认证后再备案
3,解析
在备案等待中,可以直接进行域名解析,直接快速添加解析就行(解析就是把域名放到dnc服务上,和服务器ip绑定映射),一会会就可以了,接下来就等待工信部备案通过
6,流程步骤
拉到最底下,点开指引,可以看下流程指引,按照步骤走就行
(1)首先注册登陆公安备案系统账号
(2)调到首页会提示填写开办主体信息,填写
(3)下一步填写网站基本信息,这里会要求填写网站接入服务商,直接点这里,然后搜索"腾讯云计算(北京)有限责任公司",点选择,就会自动填充好,不用一个个填.服务商这些信息在腾讯云流程指引里面都有
(4),下一步填写域名注册服务商,这个可以在流程指引里找到(https://whois.cloud.tencent.com/),然后输入自己的域名,就会出来相关信息,然后更加流程指导填写就行(注意,如果这里点查询域名注册服务商查不出来,就手动选区域,填名称,根据流程指导走)
最后一步提交的时候会让你选择网站的类型和用途,有一项是是否涉及交互性,那个最好选择不是,不然后面有点麻烦,后面会有工作人员给你打电话也是建议你不要选这个(我猜测如果要选了,还得整一堆申请),这期间你要把评论功能给关了,后台配置一下即可
配置二级域名,阿里云OSS接入域名浏览访问
这里最开始是用PicGo做了图床,写博客是够用了,但放在网页上还是有点问题,后面接入了域名,方便控制点
1,阿里云oss照片默认是下载的,需要预览就需要绑定域名,官方文档也有说明
2,打开文档中心,先看看大概的流程走向
3,打开传输管理,选择域名
4,点击绑定域名,输入你要绑定的二级域名(这里如果就是阿里云的服务器,估计需要先配好二级域名,我是腾讯云,可以先不用配置二级,后面会说到),因为我服务器是腾讯云,所以需要进行域名验证,这里点击验证后会给你几个值,服务器域名管理需要用到
5,按照它的提示步骤,先打开自己服务器的域名管理,然后添加记录,第一处填阿里云给的"主机记录",第二处记录类型要选TXT,第三处填阿里云给的"值"
6,添加完后回到oss这边选择提交,只要值填的没错,就没有问题,如果在域名管理那里填错了又删,然后重新添加后一直不生效,把页面都关了,重新试一遍就好了
7,添加成功后oss界面就有了域名,但这里只是验证,并没有真的绑定到二级域名,所以就需要按照文档,配置二级域名并进行资源绑定
8,配置好后,在oss文件件管理,点开图片详情,配置一下路径就会变了.正常来说就可以网页访问预览了
但是我一访问,却直接被服务器拒绝,并且ping 域名,也是映射到了原本的服务区ip,没有映射到oss服务资源,然后我思索半天,猜测应该是被服务器拦截了,我就把防火墙全部开启,设为all,果然,就能正常的访问了,然后有把all关了,也可以正常访问,这里我就懵逼了,果然是玄学
重点提示:你如果是购买的是"标准存储包(中国大陆)",这个包只包含存储的流量,是不包含下载流量的,是需要额外购买或者收费
9,配置一下https,阿里云的就直接配置选择,腾讯云的下载证书"其他",然后在证书名称后面点击上传ssl证书即可
配置nginx和https访问网站
具体详情可参考: 文章传送门
直接宝塔安装好,在服务器https证书下载选择nginx类型,配置如下
upstream halo {
server 127.0.0.1:8001;#项目的ip
}
#配置http转发到https
server {
listen 80;
# 将demo.uanin.com改为您自己的域名
server_name chenhuadadao.cn;
# 上传文件大小的限制
client_max_body_size 1024m;
# 将所有http请求通过rewrite重定向到https。
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
listen 443 ssl;
# 将demo.uanin.com改为您自己的域名
server_name chenhuadadao.cn;
# 上传文件大小的限制
client_max_body_size 1024m;
# 将证书文件存放路径和证书的密钥文件名替换成自己存放路径与证书的密钥文件名。
ssl_certificate /www/xxxxxx.pem;
ssl_certificate_key /www/xxxxxx.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
#代理的服务路径
proxy_pass http://halo;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
扩展
Dockerfile
1,首先开启docker远程服务,这样外网才能正常连接
#服务器执行命令 编辑docker
vim /lib/systemd/system/docker.service
2,修改如下
# 上面一行注释掉,添加下面一行,这个端口原本默认是2375,但好像都说这个端口容易被挖矿,所以就改一个
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2280 -H unix:///var/run/docker.sock
3,重启docker配置
systemctl daemon-reload && systemctl restart docker
4.安装环境变量
5,idea安装docker插件,这会方便很多
plugin搜索docker安装,重启后会多一个docker选项,直接如图配置,url填写ip:端口,看到右下角的successful就是成功了,如果没成功,看看防火墙端口有没有开,远程服务有没有开
6,直接启动dockerfile生成镜像 ,如果构建工具是maven,这里就需要配置pom,然后直接打包就可以了
7,生成镜像直接右键创建容器,然后run启动,run options是映射端口,如果没有这个选项Modify options 选一下,给隐藏了
8,启动成功后就能访问了,后续如果代码更改,直接打包然后重启容器即可,还是很方便
9,要停止,删除,容器和镜像的,直接idea右键都可以直接操作
Dokerfile的解析
参考文章:[点这里]
1:文件必须以 FROM 第一排开头,指定基础镜像
2,制作镜像
如果有多个RUN,自上而下依次运行,每次运行都会形成新的层,建议&& 放入一行运行
如果有多个CMD,只有最后一个运行
如果有多个Entrypoint,只有最后一个运行
如果CMD和entrypoint共存,只有entrypoint运行,且最后的CMD会当做entrypoint的参数
过程
docker build阶段 基于dockerfile制作镜像 (RUN,用于此阶段的运行命令)
docker run阶段 基于镜像运行容器 (CMD,基于image run容器时候,需要运行的命令)
docker build 基于第一阶段的镜像被别人from制作新镜像 (entrypoint 或onbuild 基于镜像重新构建新镜像时候在此阶段运行的命令)
3.案列
#构建centos镜像
Dockerfile
[root@localhost dockerfile]# cat Dockerfile
FROM centos:7
MAINTAINER bertwu <1258398543@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim net-tools
EXPOSE 80
CMD /bin/bash
#解析注释
#FROM centos:7 该image文件继承官方的centos7
#ENV MYPATH /usr/local:设置环境变量MYPATH
#WORKDIR $MYPATH:直接使用上面设置的环境变量,指定/usr/local为工作目录
#RUN yum -y install vim && net-tools:在/usr/local目录下,运行yum -y install vim和yum -y install net-tools命令安装工具,注意安装后的所有依赖和工具都会打包到image文件中
#EXPOSE 80:将容器80端口暴露出来,允许外部连接这个端口
#CMD:指定容器启动的时候运行命令
#FROM java:8 设置基础镜像
FROM openjdk:8-jdk-alpine
#指定镜像创建者信息
MAINTAINER KsdPug
#切换工作目录
WORKDIR /
#创建执行目录
RUN mkdir -p /servers
# 切换指定命令
RUN cd /servers
# 传递参数,微服务打包的jar包名字
ARG JAR_FILE
# 将指定的JAR_FILE拷贝到 /servers/app.jar
COPY ${JAR_FILE} /servers/app.jar
# 暴露指定的端口
EXPOSE 8081
# 执行发布命令
CMD ["nohup","java","-jar","/servers/app.jar","--server.port=8081","&"]
4,docker history 镜像id 查看镜像构建过程
# Jenkins部署
参考文章:[点这里](https://blog.csdn.net/BThinker/article/details/124480035)
卸载旧版本jenkins
cd /root
#卸载之前残留的jenkins
rpm -e jenkins
find / -iname jenkins | xargs -n 1000 rm -rf
#查看是否卸载完毕
rpm -ql jenkins
前提是需要安装好jdk和maven环境
1,安装jenkins,直接下载镜像或已有安装包放到服务器(这里会有很多问题,要看版本和jdk是否对应,最好查一下对于的版本关系,不然麻烦的很,报错了只能干望着)
wget https://repo.huaweicloud.com/jenkins/redhat-stable/jenkins-2.190.3-1.1.noarch.rpm
#解压
rpm -ivh jenkins-2.190.3-1.1.noarch.rpm
2,修改用户名端口(可选),修改jdk路径(必须)
(1)修改用户名端口
vim /etc/sysconfig/jenkins
#找到这两行,修改成指定的端口
JENKINS_USER="用户名"
#示例: root
JENKINS_PORT="端口号"
#示例: 9999
#修改完毕,执行保存
wq!
===================================
(2)修改jdk路径
# 修改,添加自己的jdk路径,查看路径: echo $JAVA_HOME /www/jdk/jdk-11.0.2
vi /etc/init.d/jenkins
3,重载
systemctl daemon-reload
4,启动
# 启动jenkins服务
systemctl start jenkins
# 查看jenkins状态
systemctl status jenkins
5,访问刚刚配置的地址,需要等一会,然后就会出现:
6,cat 上图的路径,会得到密码,登陆即可
7,这里的插件根据需要安装,如果不按就跳过,后面可以在页面里面搜索安装即可
8,这里示范安装中文插件,第一张图片在没汉化前忘记截图了,按照位置找就行,选择管理manage,右边我那是插件报错了,所以直接点击纠正可以快捷进入,如果没有的,往下拉,点击插件管理
9,直接插件库输入chinese,点击左下角安装,安装好后需要点一下后下角才行,点了之后重启即可
重启:http://服务器ip:刚刚配置的端口号/restart ,点击确认yse重启
10,好吧,后面的步骤我就没有自己验证了,因为版本冲突,我暂时没有需求,不太想花时间在这里,直接网上搜一下即可,后面大概就是配置环境,绑定git账号,编写jenkinsfile生产上线