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

Posted llayjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云服务器CentOS前后端部署流程记录相关的知识,希望对你有一定的参考价值。

部署流程记录

  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;	
      

以上是关于云服务器CentOS前后端部署流程记录的主要内容,如果未能解决你的问题,请参考以下文章

阿里云(win server)部署前后端分离项目(springboot + vue + android)

阿里云(win server)部署前后端分离项目(springboot + vue + android)

阿里云(win server)部署前后端分离项目(springboot + vue + android)

CentOS7/8系统下,使用Jenkins实现SpringBoot+Vue前后端分离项目持续集成,一键编译打包跨设备部署,完整详细教学演示

CentOS7/8系统下,使用Jenkins实现SpringBoot+Vue前后端分离项目持续集成,一键编译打包跨设备部署,完整详细教学演示

CentOS7/8系统下,使用Jenkins实现SpringBoot+Vue前后端分离项目持续集成,一键编译打包跨设备部署,完整详细教学演示