阿里云部署SpringCloud微服务过程记录

1447 篇文章 12 订阅
1447 篇文章 7 订阅

目录

服务器信息:CentOS Linux release 7.4.1708 (cat /etc/redhat-release查看版本)

安装Nginx

安装基础依赖

PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库

yum install -y pcre pcre-devel

zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

yum install -y zlib zlib-devel

gccopenssl也是必须的,如果已安装可忽略

yum install gcc-c++
yum install -y openssl openssl-devel

下载nginx并编译安装

配置环境变量

按照如上步骤安装完nginx后,会生成/usr/local/nginx 目录
在/etc/profile文件末尾追加如下信息使其永久性生效,并对所有系统用户生效

NGINX_HOME=/usr/local/nginx/
PATH=$PATH:$NGINX_HOME/sbin
export PATH

执行如下命令使环境变量生效

source /etc/profile

配置开机启动

开机启动配置方法

  • vi /etc/rc.local
    在此文件末尾另起一行追加 /usr/local/nginx/sbin/nginx
    chmod 755 rc.local #设置文件可执行权限

nginx常用命令

nginx -s reload #修改配置后重新加载生效
nginx -s reopen #重新打开日志文件
nginx -t -c /path/to/nginx.conf #测试nginx配置文件是否正确

关闭nginx相关

nginx -s stop #快速停止nginx
nginx quit #完整有序的停止nginx

启动nginx

nginx -c /usr/local/nginx/conf/nginx.conf

Nginx配置微服务网关

实现目标:通过访问指定域名来访问SpringCloud微服务的网关服务来实现对整个项目入口的分发。预备信息如下

二级域名:qbmall.hdlxdl.site
转发端口:8504
域名解析:[阿里云](https://l.gushuji.site/aliyun)
网关技术:zuul

配置二级域名的解析

通过阿里云服务域名-域名解析功能添加域名解析如下图所示,记录值填写自己服务的ip地址。目标是通过配置的主机记录来访问我们的微服务的8504端口指定的网关服务

在这里插入图片描述

配置nginx实现端口转发

添加如下配置,大图的意思就是所有访问qbmall.hdlxdl.site地址的请求全部转发到127.0.0.1:8504端口服务上,而8504端口对应的服务就是我们下面要部署的网关的服务

http{
   upstream qbmall_pool{
        server 127.0.0.1:8504;
    }
   server{
     server {
        listen       80;
        server_name  qbmall.hdlxdl.site;
        access_log logs/qbmall.log;
        error_log logs/qbmall.error;
        #将所有请求转发给demo_pool池的应用处理
        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://qbmall_pool;
        }
  `   }
    }
}

启动微服务

我们这里部署的服务有如下几个 ,希望达到的效果是通过访问网关服务分发到测试业务服务

配置中心服务: config-1.0-SNAPSHOT.jar 端口:8501
注册中心服务: eureka-0.0.1-SNAPSHOT.jar 端口:8502
网关服务:getway-1.0-SNAPSHOT.jar 端口: 8504
测试业务服务:admin-1.0-SNAPSHOT.jar端口:8503

依次启动服务java -jar 启动服务,但是这样有个问题就是随着终端的关闭 服务也跟着关闭。

java -jar config-1.0-SNAPSHOT.jar

使用nohup让服务在后台运行

nohup java -jar config-1.0-SNAPSHOT.jar > log.file 2>&1 &
0 标准输入(一般是键盘)
1 标准输出(一般是显示屏,是用户终端控制台)
2 标准错误(错误信息输出)

查看端口运行情况

netstat -tunpl |grep 8501
在这里插入图片描述

关闭进程

kill -9 8756 #关闭进程同时也就关闭了服务

常用微服务脚本
把如下shell脚本文件,保存为相应的名称这里作者保存为qbmall.sh,并放置在/user/local/sh目录下
然后我们就可以使用/user/local/sh/qbmall.sh start 对应的微服务jar路径即可来启动微服务。
当然这里支持start stop restart status 来启动,关闭,重启,查看状态

#!/bin/bash

SpringBoot=$2

if [ "$1" = "" ];
then
    echo -e "\033[0;31m 未输入操作名 \033[0m  \033[0;34m {start|stop|restart|status} \033[0m"
    exit 1
fi

if [ "$SpringBoot" = "" ];
then
    echo -e "\033[0;31m 未输入应用名 \033[0m"
    exit 1
fi

function start()
{
    count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`
    if [ $count != 0 ];then
        echo "$SpringBoot is running..."
    else
        echo "Start $SpringBoot success..."
        nohup java -Xms256m -Xmx512m -jar  $SpringBoot > /dev/null 2>&1 &
    fi
}

function stop()
{
    echo "Stop $SpringBoot"
    boot_id=`ps -ef |grep java|grep $SpringBoot|grep -v grep|awk '{print $2}'`
    count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`

    if [ $count != 0 ];then
        kill $boot_id
        count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`

        boot_id=`ps -ef |grep java|grep $SpringBoot|grep -v grep|awk '{print $2}'`
        kill -9 $boot_id
    fi
}

function restart()
{
    stop
    sleep 2
    start
}

function status()
{
    count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`
    if [ $count != 0 ];then
        echo "$SpringBoot is running..."
    else
        echo "$SpringBoot is not running..."
    fi
}

case $1 in
    start)
    start;;
    stop)
    stop;;
    restart)
    restart;;
    status)
    status;;
    *)

    echo -e "error $0  {start|stop|restart|status}  {SpringBootJarName}"
esac

测试

因为我们的网关服务配置了所有admin的请求,都会路由到admin服务上如下所示
在这里插入图片描述
所以,如果访问网关服务并且追加admin服务的接口请求,能正常访问就算部署成功。

已知admin服务有如下Controller类
在这里插入图片描述

那么通过以上启动服务后,如果在浏览器访问hdmall.hdlxdl.site/admin/api/getList 能正常返回值
则算成功

访问eureka管理页面查看服务注册信息
可以通过访问hdmall.hdlxdl.site:8502 来访问eureka后台管理页面(8502端口对应的服务是注册中心服务) 如下图可以看到已注册到注册中心的服务提供者

在这里插入图片描述

备注

  • 注意不要在单体服务和网关处同时配置了跨域的处理
  • 访问单体服务必须要和网关配置一致,比如 hdmall.hdlxdl.site/admin访问admin服务等
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值