微服务原生部署有那么难吗?一篇文章带你搞定

简介: 微服务原生部署有那么难吗?一篇文章带你搞定

一、前言


本教程适用于各种语言的微服务部署!

这个星期突然需要使用某个环境做测试联调。慌里慌张地搞了一个晚上把nginx下载好了,配置好了,项目终于可以跑起来了。

我付出了惨痛的教训,因为网上存在的微服务部署不多,唯一一篇还是通过docker部署的,来自鱼皮的文章!

还不会部署微服务项目?保姆级教程来啦!

但是这篇文章缺少nginx的安装与配置,它是决定你项目是否可以跑起来的关键!

而公司负责的项目还是最原始的方式,~~>_<~~!

整个原始的方式部署微服务主要和nginx的配置和安装有关系。

它决定了你的项目是否可以成功运行起来!

所以这篇文章主要讲解下nginx的安装以及如何配置,让你的项目前端和后端都能跑起来。

首先,所谓的中间件安装,挺简单的。

目前中间件的安装,有两种安装方式,一种原生安装,需要许多配置,一种傻瓜式安装,直接采用docker安装。

二、中间件安装

1. 纯原生安装中间件

这里就不再展示了,有需要可以看我的历史推文(是纯原生安装!)

点击下方链接直达!里面有各种中间件 的原生安装方式,基本涵盖了企业所需要的所有中间件!

Linux-那些中间件的安装

大家dddd,中间件国产的不多,所以下载得靠一点科学手段,所以我准备好了百度网盘方式!

具体关注我的绿色气泡“南城余”,消息框回复“666”即可!

2. docker安装中间件

首先你的服务器需要有docker!但是放心,我已经给你准备好了,复制粘贴下面命令到你的服务器既可!

这里仅展示下docker的安装方法!其他docker学习,以及各种中间件通过docker安装的方法可以参考下面链接:

https://b11et3un53m.feishu.cn/wiki/MWQIw4Zvhil0I5ktPHwcoqZdnec?from=from_copylink

sudo yum install -y yum-utils
 
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
 
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
 
sudo systemctl enable docker --now
 
#测试工作
docker ps
#  批量安装所有软件
docker compose  
 
#移除docker现存镜像
cd /root
docker compose down


前端包和后端各种服务jar包上传

这一步是上传项目所需要的前端包和后端各种服务jar包,然后使后端各种微服务跑起来即可!

这里我推荐一款国产的shell工具— finalshell

可以监控服务器状态和方便快捷的文件上传方式!

主要是国产免费哦!

finalshell官网下载链接

FinalShell官网

nohup java -jar xxx.jar > /app/admin/output-admin.log 2>&1 &
 
#项目是否启动成功可以看上面命令输出的log日志文件
#这里指定了/app/admin/output-admin.log
#所以可以用cat查看 具体的看你们自己项目的log日志保存位置
cat /app/admin/output-admin.log


下面到了核心nginx的安装与配置,它是决定你项目是否可以跑起来的关键!

三、nginx安装与配置

1. nginx的安装

可以参考下面的链接:

Linux 安装 Nginx 并配置为系统服务(超详细)-CSDN博客

当然了,nginx也属于一种中间件,具体安装也可以靠docker安装,上面是原生的方式!

小tips:

这篇文章需要注意的是在设置nginx为系统服务时,主要利用/usr/local/nginx/sbin/nginx -s stop

将原来的启动方式停止。

然后再用systemctl start nginx启动nginx

#查看网站的nginx版本
curl -I ccxxxxx #服务器ip
    
HTTP/1.1 200 OK
Server: nginx/1.24.0
Date: Tue, 12 Dec 2023 11:49:55 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Tue, 12 Dec 2023 11:35:01 GMT
Connection: keep-alive
ETag: "65784565-267"
Accept-Ranges: bytes
 
 
#nginx采用上述默认安装方式的默认安装路径
cd /usr/local/nginx
 
#配置文件是否有误
/usr/local/nginx/sbin/nginx -t
#重新加载配置文件,使其生效
/usr/local/nginx/sbin/nginx -s reload
2. nginx的配置

决定你微服务是否可以成功运行的关键配置!

具体可以见下方配置文件内容哦!

可以根据指引更改为自己项目的具体信息!不要直接套用!

#这个配置文件没有域名哦!具体配置是靠ip加端口!
 
#user  nobody;
worker_processes  auto;
 
error_log  logs/error.log  warn;
pid        logs/nginx.pid;
 
 
events {
    use epoll;
    worker_connections  1024;
}
 
 
http {
    include       mime.types;
    default_type  application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  logs/access.log  main;
 
    sendfile        on;
    keepalive_timeout  70;
    gzip  on;
#proxy_buffer_size  256k;
#proxy_buffers   32 32k;
#proxy_busy_buffers_size 256k;
#proxy_temp_file_write_size  1024k;
#client_max_body_size 500M;
 
 
    server {
        listen       80 default_server;
        server_name  localhost;
        client_max_body_size 100M;
        location / {
                 root       /app/admin-ui/dist/;
                 try_files $uri $uri/ /index.html;
                 index  index.html index.htm;
        }
        location /sever1/ {
                 add_header 'Access-Control-Allow-Origin' *;
                 add_header 'Access-Control-Allow-Credentials' 'true';
                 add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';
      #这里需要通过配置文件设置跨域,要不然可能项目在前端会报错
      #但是网上有在后端或者前端做跨域的方式,具体看项目
      #不过,我还是建议nginx的配置文件也做一个处理
                 proxy_pass http://localhost:8081/; #这里的端口具体还是看你项目jar包运行成功后占用的端口
       proxy_buffer_size 128k;
           proxy_buffers   32 128k;
     proxy_busy_buffers_size 128k;
  
                 proxy_set_header   X-Real-IP         $remote_addr;
                 proxy_set_header   Host              $http_host;
                 proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
                 proxy_read_timeout 600;
        }
    
  location /server2/ {
                 add_header 'Access-Control-Allow-Origin' *;
                 add_header 'Access-Control-Allow-Credentials' 'true';
                 add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';
                 proxy_pass http://localhost:8012/;
      
                 proxy_set_header   X-Real-IP         $remote_addr;
                 proxy_set_header   Host              $http_host;
                 proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
                 proxy_read_timeout 600;
        }
  
    }
 
}

最后的最后,配置完之后,记得重载nginx配置文件,使其生效哦!

#配置文件是否有误
/usr/local/nginx/sbin/nginx -t
#重新加载配置文件,使其生效
/usr/local/nginx/sbin/nginx -s reload
目录
相关文章
|
1月前
|
存储 关系型数据库 MySQL
【分布式和微服务1】一篇文章详细了解分布式和微服务的基本概念
【分布式和微服务1】一篇文章详细了解分布式和微服务的基本概念
238 0
|
1月前
|
Java Docker 微服务
如何使用Docker和Docker Compose部署微服务
【2月更文挑战第12天】
446 0
|
30天前
|
Kubernetes 开发工具 Docker
微服务实践k8s与dapr开发部署实验(2)状态管理
微服务实践k8s与dapr开发部署实验(2)状态管理
63 3
微服务实践k8s与dapr开发部署实验(2)状态管理
|
1天前
|
Kubernetes Java Docker
使用Kubernetes和Docker部署Java微服务
使用Kubernetes和Docker部署Java微服务
|
22天前
|
Kubernetes 监控 负载均衡
Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?
本文介绍了服务网格(Service Mesh)的概念及其在微服务架构中的重要性。微服务强调围绕业务构建团队和去中心化的数据管理,带来更高的灵活性和扩展性。然而,随着服务数量增加,网络通信成为挑战,包括服务发现、路由和安全等问题。 Service Mesh如Istio应运而生,通过边车代理解决服务间通信,提供服务发现、负载均衡、智能路由、安全和监控等功能。它与Kubernetes结合,增强了容器环境的服务管理能力。Istio的bookinfo示例展示了其在多语言微服务中的应用,简化了代码中的服务调用逻辑,使开发更专注于业务本身。
162 3
Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?
|
17天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的微服务的车联网位置信息管理附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的微服务的车联网位置信息管理附带文章源码部署视频讲解等
19 1
|
1月前
|
运维 监控 Docker
使用Docker进行微服务架构的部署
【5月更文挑战第18天】本文探讨了如何使用Docker进行微服务架构部署,介绍了Docker的基本概念,如容器化平台和核心组件,以及它与微服务的关系。通过Docker,每个微服务可独立运行在容器中,便于构建、测试和部署。文章详细阐述了使用Docker部署微服务的步骤,包括定义服务、编写Dockerfile、构建镜像、运行容器、配置服务通信、监控和日志管理以及扩展和更新。Docker为微服务提供了可移植、可扩展的解决方案,是现代微服务架构的理想选择。
|
1月前
|
Kubernetes Docker 微服务
微服务实践k8s&dapr开发部署实验(3)订阅发布
微服务实践k8s&dapr开发部署实验(3)订阅发布
50 0
|
1月前
|
Linux Nacos 数据库
【微服务】生产部署nacos集群(三个节点)
【微服务】生产部署nacos集群(三个节点)
59 1
|
1月前
|
弹性计算 监控 Cloud Native
云原生最佳实践系列 4:基于 MSE 和 SAE 的微服务部署与压测
通过MSE(微服务引擎)、SAE(Serverless应用引擎)、ARMS(应用监控服务)、PTS(性能测试服务)等产品,实现微服务的无服务化部署、监控和弹性伸缩。