全栈开发笔记2:项目部署上线的三种方式

文章目录

  • 最原始的方式
  • 宝塔
  • Docker 部署
  • 其他

本文为编程导航实战项目学习笔记。

项目部署的三种方式:

  1. 最原始方式✅
    1. yum 手动安装 jdk mysql tomcat nginx
    2. 打包前端项目,放到某个目录,修改 nginx 配置
    3. 修改线上的 mysql 配置,打包 jar,放到某个目录,执行
  2. 宝塔✅
    1. 是一个系统
    2. 可以通过软件商店安装环境,更方便
    3. 「网站」里上传前端项目和新建 Java 项目
  3. 容器✅
    1. Dockerfile
      1. 写一次就好,后面可以复制
      2. 前端项目尤其是,就是写好 nginx 配置和拷贝 dist 即可
    2. 镜像的构建和获取:有哪些现成的镜像

最原始的方式

手动安装环境、上传文件、启动服务。

实用命令:

  1. ``find . -name “*nginx*”``
    1. Ngnix 在 ./etc/nginx
  2. ``history`` 可以查看之前输入的命令
  3. netstat -ntlp查看端口使用情况
  4. mv * …/ 把所有文件移动到上一层
  5. 解压
    1. zip 文件:unzip xx
    2. tar 文件:tar -zxvf apache-maven-3.9.4-bin.tar.gz
    3. /root/frontend/user_info/dist
    4. 之前的:/root/frontend/build
  6. nginx -s reload 修改配置文件 (nginx.conf) 后,刷新
  7. 找出使用 80 端口的进程并关闭:fuser -k 80/tcp

在这里插入图片描述

nginx user:

在这里插入图片描述

服务器后端环境配置:

  1. 安装 jdk: yum install java-17-openjdk
    1. yum 安装完环境变量也配置好了
  2. 安装 mysql: curl -o xxx {url}
    1. yum install mysql
    2. yum install mysql-server
    3. yum install mysql-devel
    4. 设置 mysql 开机启动:systemctl enable mysqld
  3. 服务端 mvn 构建:mvn package -DskipTests

在这里插入图片描述

mysql 配置:

  1. 设置密码
    1. mysql -u root -p
    2. mysql -u shixin -p
    3. 8.0 以后:alter user’root’@‘localhost’ identified with mysql_native_password by ‘xxx’ ;
  2. 创建新用户
    1. create user ‘shixin’@‘%’ identified with mysql_native_password by ‘新密码’;
    2. 赋予权限:grant all privileges on *.* to shixin@‘%’ with grant option;
      1. 所有数据库的所有表,给在任意 IP 的 shixin
  3. 重启:systemctl restart mysqld

防火墙开放 3306 端口:

[root@VM-16-15-centos lighthouse]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
FirewallD is not running
[root@VM-16-15-centos lighthouse]# systemctl start firewalld.service
[root@VM-16-15-centos lighthouse]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
[root@VM-16-15-centos lighthouse]# firewall-cmd --reload
success
[root@VM-16-15-centos lighthouse]# firewall-cmd --list-ports
3306/tcp

启动服务: java -jar UserCenter-0.0.3-SNAPSHOT.jar --spring.profiles.active=prod &

& 表示后台运行
文件上传默认上传到:./home/lighthouse

宝塔

通过界面的方式安装环境、上传文件。

用老婆的小号买了一年服务器,用于测试宝塔系统。

  1. 防火墙里放开 8888 端口,设置仅自己的 IP 可以访问
  2. 宝塔报错提示:您的请求在Web服务器中没有找到对应的站点
    1. 清除浏览器缓存,刷新
  3. 部署前端项目好简单:
    1. 网站->添加站点->上传文件,完成!
  4. 升级 JDK 到 17:
    1. https://blog.csdn.net/qq_35760825/article/details/128655513
  5. 如果 8080 访问不了,就去宝塔-安全里「放行」端口

在这里插入图片描述

Docker 部署

容器:把项目的代码和环境一起打包成镜像,后面换机器只要下载镜像、运行即可。

通过配置文件,把依赖的内容和要执行的脚本都写好,到时候只要执行就好了。

Dockerfile:指定构建 Docker 镜像的方法

相关命令:

  1. docker build -t user-center-frontend:v0.0.1 . (最后这个点别漏了) 基于当前文件夹的 Dockerfile 构建一个镜像
  2. docker images 可以查看本地的镜像(包括刚才构建出来的)
  3. 启动
    1. docker run -p 80:80 -d user-center-frontend:v0.0.1
    2. -d 表示后台运行
  4. docker ps 查看正在运行的容器
  5. docker exec -i -t {容器id} /bin/bash 进入某个容器
  6. docker kill (容器 id)
  7. docker logs -f e3afd19b7502 查看某个容器的日志
  8. docker rmi -f hello-world 删除某个镜像
  9. 如何优化
  10. size 和构建时长

在这里插入图片描述
在这里插入图片描述

  1. docker run xxx ,会现在本地找,找不到的话会去远端仓库下载
  2. 执行流程
    1. docker client(客户端)会发送消息给 docker daemon(守护进程)
    2. docker dameon 会去 Docker 仓库拉取需要的镜像;
    3. 然后创建一个新的容器,运行镜像
    4. 最后 daemon 把输出发送给 client,client 把结果发送给你的命令行
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

其他

//获取环境
process.env.NODE_ENV

静态化:umi config.ts 里加 exportStatic,可以给每个路由生成 html 静态文件,这样的好处是在某个页面刷新时不会报错。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/97479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RK3568 适配LVDS屏XW101CM02

代码如下添加参数,只要是使用的是同款屏幕,那就可以直接使用里面所有参数,在相关的DTS文件进行修改 lvds_panel: lvds-panel {status = "okay";compatible = "simple-panel";backlight = <&backlight1>;reset-delay-ms = <20>;enable-d…

Mysql bin-log日志恢复数据与物理备份-xtrabackup

主打一个数据备份与恢复 binlog与xtarbackup bin-log日志恢复开启bin-log配置bin-log日志恢复 物理备份-xtrabackup三种备份方式安装xtrabackup备份全量备份增量备份差异备份 bin-log日志恢复 bin-log 日志&#xff0c;就记录对数据库进行的操作&#xff0c;什么增删改的操作全…

深度学习笔记之优化算法(三)动量法的简单认识

机器学习笔记之优化算法——动量法的简单认识 引言回顾&#xff1a;条件数与随机梯度下降的相应缺陷动量法简单认识动量法的算法过程描述附&#xff1a;动量法示例代码 引言 上一节介绍了随机梯度下降 ( Stochastic Gradient Descent,SGD ) (\text{Stochastic Gradient Descen…

基础算法之——【动态规划之路径问题】1

今天更新动态规划路径问题1&#xff0c;后续会继续更新其他有关动态规划的问题&#xff01;动态规划的路径问题&#xff0c;顾名思义&#xff0c;就是和路径相关的问题。当然&#xff0c;我们是从最简单的找路径开始&#xff01; 动态规划的使用方法&#xff1a; 1.确定状态并…

MySQL SQL性能优化方案(SQL优化 二)

插入数据优化 1. 多个值同时插入&#xff1a;多个值的插入语句可以减少与数据库的通信次数&#xff0c;从而提高插入性能 insert into 表名 (列1, 列2, 列3) values (值1, 值2, 值3), (值4, 值5, 值6), ... 2. 命令批量插入&#xff1a;高效地将数据从文件导入到数据库中&…

vue3+vite+uniapp 封装一个省市区组件

一、预览图 二、使用前的一些注意事项 只支持在 uniapp vue3 项目中使用支持微信小程序和h5 (app端没有测试过)ui库用的 uview-plus省市区数据用的是 vant-ui 提供的一个赖库 vant/area-data 三、组件代码 <template><u-popup :show"show" type"botto…

软件工程与计算总结(二)软件工程的发展

本章开始介绍第二节内容&#xff0c;主要是一些历史性的东西~ 一.软件工程的发展脉络 1.基础环境因素的变化及其对软件工程的推动 抽象软件实体和虚拟计算机都是软件工程的基础环境因素&#xff0c;它们能从根本上影响软件工程的生产能力&#xff0c;而且是软件工程无法反向…

Zabbix 监控系统安装和部署

Zabbix 监控系统安装和部署 一、zabbix 是什么&#xff1f;1.1、zabbix 监控原理&#xff08;重点&#xff09;1.2、Zabbix 6.0 新特性1.3、Zabbix 6.0 功能组件1.4、数据库1.5、Web 界面1.6、Zabbix Agent1.7、Zabbix Proxy1.8、Java Gateway 二、部署Zabbix 6.02.1、 解决 za…

Configuration of phpstudy and sqli-labs

Go download the app&#xff1a; 小皮面板(phpstudy) - 让天下没有难配的服务器环境&#xff01; (xp.cn) Have done. Then enter the program. Enable both functions&#xff1a; Apache and MySQL. Open the website&#xff1a; Next, Lets make the sqli-liab. GitHub…

[论文笔记]GLM

引言 今天带来论文GLM: General Language Model Pretraining with Autoregressive Blank Infilling的笔记。论文中文标题为 通用语言模型预训练与自回归填空。 有很多不同类型的预训练架构,包括自编码模型(BERT、RoBERTa、ALBERT)、自回归模型(GPT系列)以及编码器-解码器模型…

系统架构设计:论文论点目录

目录 系统架构设计&#xff1a;1 论软件系统建模方法及其应用 系统架构设计&#xff1a;2 论软件设计方法及其应用 系统架构设计&#xff1a;3 软件架构建模技术与应用 系统架构设计&#xff1a;4 论微服务架构及其应用 系统架构设计&#xff1a;5 论软件的可靠性设计 系统…

基于MDK-Keil环境如何把STM32程序直接下载到SRAM运行

1. 前言 对于 Cortex-M 内核的微控制器&#xff0c;它们都可以支持在 RAM 中执行程序&#xff0c;有些非 ARM 的微控制器是不支持的。 在内部 SRAM 执行程序&#xff0c;有基于以下几方面的原因&#xff1a; 1、所使用的设备可能具有OTP&#xff08;One-time Programmable&a…

笔记一:odoo透视表和图表

透视表 1、首先在xml文件添加pivot 说明&#xff1a;&#xff08;1&#xff09;根元素pivot中属性&#xff1a; disable_linking&#xff1a;设置为True&#xff0c;删除表格单元格到列表视图的链接 display_quantity&#xff1a;设置为True&#xff0c;默认显示“数量”列 d…

关于IDEA中gradle项目bootrun无法进入断点以及gradle配置页面不全的解决方案

问题背景 在使用gradle编写的bootrun&#xff0c;采用debug方式启动项目时&#xff0c;无法进入断点&#xff0c;程序正常运行 并发现象1 此处无法识别为大象图标 点击右键后&#xff0c;没有圈中的这个选项 并发现象2 图片圈中的位置缺失 问题原因 正常的 run 命令是通过…

SoapUI实践:自动化测试、压力测试、持续集成

因为项目的原因&#xff0c;前段时间研究并使用了 SoapUI 测试工具进行自测开发的 api。下面将研究的成果展示给大家&#xff0c;希望对需要的人有所帮助。 SoapUI 是什么&#xff1f; SoapUI 是一个开源测试工具&#xff0c;通过 soap/http 来检查、调用、实现 Web Service …

[Android] Inent启动参数分析

Android中有哪四种启动模式&#xff1f; **android:launchMode"standard"启动模式 标准模式&#xff0c;**每次启动Activity都会创建一个新的实例&#xff0c;不管此前是否已存在该Activity的实例&#xff0c;Activity默认采用标准模式启动。**android:launchMode&q…

图片加载错误,显示默认图片

方法一&#xff1a;在img标签里&#xff0c;添加onerror事件 <img class"imgcls-err" style"min-height:250px" src"../images/facerule.jpg" onerror"javascript:this.src ../images/facerule.jpg;this.οnerrοrnull" id"…

C++ 常量对象及常量成员函数

#include <stdexcept> #include <iostream>struct Vector2 {float x;float y;// 通过[0]或[1]访问x或y分量float& operator[](int index){switch (index){case 0: return x;case 1: return y;default:throw std::out_of_range("Invalid Vector2 index!&qu…

springboot和vue:十、vue2和vue3的差异+组件间的传值

首先用vue-cli创建一个vue2的项目。 vue2和vue3的差异 main.js的语法有所差别。 vue2是 import Vue from vue import App from ./App.vuenew Vue({render: h > h(App), }).$mount(#app)vue3是 import { createApp } from vue import App from ./App.vuecreateApp(App).…

Flask 进行 Web 开发时,常见的错误

ImportError: No module named ‘flask’ 错误描述&#xff1a; 这个错误表示 Python 找不到 Flask 模块。解决方法&#xff1a; 确保已经正确安装了 Flask 模块。你可以使用以下命令来安装 Flask&#xff1a;pip install flaskAttributeError: ‘module’ object has no attri…