写目录
项目发布的步骤
一.服务器(阿里云的)
1.百度搜索云翼计划
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HFpUp5H9-1620617030432)(http://qb4o2aa24.bkt.clouddn.com/1.png)]
2.购买云服务器ECS
-
学生第一次有优惠
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pZqwBnim-1620617030435)(http://qb4o2aa24.bkt.clouddn.com/1.3.png)] -
购买云服务ECS
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DG8XlGnv-1620617030441)(http://qb4o2aa24.bkt.clouddn.com/1.2.png)] -
信息填写一下,我选的是centOS
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jKWCbzMu-1620617030444)(http://qb4o2aa24.bkt.clouddn.com/1.4.png)]
3.进行相关配置
-
设置密码:控制台->云服务器ECS->实例->更多->密码/密钥->重置实例密码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pzIRcSDT-1620617030445)(http://qb4o2aa24.bkt.clouddn.com/1.5.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lhPbPtHq-1620617030446)(http://qb4o2aa24.bkt.clouddn.com/1.9.png)] -
购买后进入控制台->云服务器ECS->实例->更多->网络和安全组->配置规则->手动添加,然后添加安全组,比如mysql的3306
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v3rrDS5o-1620617030447)(http://qb4o2aa24.bkt.clouddn.com/1.6.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KILOVnkT-1620617030449)(http://qb4o2aa24.bkt.clouddn.com/1.7.png)]
二.项目(我的是springboot项目)
1.一个已经完成的项目
2.进行相关配置
1.修改项目的配置文件(列如:修改运行环境,数据库连接的url,user,pwd等)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JyUxBLyM-1620617030450)(http://qb4o2aa24.bkt.clouddn.com/1.11.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bVwawZTq-1620617030451)(http://qb4o2aa24.bkt.clouddn.com/1.8.png)]
3.打包
1.以eclipse为例,右键项目->run as ->maven install(相当于maven clean + maven package)
2.在项目的target目录下找到.jar文件作为备用(如图:myblog-0.0.1-SNAPSHOT.jar)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hcgkK0Wj-1620617030453)(http://qb4o2aa24.bkt.clouddn.com/1.10.png)]
三.连接服务器的准备工作
- 安装好xshell和xftp
点击进入xshell和xftp的下载界面
1.进入后点xshell的下载
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YCjFSfwU-1620617030454)(http://qb4o2aa24.bkt.clouddn.com/1.13.png)]
2.然后点右边免费授权页面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0gdyjHTp-1620617030455)(http://qb4o2aa24.bkt.clouddn.com/1.14.png)]
3.然后填写信息(注意:点两者都要下载)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SCCKpNme-1620617030456)(http://qb4o2aa24.bkt.clouddn.com/1.15.png)]
4.之后你的邮箱会受到两个邮件,一个xshell的,一个xftp的,里面都有一个链接,点击就能免费下载了
- 使用xshell连接服务器
1.打开xsehll点击新建
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y9fpHtxc-1620617030457)(http://qb4o2aa24.bkt.clouddn.com/1.17.png)]
2.填写信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lPyVmKMh-1620617030458)(http://qb4o2aa24.bkt.clouddn.com/1.16.png)]
名称:随便
协议:ssh
主机:服务器公网ip(阿里云的实例里能看到)
端口:22
然后点击连接,之后输入你的服务器用户名和密码就行了(用户名一般是root)
四.服务器进行相关配置
a.安装docker(注意命令一行一行的输入,不要复制多行)
- 1.安装包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
- 2.配置仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
下载完成后按y
- 完成后重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl start docker
- 验证是否成功(出现 Hello from Docker!则成功)
sudo docker run hello-world
b1.用docker安装数据库mysql
- 1.这里我们拉取官方的最新版本的镜像
docker pull mysql:latest
- 2.使用以下命令来查看是否已安装了 mysql:
docker images
- 3.安装完成后,我们可以使用以下命令来运行 mysql 容器
- 默认时区
$ docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
或者设置时区
$ docker run -itd --name mysql-test -e TZ=Asia/Shanghai -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
参数说明:
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
- 4.验证是否安装成功
docker ps
-
5.1 本机可以通过 root 和密码 123456 访问 MySQL 服务。
-
5.2 通过navicat进行远程连接访问数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gn5hqWQ2-1620617030461)(http://qb4o2aa24.bkt.clouddn.com/1.12.png)]
连接名:随便填
主机:服务器公网ip(到阿里云的实例里可以看到)
端口:3306
用户名和密码:你刚刚设置的(用户名默认root)
之后可以建立一下你项目需要的数据库
b2.用docker安装redis
下载最新镜像
docker pull redis:latest
2.创建要挂载的地址,将redis.conf放到/home/redis/下
mkdir -p /home/redis/
mkdir -p /home/redis/data
3.修改redis.conf
- 注释 bind 127.0.0.1
- protected-mode yes 修改成 protected-mode no
- 添加 requirepass 你的密码 (注:不添加则可以无密码访问)
- 取消注释 notify-keyspace-events Ex 用于监听key过期事件
注:步骤1和步骤的2目的是为了远程连接redis,如果只需本地访问就无需修改
4.启动
docker run --restart=always -d --privileged=true -p 6379:6379 -v /home/redis/redis.conf:/etc/redis/redis.conf -v /home/redis/data:/data --name redis redis:latest redis-server /etc/redis/redis.conf --appendonly yes
参数解释
--restart=always -> 开机启动容器,容器异常自动重启
-d -> 以守护进程的方式启动容器
--privileged=true -> 提升容器内权限
-p 6379:6379 -> 绑定宿主机端口
-v /home/app/redis/conf/redis.conf:/etc/redis/redis.conf -> 映射配置文件
-v /home/app/redis/data:/data -> 映射数据目录
--name redis -> 指定容器名称
--appendonly yes -> 开启数据持久化
b3.用docker安装fastdfs
1.拉取镜像,这个镜像包含nginx和相关配置
docker pull delron/fastdfs
2.创建目录
mkdir -p /home/fastdfs/storage
mkdir -p /home/fastdfs/conf
3.运行容器
docker run -d --network=host --name tracker -v /home/fastdfs/storage:/var/fdfs delron/fastdfs tracker
4.复制配置文件
docker cp storage:/etc/fdfs/storage .conf /home/fastdfs/conf/
docker cp storage:/usr/local/nginx/conf/nginx.conf /home/fastdfs/conf/
5.修改/storage.conf
vi /home/fastdfs/conf/storage.conf
6.修改nginx.conf
vi /home/fastdfs/conf/nginx.conf
7.删除容器
1.获得容器id
docker ps
2.停止容器
docker stop 容器id
3.删除容器
docker rm 容器id
8.正式启动 tracker
docker run -d --network=host --name tracker -v /home/fastdfs/storage:/var/fdfs -v /home/fastdfs/conf/storage.conf:/etc/fdfs/storage.conf:ro -v /home/fastdfs/conf/nginx.conf:/usr/local/nginx/conf/nginx.conf:ro delron/fastdfs tracker
说明:
– name tracker 表示给当前容器命名
第一个 -v 将主机的 /home/fastdfs/storage 目录映射到 容器的 /var/fdfs目录中,此目录用于存储文件
第二个 -v 将主机的 storage.conf 配置文件映射到容器中的 storage.conf,这样启动时就会读主机配置
第三个 -v 将主机nginx.conf 映射到容器中,启动nginx时会读主机配置文件
delron/fastdfs tracker 指定启动的镜像
9.正式启动storage
docker run -d --network=host --name storage -v /home/fastdfs/storage:/var/fdfs -v /home/fastdfs/conf/storage.conf:/etc/fdfs/storage.conf:ro -v /home/fastdfs/conf/nginx.conf:/usr/local/nginx/conf/nginx.conf:ro -e TRACKER_SERVER=192.168.102.10:22122 -e GROUP_NAME=group1 delron/fastdfs storage
说明:
–name storage 和 前 3个 -v 和上面一样的意思
-e TRACKER_SERVER=192.168.102.10:22122 表示fastdfs 用的端口和主机映射ip,此处把ip改成自己主机ip即可
c.开始部署
1.创建文件夹
mkdir /home/docker
注意: /xx/xxx是自己命名的
2.点击xshell上的xftp
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D50Y7rxP-1620617030462)(http://qb4o2aa24.bkt.clouddn.com/1.19.png)]
3.进入
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-07n6fR6Z-1620617030463)(http://qb4o2aa24.bkt.clouddn.com/1.18.png)]
4.找到刚创建的文件夹,把准备好的.jar拖到右边文件夹
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b8QYnVWH-1620617030464)(http://qb4o2aa24.bkt.clouddn.com/1.20.png)]
5.切换到文件夹路径下,编写Dockerfile
切换到文件夹路径下:
cd /home/docker
编写Dockerfile:
vi Dockerfile
- 注意:进入文本后
按 i 开始编写模式
按 Esc 退出编写模式
按 Esc 后,输入 :wq 保存并退出文本
- 编写内容:
FROM java:8
ADD myblog-0.0.1-SNAPSHOT.jar /blog.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/blog.jar"]
- 内容解释:
java:8 jdk版本
myblog-0.0.1-SNAPSHOT.jar: jar包名称
ADD myblog-0.0.1-SNAPSHOT.jar /blog.jar: 代表把jar包拷贝到容器
ENTRYPOINT: 执行jar文件
EXPOSE 8080: 项目访问的端口号
- 注意:你也可以在xftp中像使用windows一样在文件夹中编写文本
6.生成docker镜像
docker build -t blog:1.0 .
. 代表当前目录下、blog:1.0 是名字
也可以这样:
docker build -t blog:1.0 /home/docker
7.查看是否成功生成镜像
docker images
出现了blog:1.0就代表成功了
8.运行镜像
docker run --name blog1.0 -d -p 80:8080 blog:1.0
运行成功后你会得到一个容器id(可以保存一下)
9.现在配置好防火墙和阿里云安全组的话 ,你就可以在浏览器中输入你的服务器外网ip进行访问啦!
10.如果网站运行出错了
docker logs 容器id
你就会得到错误日志,就可以到项目里进行改错,改完然后再重复上面的步骤.
11.配置网站域名
可以到我的另一篇文章里看:
点击进入关于域名
五.防火墙配置
开启端口(以80为例子,其他都是这样)
firewall-cmd --zone=public --add-port=80/tcp --permanent
查询端口号80 是否开启:
firewall-cmd --query-port=80/tcp
重启防火墙:
firewall-cmd --reload
查询有哪些端口是开启的:
firewall-cmd --list-port
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
关闭firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
还需要开启阿里云安全组
六.端口
查看在使用的端口
netstat -nultp