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


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

    项目部署的三种方式:

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    启动服务: 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
    
    • 1
    • 2

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

  • 相关阅读:
    Input子系统 - Kernel驱动程序 - Android
    Linux网络编程-网络io与select,poll,epoll
    【C++11】智能指针的使用以及模拟实现(shared_ptr,unique_ptr,auto_ptr,weak_ptr)
    Unity 工具 之 Azure 微软语音合成普通方式和流式获取音频数据的简单整理
    java分布式锁
    什么是Jmeter?Jmeter使用的原理步骤是什么?
    计算机之计算文件占用簇数
    通过rabbitmq生成延时消息,并生成rabbitmq镜像
    【Python办公自动化之Word】
    JAVA计算机毕业设计在线直播平台Mybatis+源码+数据库+lw文档+系统+调试部署
  • 原文地址:https://blog.csdn.net/u011240877/article/details/133556092