快速搭建网站

快速搭建网站

本文主要以图文的形式讲解任意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来查看!

参数说明

  1. -p 3306:3306:将容器的3306端口映射到主机的3306端口
  2. -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机
  3. -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
  4. -v /mydata/mysql/data:/var/lib/mysql/:将数据文件夹挂载到主机
  5. -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

参考链接:
vite实现一个端口多个前端服务
mall在linux下的部署
docker安装nginx并配置