快速搭建网站
快速搭建网站
本文主要以图文的形式讲解任意web项目在Linux环境下的部署,涉及在Docker容器中安装MySQL、Redis、Nginx、RabbitMQ以及SpringBoot应用部署,基于CenterOS7.6(其实别的系统也都是可以的,我目前使用的就是OpenCloudOS8.6
)
1.推荐服务器配置(或虚拟机配置)
服务器:腾讯云-轻量应用服务器 centerOS7.6 2核4G 5M
对象存储:腾讯云cos存储-50GB存储(新用户应该会送三个月的存储,但是需要自己购买下行流量以及访问次数)
2.Docker环境安装
- 安装yum-utils:
yum install -y yum-utils device-mapper-persistent-data lvm2
- 为yum源添加docker仓库位置:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安装docker:
yum install docker-ce
- 启动docker:
systemctl start docker
3.MySQL安装
下载MySQL5.7的docker镜像: docker pull mysql
,可以通过mysql:5.7
来指定下载特定版本,否则默认下载最新版(8.0x)
- 创建mysql镜像并启动
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
**注意!!**这里最后一行的5.7应该根据实际的来,这是tag,具体的tag可以使用docker images
来查看!
参数说明
- -p 3306:3306:将容器的3306端口映射到主机的3306端口
- -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机
- -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
- -v /mydata/mysql/data:/var/lib/mysql/:将数据文件夹挂载到主机
- -e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码
生产环境尽量不要用简单的root密码,如果一定要用请自己处理防火墙
进入mysql镜像并且打开mysql命令行
-
docker exec -it mysql /bin/bash
进入mysql镜像 -
mysql -uroot -proot --default-character-set=utf8;
打开mysql客户端 --default后面的部分可以视情况加,非必选项 -
create database xxx character set utf8;
创建一个名为xxx的数据库 -
docker cp /mydata/1234.sql mysql:/
将数据库文件导入到mysql镜像中,这一步需要你自己提前先将1234.sql文件上传到服务器上面去,这里强烈推荐tarbbytarbby-ssh连接工具 -
use xxx;
切换数据库 -
source /1234.sql;
执行sql文件 -
grant all privileges on *.* to 'reader' @'%' identified by '123456';
@%的意思是所有的ip都能够利用这个账户对数据库进行访问,所以如果在生产环境一定要把密码弄的特别复杂才行!!
4.安装redis
-
docker pull redis:7
拉取redis镜像 指定版本为7 -
docker run -p 6379:6379 --name redis \ -v /mydata/redis/data:/data \ -d redis:7 redis-server --appendonly yes --requirepass "mypassword"
生产环境一定要设置非常复杂的密码,因为生产环境密码简单的话完全可以利用你的6379端口抢占你的服务器
5.安装nginx
镜像拉取
docker pull nginx:1.22
nginx配置
直接看这篇文章就可以解决你百分之99的问题,至少可以确定如果你的项目在根目录下的话,前端打包就一定能跑起来!docker-nginx安装部署与扩展性配置
这篇文章中有一点:docker run -d -p 80:80 --name nginx_wms_ui -v /home/wms/nginx/dist:/usr/share/nginx/html --restart=always nginx
-p 后面跟的是端口号,如果你后续需要配置https兼容的话,还需要监听443端口,其他的参数根据自己的需求来进行配置即可。
6.RabbitMQ安装
- 下载rabbitmq3.9-management的docker镜像:
docker pull rabbitmq:3.9-management
- 使用如下命令启动RabbitMQ服务:
docker run -p 5672:5672 -p 15672:15672 --name rabbitmq \ -v /mydata/rabbitmq/data:/var/lib/rabbitmq \ -d rabbitmq:3.9-management
- 开启防火墙
firewall-cmd --zone=public --add-port=15672/tcp --permanent //打开防火墙,设置permanent表示永久开启,避免docker重启后失效
firewall-cmd --reload //重载防火墙配置
如果显示没有开启防火墙,请百度搜索防火墙开启关闭💖
关于防火墙
如果是部署在云服务的话,除了系统防火墙外,云服务也有自己的防火墙规则,也就是说不仅要开启系统的防火墙,云服务器的防火墙也需要开启
到这里,简单的开发环境就算搭建好了,接下来讲一下部署的时候遇到的坑。
7.部署前后端服务遇到的坑
1.部署后端springboot服务
首先我推荐用docker来进行部署,网上有很多教程,在这里就不赘述了,主要是要注意两点:
- 1.修改docker配置文件,监听2375端口上来的后端jar包
vim /usr/lib/systemd/system/docker.service
找到文件中ExecStart ,修改为如下:ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
改完上述内容以后,服务器就能监听2375端口的推送了,这里需要注意,首先要打开系统的2375端口,firewall-cmd --zone=public --add-port=2375/tcp --permanent
然后需要打开云服务器的2375端口。
为避免被黑客利用,建议配置tcp 中的来源ip仅为本机ip
前端部署的坑
前端部署其实无非就是nginx配置不对,这个稍后我将我的nginx配置放在文章中,并且标明含义
文章到这里就结束了,如果大家有什么问题欢迎大家联系我,qq:1849819717 邮箱:jiam-xia@outlook.com 亦或是去我的博客进行留言,博客地址:xiayexiaolu