云服务器CentOS前后端部署流程记录

news2025/1/12 15:57:37

部署流程记录

  1. 购买云服务ecs服务器,建立CentOS系统

  2. 通过xftp+xshell访问远程服务

  3. doker部署(https://www.runoob.com/docker/centos-docker-install.html)

  4. docker

    • docker部署环境(mysql)
      1. docker常用命令

        1. docker images 查看镜像
        2. docker rmi xxx 移除镜像
        3. docker ps 查看容器
        4. docker rm -f xxx 强制删除一个容器
        
      2. 使用官方安装脚本自动安装

        curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
        
      3. 启动docker

        sudo systemctl start docker
        
      4. docker安装mySql(记得在云服务器规则开通3306端口号)

        docker pull mysql:8.0.31 拉去mysql对应版本
        docker run -itd --name zMysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.31 启动mysql对应版本
        
      5. 使用navcat连接数据库。假如提示连接不上,有可能是数据库没有放开权限。

  5. 安装jdk环境

    • jdk环境配置
      1. 下载jdk-8u351-linux-x64.tar.gz,地址:https://www.oracle.com/java/technologies/downloads/

      2. 下载包移动到/usr/local中

      3. 进入目录解压

        cd /usr/local
        tar -zxvf jdk-8u171-linux-x64.tar.gz
        
      4. 添加jdk环境变量

        [root@node1 local]# vi /etc/profile
        # 添加jdk环境变量
        export JAVA_HOME=/usr/local/jdk1.8.0_171  #jdk安装目录
        export JRE_HOME=${JAVA_HOME}/jre
        export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
        export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
        export PATH=$PATH:${JAVA_PATH}
        [root@node1 local]# source /etc/profile 立即生效
        
      5. java -version查看配置情况

      6. 启动服务,命令:sh wss.sh start(记得在规则里放开对应的端口号,也可放开所有,一劳永逸)

        • 启动服务(wss.sh文件如下,带*的需要修改)
      7. 通过ip+端口号访问接口

  6. 注册域名

    • 注册域名
      1. 注册一个域名,例如:zylstudy.asia,zylstudy.com等
    • 域名解析
      1. 点击解析

      2. 快速添加解析(类型选A,主机记录www和@,另外添加一个*,则匹配泛型,或者由自己单独添加对应的),需要等待一段时间才能访问

        在这里插入图片描述

        在这里插入图片描述

      3. 通过www.xxx.xxx+端口号访问接口(如果通过域名访问出现302,需要域名备案)

    • 通过域名访问,还需要域名备案
  7. 部署eureka服务

    • eureka服务中心注册(服务端)

      1. 导入库

        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        
      2. yml文件

        server:
          port: 28761
        
        eureka:
          instance:
            hostname: oil_eureka_server
          client:
            allow-redirects: false # 不将自己注册到eureka上
            fetch-registry: false # 不从eureka获取服务信息
            service-url:
              defaultZone: http://localhost:28761/eureka/
        
      3. Application中加注解

        @EnableEurekaServer
        
    • eureka提供服务端注入(我这边注入两个服务)

      1. 导入库

        <dependency>
        	<groupId>org.springframework.cloud</groupId>
        	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        
      2. yml文件配置

        server:
          port: 第一个28081/第二个28082
        
        eureka:
          instance:
            prefer-ip-address: true # 注册服务使用IP到eureka上
          client:
            service-url:
              defaultZone: http://localhost:28761/eureka/
        
        spring:
          application:
            name: 第一个oil-base-api/第二个oil-base-service
        
    • eureka服务发现,请求eureka中服务

      1. 导入库

        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        
      2. yml文件配置

        server:
          port: 55169
        
        eureka:
          instance:
            prefer-ip-address: true # 注册服务使用IP到eureka上
          client:
            service-url:
              defaultZone: http://localhost:28761/eureka/
        
      3. Application中加注解

        // 开启发现服务功能
        @EnableDiscoveryClient
        
    • 访问eureka地址

      1. 通过ip+端口号访问eureka服务,看注册情况

        在这里插入图片描述

      2. 如何访问eureka上的服务,通过Appliation名称可以访问,但是只能在项目里面访问,postman貌似访问不了。项目内部通过RestTemplate访问

        restTemplate.getForObject("http://OIL-BASE-API/api/test", String.class)
        
  8. gateway配置

    • 导入依赖

      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
      </dependency>
      
    • yml中的配置

      server:
        port: 55169
      
      eureka:
        instance:
          prefer-ip-address: true # 注册服务使用IP到eureka上
        client:
          service-url:
            defaultZone: http://localhost:28761/eureka/
      
      spring:
        application:
          name: oil-gateway
        cloud:
          gateway:
            default-filters:
            discovery:
              locator:
                lowerCaseServiceId: true
                enabled: true
            routes:
              - id: oil-base-api # 基础后端接口api
                uri: lb://oil-base-api # eureka服务name
                predicates:
                  - Path=/back/api/**  #不可以有空格
                filters:
                  - StripPrefix=2  #转发到具体服务
      
              - id: oil-base-service # 和基站对接服务
                uri: lb://oil-base-service # eureka服务name
                predicates:
                  - Path=/back/service/**  #不可以有空格
                filters:
                  - StripPrefix=2  #转发到具体服务
      
    • 访问eureka地址

      在这里插入图片描述

    • 通过接口访问

      在gateway中,通过接口测试

      @RestController
      public class GatewayController {
      
          @Autowired
          RestTemplate restTemplate;
      
          @GetMapping("/api/test")
          public String getInfoEurekaApi() {
              return restTemplate.getForObject("http://OIL-BASE-API/api/test", String.class);
          }
      
          @GetMapping("/service/test")
          public String getInfoEurekaService() {
              return restTemplate.getForObject("http://OIL-BASE-SERVICE/test", String.class);
          }
      
      }
      
  9. 配置nginx,反向代理,隐藏真是的ip地址和端口号

    • nginx

      Nginx反向代理

      • 代理服务

        在这里插入图片描述

      • 负载均衡

        在这里插入图片描述

      • 动静分离

        在这里插入图片描述

      访问过程

      在这里插入图片描述

    • 安装nginx,https://blog.csdn.net/t8116189520/article/details/81909574

      • 需要这些(通过下面命令下载)
        1. ssl功能需要 openssl 库
        2. gzip模块需要 zlib 库
        3. rewrite模块需要 pcre 库
        4. nginx的安装配置
      1. 安装依赖

        //一键安装上面四个依赖
        yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
        
      2. 下载并解压安装包

        cd /usr/local
        //创建一个文件夹
        mkdir nginx
        cd nginx
        //下载tar包
        wget http://nginx.org/download/nginx-1.13.7.tar.gz
        tar -xvf nginx-1.13.7.tar.gz
        
      3. 安装nginx

        //进入nginx目录
        cd /usr/local/nginx
        //进入目录
        cd nginx-1.13.7
        //执行命令 考虑到后续安装ssl证书 添加两个模块
        ./configure --with-http_stub_status_module --with-http_ssl_module
        //执行make命令
        make
        //执行make install命令
        make install
        
      4. 启动服务并查看状态(要在sbin目录下)

        [root@VM-4-2-centos sbin]# ./nginx 
        [root@VM-4-2-centos sbin]# ./nginx -t
        nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
        nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
        
      5. 修改配置nginx.conf

      6. 重启nginx

        [root@VM-4-2-centos sbin]# ./nginx -s reload
        
      7. 查看nginx进程是否启动

        ps -ef | grep nginx
        
      8. ip访问

        在这里插入图片描述

    • 配置项目nginx,修改nginx.conf

      1. 找到conf

      在这里插入图片描述

      1. 修改conf目录下nginx.conf文件
        1. 可以直接在nginx.conf中修改

        2. 可以新建一个文件夹,便于多项目的单独配置

          1. 在nginx.conf中最后加一句,指向另外一个文件夹

            include /usr/local/nginx/conf/conf.d/*.conf;
            
           ![在这里插入图片描述](https://img-blog.csdnimg.cn/6d4a7fc4c95c41af90bb19d64637d19b.png#pic_center)
          
          ![在这里插入图片描述](https://img-blog.csdnimg.cn/a6c048523a6244a2938b5a96328cb2fd.png#pic_center)
          
           
           内容大概如下:
           
           ```java
           server {
             listen       80;
             server_name  oil.zylstudy.asia;
           	
           	# 配置前端一些文件
           	# gzip config
           	gzip on;
           	gzip_min_length 1k;
           	gzip_comp_level 9;
           	gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
           	gzip_vary on;
           	gzip_disable "MSIE [1-6]\.";
           	# 配置前端路径
           	root /home/oilrig/font/back/dist;	
           	
           	# 用于配合 browserHistory使用
             location / {
           		try_files $uri $uri/ /index.html;
              }
           	# index        index.html;
             error_page   500 502 503 504  /50x.html;
             location = /50x.html {
               root   html;
             }
           	location = /favicon.ico {
            	 	log_not_found off;
           	}	
             location /back/api {
               proxy_pass  http://127.0.0.1:55169;   
               proxy_set_header   X-Forwarded-Proto $scheme;
               proxy_set_header   X-Real-IP         $remote_addr;
             }        
            }
           ```
          
          1. 重启nginx(上传了新的前端的dist包,需要重启nginx)

            [root@VM-4-2-centos sbin]# ./nginx -s reload
            
    • 通过域名访问

      http://oil.zylstudy.asia/service/test(显示302,提示需要域名备案)

  10. 前端打包

    • 前端测试,proxy修改

    • 打包(package.json)

      build
      

      生成dist文件,放到跟nginx里面目录对应位置

      在这里插入图片描述

      # 配置前端路径
      root /home/oilrig/font/back/dist;	
      

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

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

相关文章

【Linux】进程状态与优先级

文章目录进程状态概念Linux中的进程状态R(running)状态S(sleeping)状态D(disk sleep)状态T(stopped)状态t(tracing stop)状态X(dead)状态Z(zombie)状态特殊的孤儿进程进程优先级进程性质补充进程状态概念 《现代操作系统》中给出的进程状态的定义如下&#xff1a; 进程状态反映…

Qt+C++窗体界面中英文多语言切换

程序示例精选 QtC窗体界面中英文语言切换 如需安装运行环境或远程调试&#xff0c;见文章底部个人微信名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC窗体界面中英文语言切换>>编写代码&#xff0c;代码整洁&#xff0c;规则&#x…

【Linux】软件包管理器 yum

目录 一、什么是软件包 二、如何进行软件安装 1、yum 的使用 2、yum 配置 一、什么是软件包 在Linux下安装软件&#xff0c;一个通常的办法是下载到程序的源代码&#xff0c;并进行编译&#xff0c;得到可执行程序。但是这样太麻烦了&#xff0c;于是有些人把一些常用的软…

InnoDB数据存储结构

InnoDB数据存储结构 本专栏学习内容来自尚硅谷宋红康老师的视频 有兴趣的小伙伴可以点击视频地址观看 1. 数据库的存储结构&#xff1a;页 索引结构给我们提供了高效的索引方式&#xff0c;不过索引信息以及数据记录都是保存在文件上的&#xff0c;确切来说是存储在页结构中。…

不讨论颜色的前提下,如何证明自己不是色盲?神奇的零知识证明

0x01 一个小故事 《阿里巴巴与四十大盗》中有这样一段小故事&#xff1a; 阿里巴巴会芝麻开门的咒语&#xff0c;强盗向他拷问打开山洞石门的咒语&#xff0c;他不想让人听到咒语&#xff0c;又要向强盗证明他知道这个咒语。 那应该怎么办呢&#xff1f; 便对强盗说&#xf…

基于KVM安装部署RHCOS操作系统

参考&#xff1a;Openshift 4.4 静态 IP 离线安装系列&#xff1a;初始安装 - 米开朗基杨 - 博客园 一、Openshift OCP集群安装架构示意图 RHCOS 的默认用户是 core 如果安装有问题会进入 emergency shell&#xff0c;检查网络、域名解析是否正常&#xff0c;如果正常一般是以…

重修JAVA

程序员的差距是在构思上&#xff1a;思想决定了深度&#xff0c;思想的精髓高深是很多人学不来的&#xff01; 每一门语言都有它的特点&#xff0c;有优势也有劣势&#xff0c; 所以不必拘泥于招式&#xff0c;掌握底层原理即可&#xff01; 每一们语言实际上都是一个“工具”&…

如何在您的香港主机帐户上注册多个域名

注册多个域名非常普遍。事实上&#xff0c;香港主机服务提供商鼓励这样做&#xff0c;因为它既有意义又是必要的。下面将介绍决定为什么您可能需要在香港主机上注册多个域名的几个因素。注册多个域名的原因是什么?方便多个项目如果香港主机帐户的所有者在网络上有多个不同域名…

优化vue项目后, 启动编译项目过程中 报 javaScript heap out of memory 错误 及 nodejs内存溢出

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 1、优化vue项目后&#xff0c;运行npm run serve 启动编译项目过程中 报 javaScript heap out of memory 错误 2、项目启动时&#xff0c;出现 nodejs 内存溢出错误 问题描述 提示&#xff1a;遇到…

分布式事务的背景和解决方案

在常用的关系型数据库&#xff0c;都是具备事务特性的。 那什么是事务呢&#xff1f;事务是数据库运行的一个逻辑工作单元&#xff0c;在这个工作单元内的一系列SQL命令具有原子性操作的特点&#xff0c;也就是说这一系列SQL指令要么全部执行成功&#xff0c;要么全部回滚不执…

经典算法之深度优先搜索(DFS)

&#x1f451;专栏内容&#xff1a;算法学习笔记⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;日拱一卒&#xff0c;功不唐捐。 目录一、前言二、基本概念1.简单介绍2. 官方概念三、动图分析四、模板框架五、例题分析组合问题题干描述&#xff1a;思路…

leetcode146. LRU 缓存【python3哈希表+双向链表】利用OrderedDict以及自实现双向链表

题目&#xff1a; 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。实现LRUCache类&#xff1a; LRUCache(int capacity) 以正整数作为容量capacity初始化 LRU 缓存int get(int key) 如果关键字key存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则…

【论文速递】9位院士Science88页长文:人工智能的进展、挑战与未来

【论文速递】9位院士Science88页长文&#xff1a;人工智能的进展、挑战与未来 【论文原文】&#xff1a;Intelligent Computing: The Latest Advances, Challenges and Future 获取地址&#xff1a;https://spj.science.org/doi/10.34133/icomputing.0006摘要&#xff1a; ​…

【阶段三】Python机器学习15篇:机器学习项目实战:支持向量机回归模型

本篇的思维导图: 项目实战(支持向量机回归模型) 项目背景 股票投资(Stock Investment)是指企业或个人用积累起来的货币购买股票,借以获得收益的行为。股票投资的收益是由“收入收益”和“资本利得”两部分构成的。收入收益是指股票投资者以股东身份,按照持股的份…

大网规划部署刷题讲解(带答案)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.大网规划刷题 前言 本章将会讲解大网规划刷题的讲解。 一.大网规划刷题 …

ArcGIS基础实验操作100例--实验85创建线要素间的最近垂线

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验85 创建线要素间的最近垂线 目录 一、实验背景 二、实验数据 三、实验步骤 &#xf…

【一文速通】数据分布不同解决办法

1. 构造合适的验证集当出现训练集和测试集分布不一致的&#xff0c;我们可以试图去构建跟测试集分布近似相同的验证集&#xff0c;保证线下验证跟线上测试分数不会抖动&#xff0c;这样我们就能得到稳定的benchmark。Qiuyan918在基于对抗验证的基础上&#xff0c;提出了三种构造…

为什么流媒体直播的延迟很高

通信技术的发展促进了视频点播和直播业务的兴起&#xff0c;4G 和 5G 网络技术的进步也使得流媒体技术变得越来越重要&#xff0c;但是网络技术并不能解决流媒体直播的高延迟问题&#xff0c;本文不会介绍网络对直播业务的影响&#xff0c;而是会分析直播中常见的现象 — 主播和…

Spring(1):拦截器

1 拦截器 拦截器是Spring中的概念&#xff0c;和过滤器类似&#xff0c;可以对用户请求进行拦截过滤处理。但是相对于过滤器而言&#xff0c;拦截器要的控制更加的细节&#xff0c;拦截器可以在三个地方进行执行&#xff1a; 可以在请求达到Controller控制器之前&#xff0c;…

VirtualBox 客户机/虚拟机无法时间同步?可能是你安装客户机插件的方式不对!

文章目录安装客户机插件的正确方式准备工作安装过程用户手册中的“客户机插件”安装客户机插件的正确方式 准备工作 所需包如下&#xff1a; GNU compiler (GCC)GNU Make (make)Kernel header fileslib* files 笔者亲测使用的 CentOS 7 Linux 内核版本为 3.10.0-1160.81.1.…