您的位置:首页 > 科技 > IT业 > 住建局网站官网_辽宁省人民政府发展研究中心_百度推广有效果吗?_怎么创建网站?

住建局网站官网_辽宁省人民政府发展研究中心_百度推广有效果吗?_怎么创建网站?

2025/4/2 5:31:36 来源:https://blog.csdn.net/weixin_43025151/article/details/146435685  浏览:    关键词:住建局网站官网_辽宁省人民政府发展研究中心_百度推广有效果吗?_怎么创建网站?
住建局网站官网_辽宁省人民政府发展研究中心_百度推广有效果吗?_怎么创建网站?

文章目录

    • 1. 安装 Ansible
    • 2. 创建 Ansible Playbook
    • 3. MySQL 自动化部署
    • 4. Redis 自动化部署
    • 5. Spring Boot 后端部署
    • 6. Vue 前端部署
    • 7. Nginx 配置
    • 8. 运行 Ansible Playbook
    • 9. 验证部署
    • 10. 总结

本教程使用 Ansible 实现全栈应用的自动化部署,包括:

  • 后端:Spring Boot(运行在 Tomcat 或 jar 方式)
  • 数据库:MySQL
  • 缓存:Redis
  • 前端:Vue.js(部署在 Nginx)
  • 代理:Nginx(反向代理 Vue 和 Spring Boot)

1. 安装 Ansible

在 Ansible 控制节点(本地机器或 CI/CD 服务器)上安装:(本文以Centos为例)

# CentOS/RHEL
sudo yum install epel-release --allowerasing -y
sudo yum install ansible -y

确保 Ansible 已正确安装,先检查 Ansible 是否安装:

rpm -qa | grep ansible

在这里插入图片描述

如果没有输出,说明 ansible 没有安装,请执行以下命令安装它。

检查 ansible 是否在 PATH 里,如果安装了 ansible,但仍然提示 command not found,执行:

which ansible

在这里插入图片描述

如果没有输出,可能 PATH 没有包含 ansible,可以尝试:

export PATH=$PATH:/usr/local/bin:/usr/bin:/usr/sbin
source ~/.bashrc

然后再尝试:

ansible --version

配置 Ansible Hosts
编辑 /etc/ansible/hosts 添加你的目标服务器:

vim /etc/ansible/hosts[web]
47.92.101.102 ansible_user=root ansible_ssh_private_key_file=~/.ssh/id_rsa

测试连接:

ansible all -m ping

2. 创建 Ansible Playbook

创建 目录结构:

mkdir -p ansible-playbook/{roles/{mysql,redis,springboot,vue,nginx}/tasks,vars,files,templates}
cd ansible-playbook

3. MySQL 自动化部署

MySQL 任务文件(roles/mysql/tasks/main.yml)

- name: 安装 MySQLapt:name: mysql-serverstate: presentbecome: yes- name: 启动 MySQL 并开机自启service:name: mysqlstate: startedenabled: yes- name: 创建数据库mysql_db:name: myappdbstate: present- name: 创建 MySQL 用户mysql_user:name: myappuserpassword: mypasswordpriv: 'myappdb.*:ALL'state: present

4. Redis 自动化部署

Redis 任务文件(roles/redis/tasks/main.yml)

- name: 安装 Redisapt:name: redis-serverstate: presentbecome: yes- name: 启动 Redis 并开机自启service:name: redis-serverstate: startedenabled: yes

5. Spring Boot 后端部署

Spring Boot 任务文件(roles/springboot/tasks/main.yml)
yaml
复制
编辑

- name: 复制 Spring Boot JARcopy:src: files/myapp.jardest: /opt/myapp.jarowner: rootgroup: rootmode: '0755'- name: 配置 Spring Boot Systemd 服务template:src: templates/myapp.service.j2dest: /etc/systemd/system/myapp.service- name: 重新加载 Systemd 并启动服务systemd:name: myappstate: startedenabled: yesdaemon_reload: yes

Systemd 服务模板(roles/springboot/templates/myapp.service.j2)

Description=Spring Boot Web App
After=network.target[Service]
User=root
WorkingDirectory=/opt
ExecStart=/usr/bin/java -jar /opt/myapp.jar
SuccessExitStatus=143
Restart=always
RestartSec=5[Install]
WantedBy=multi-user.target

6. Vue 前端部署

Vue 任务文件(roles/vue/tasks/main.yml)

- name: 安装 Nginxapt:name: nginxstate: presentbecome: yes- name: 复制 Vue 项目文件copy:src: files/dist/dest: /var/www/html/owner: www-datagroup: www-datamode: '0755'

7. Nginx 配置

Nginx 任务文件(roles/nginx/tasks/main.yml)
yaml
复制
编辑

- name: 复制 Nginx 配置文件template:src: templates/nginx.conf.j2dest: /etc/nginx/sites-available/default- name: 重启 Nginxservice:name: nginxstate: restarted

Nginx 配置模板(roles/nginx/templates/nginx.conf.j2)
nginx

server {listen 80;server_name myapp.com;location / {root /var/www/html;index index.html;try_files $uri $uri/ /index.html;}location /api/ {proxy_pass http://127.0.0.1:8080/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

8. 运行 Ansible Playbook

创建 主 Playbook 文件(site.yml):

yaml
复制
编辑

- hosts: webbecome: yesroles:- mysql- redis- springboot- vue- nginx

执行 Ansible Playbook

ansible-playbook site.yml

9. 验证部署

📌 检查各个服务状态

# 检查 MySQL
systemctl status mysql# 检查 Redis
systemctl status redis-server# 检查 Spring Boot 应用
systemctl status myapp# 检查 Nginx
systemctl status nginx

📌 访问 Web 应用

  • 前端:http://服务器IP/
  • 后端 API:http://服务器IP/api/

10. 总结

✅ 自动化部署:MySQL、Redis、Spring Boot、Vue、Nginx
✅ 可扩展:支持多服务器部署
✅ 持续集成:可与 Jenkins、GitLab CI 结合
✅ 一键部署:ansible-playbook site.yml 即可完成部署

🎯 这样就实现了 全栈 SpringBoot Web 应用的自动化部署!

在这里插入图片描述


一个人可以走的很快,但一群人才能走的更远


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com