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

目录

  • 安装Nginx
    • 安装基础依赖
    • 下载nginx并编译安装
    • 配置环境变量
    • 配置开机启动
    • nginx常用命令
  • Nginx配置微服务网关
    • 配置二级域名的解析
    • 配置nginx实现端口转发
  • 启动微服务
  • 测试
  • 备注

服务器信息: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并编译安装

  • cd /usr/local
  • wget -c https://nginx.org/download/nginx-1.14.0.tar.gz
  • tar -zxvf nginx-1.14.0.tar.gz
  • cd nginx-1.14.0
  • ./configure
  • make
  • make install

配置环境变量

按照如上步骤安装完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
域名解析:阿里云
网关技术:zuul

配置二级域名的解析

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

阿里云部署SpringCloud微服务过程记录_第1张图片

配置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服务上如下所示
阿里云部署SpringCloud微服务过程记录_第2张图片
所以,如果访问网关服务并且追加admin服务的接口请求,能正常访问就算部署成功。

已知admin服务有如下Controller类
阿里云部署SpringCloud微服务过程记录_第3张图片

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

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

阿里云部署SpringCloud微服务过程记录_第4张图片

备注

  • 注意不要在单体服务和网关处同时配置了跨域的处理
  • 访问单体服务必须要和网关配置一致,比如 hdmall.hdlxdl.site/admin访问admin服务等

你可能感兴趣的:(#,Java,Web编程)