网站建设工作汇报,黑科技广告推广神器,西安网站制作模板,电子商务战略选择 网站建设建议前言
描述#xff1a;本文主要是用来记录 如何用标题上的技术#xff0c;部署到云服务器上通过ip正常访问。
一、总览
1.1、Docker做的事
拉取 mysql 镜像拉取 redis 镜像拉取 jdk 镜像拉取 nginx 镜像
解释说明#xff1a;前端项目的打包文件放在 nginx容器运行。后端…前言
描述本文主要是用来记录 如何用标题上的技术部署到云服务器上通过ip正常访问。
一、总览
1.1、Docker做的事
拉取 mysql 镜像拉取 redis 镜像拉取 jdk 镜像拉取 nginx 镜像
解释说明前端项目的打包文件放在 nginx容器运行。后端的jar包放在jdk容器运行。另外两个是后端项目需要用到的数据库。
1.2、Jenkins做的事
解释说明去 Gitee仓库拉取源代码自动化构建、打包、部署到云服务器上运行。
二、Docker 实战
2.1 拉取 mysql 镜像
命令如下所示
# 拉取镜像
docker pull mysql:8.0
# 启动命令
docker run -p 3306:3306 --name mysql -v $PWD/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/logs:/logs -v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD000000 -d mysql:8.0
通过远程连接工具测试mysql是否创建成功然后创建数据库导入数据表。
需要在后端的 ruoyi-admin模块的某个配置文件内修改相关配置包括url、端口号、账户、密码。
2.2 拉取 redis 镜像
命令如下所示
# 拉取镜像
docker pull redis2.2.1 配置文件
1创建目录
mkdir -p /docker/redis
mkdir -p /docker/redis/data
touch /docker/redis/redis.conf
touch /docker/redis/redis.bash2编辑配置文件 vim /docker/redis/redis.conf
# Redis默认不是以守护进程的方式运行可以通过该配置项修改使用yes启用守护进程
daemonize no# 指定Redis监听端口默认端口为6379
port 6379# 绑定的主机地址不要绑定容器的本地127.0.0.1地址因为这样就无法在容器外部访问
bind 0.0.0.0#需要密码则打开
requirepass 000000# 持久化
appendonly yes3编辑bash文件 - vi /docker/redis/redis.bash
docker run -p 6379:6379 --name redis -v /docker/redis/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf 4开放执行权限
chmod 777 /docker/redis/redis.bash5修改代码配置文件 需要在后端的 ruoyi-admin模块的某个配置文件内修改相关配置包括url、端口号、账户、密码。
2.3 拉取 jdk 镜像
# 拉取 jdk 镜像
docker pull kdvolder/jdk82前提需要把jar包放在 /root/ruoyi-admin/target目录下可自定义-配合启动命令即可
3编辑bash文件 - vi /docker/ruoyi-admin/ruoyi-admin.bash
docker stop ruoyi-admin;docker rm ruoyi-admin;docker run -d --restartalways -v /root/ruoyi-admin/target:/jar -v /home/ruoyi/logs:/home/ruoyi/logs -p 8080:8080 --name ruoyi-admin kdvolder/jdk8 /usr/bin/java -jar -Duser.timezoneGMT08 /jar/ruoyi-admin.jar4开放执行权限
chmod 777 /docker/ruoyi-admin/ruoyi-admin.bash5执行命令
/docker/ruoyi-admin/ruoyi-admin.bash2.4 拉取 nginx 镜像
# 拉取镜像
docker pull nginx2创建bash文件- vi /docker/ruoyi-ui/ruoyi-ui.bash
cp -rf /root/nginx/* /mydata/nginx/html;docker stop ruoyi-ui;docker rm ruoyi-ui;docker run -d --privilegedtrue --name ruoyi-ui -v /mydata/nginx/html:/usr/share/nginx/html -v /mydata/nginx/nginx.conf:/etc/nginx/nginx.conf -p 80:80 nginx解释为什么要先复制一下文件因为Jenkins那边构建好了传送文件过来就是/root目录下所以本人给它复制到我规定的目录下。
3创建配置文件
worker_processes 1;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 80;server_name localhost;charset utf-8;location / {root /usr/share/nginx/html;try_files $uri $uri/ /index.html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location /50x.html {root html;}}
}解释需要注意 root /usr/share/nginx/html;配置需要对应启动命令里面容器内部存放的实际路径。本人因为设置成外部路径然后通过ip访问遇到500 Internal Server Error的错误。
二、Jenkins 实战
实验环境Windows 安装的 Jenkins 安装包
启动命令在安装包所在目录下java -jar jenkins.war 启动通过端口号访问。具体的使用方法不在此文赘述。
描述本次实验中没有用到流水线通过安装插件后端创建 maven 的项目 前端创建 freeStyle project。
2.1 安装的插件如下所示
Maven Integration plugin 描述主要是后端构建用到 Publish Over SSH 描述推送文件到远程服务器 NodeJS Plugin 描述主要是前端构建需要用到
1安装完Publish Over SSH插件后需要在 Manage Jenkins- Jenkins下面配置远程服务器的信息 2安装完 NodeJS Plugin 以后需要在 Manage Jenkins-Tools 配置 windows实际安装的 node路径即可。(顺便把 Maven 的安装路径也配置一下) 2.2 构建后端
构建一个 maven 项目即可。
2.2.1 填写源码仓库信息 解释第二个框指的是 gitee 上面的仓库地址。
2.2.2 Post Steps设置
1勾选 SSH 设置 2填写包路径配置信息 描述
第一个配置是选择jenkins系统配置的ssh服务器第二个指 后端项目打包后的路径和文件第三个指 远程服务器 执行的命令
3保存以后构建即可。
声明如果构建失败有可能是配置出问题这个需要自己排查了。本文主要记录个大概思路也许会漏掉一些细节导致最后实验失败。
4如果构建成功检查云服务器的docker容器是否启动。浏览器访问路径ip:port即可。
2.3 构建前端
1创建一个 freestyle project 项目。
2配置源码管理如上面后端所示
3构建环境勾选Provide Node npm bin/ folder to PATH需要安装上面的插件才会有这个选项 4Build Steps由于我是windows环境这里需要新增 Execute Windows batch command在方框下输入构建命令 npm install --registryhttps://registry.npmmirror.com npm run build:stage如下图所示
5构建后操作配置ssh服务器以及相关命令 需要新增勾选 Send build artifacts over SSH配置信息如下图所示 解释主要是告诉它构建后的目录是什么需要过滤掉 dist目录以及最后存放在远程服务器的nginx目录下最后发送完文件后执行 bash脚本命令。
6保存后点击Build Now即可。测试路径是IP:Port即可前端一般是默认80端口用ip访问即可。 当很重要的是在前端代码里面需要把ip改成后端实际服务的ip。 提示更改文件是 .env.staging文件的 VUE_APP_BASE_API IP:Port。
总结
整个构建过程大概就是这样。全部完成以后就可以通过jenkins完成一整套的流程了。