精华内容
下载资源
问答
  • 2、zuul和eureka转发请求地址的问题,在本机中zuul转发SC-XXX主机的请求就可以,将包部署到服务器上zuul通过注册的主机名称进行转发请求的时候报找不到链接(如下图),这个不太清楚具体原因,但是我们只要在yml中...

    1、Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: ribbon-provider

    这个问题是yml的配置问题,在配置中如果没有加入enabled:true的配置的话在zuul网关转发请求的时候会报上文的这个错

    按图添加

    eureka:
      client:
        registerWithEureka: true
        fetchRegistry: true
        serviceUrl:
          defaultZone: http://地址:端口/eureka/
        instance:
          prefer-ip-address: true # 优先注册IP地址而不是hostname
        healthcheck:
          enabled: true # 启用健康检查,注意:需要引用spring boot actuator

    2、zuul和eureka转发请求地址的问题,在本机中zuul转发SC-XXX主机的请求就可以,将包部署到服务器上zuul通过注册的主机名称进行转发请求的时候报找不到链接(如下图),这个不太清楚具体原因,但是我们只要在yml中配置一个参数就可以将主机名称设置为ip优先,如上图或下面的配置就可以解决:

    instance: prefer-ip-address: true # 优先注册IP地址而不是hostname

     

    展开全文
  • 经历了学习springboot,又经历学习了基于springboot的springcloud微服务开发 学习就要有所沉淀,记录一下学习踩坑之旅。 上一篇博客介绍了如何部署安装docker以及相关服务环境的配置,传送门: ...

    经历了学习springboot,又经历学习了基于springboot的springcloud微服务开发

    学习就要有所沉淀,记录一下学习踩坑之旅。

    上一篇博客介绍了如何部署安装docker以及相关服务环境的配置,传送门:

    https://blog.csdn.net/romanticRose/article/details/101351679

    常用的docker命令:

    查看镜像:docker images -a
    
    停止镜像:docker stop $(docker ps -a -q)
    
    删除镜像:docker rmi <imageid>
    
    查看容器:docker ps
    
    删除容器:docker rm 容器id
    
    启动服务:docker start ace-dbxt(container容器id)
    
    服务交互:docker attach ace-dbxt  #退出容器交互命令 Ctrl+P,Ctrl+Q
    
    #加上 --sig-proxy=false,这样detach时不会停止容器服务,按Ctrl+C退出
    
    docker attach --sig-proxy=false containername/containerid
    
    构建镜像:docker build -t ace-dbxt .(示例)
    
    运行镜像:docker run -d --network host --name ace-dbxt -p 8763:8763 -p 9423:9423 -it -v /etc/localtime:/etc/localtime:ro ace-dbxt8763 /bin/bash
    --network:host方式启动
    --name: 服务名
    -p: 开放端口

    部署安装springcloud服务

    首先需要准备maven打好的服务jar包以及配置dockerfile文件

    Dockerfile 文件

    FROM hub.c.163.com/library/java:8-alpine
    
    VOLUME /tmp
    
    ADD ace-center.jar app.jar    ###服务jar包
    
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
    
    
    
    EXPOSE 8761             ###开放端口

    进入服务路径目录 执行命令构建docker镜像(示例)

    cd 服务路径  -->   docker build -t ace-center8761 .

    注意:命令结尾的.代表同级目录

    Host方式启动镜像

    docker run -d --network host --name ace-center -p 8761:8761 -it ace-center8761 /bin/bash

    验证服务即可,其他微服务往注册中心注册相同操作;

    开发部署问题整理

    修改docker容器时间

    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    echo "Asia/Shanghai" > /etc/timezone

     解决docker下启动jar包服务时间不同步

    修改dockerfile文件

    FROM hub.c.163.com/library/java:8-alpine
    VOLUME /tmp
    
    RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    RUN echo 'Asia/Shanghai' >/etc/timezone
    
    ADD ace-dbxt.jar app.jar
    
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Duser.timezone=GMT+08","/app.jar"]
    
    EXPOSE 8763

    docker-compose配置下: 

     

      ace-center:
        image: ace-center8761
        container_name: ace-center
        build: /home/aeccspringcloud/service/ace-center-server/Dockerfile
        ports:
          - "8761:8761"
        environment:
          - TZ=Asia/Shanghai
          - LANG=en_US.UTF-8
        volumes:
          - "/etc/localtime:/etc/localtime:ro"
        network_mode: "host"
        restart: always

    解决docker镜像字体问题

    FROM hub.c.163.com/library/java:latest
    VOLUME /tmp
    ADD ace-workflow-1.0-SNAPSHOT.jar app.jar
    #拷贝字体文件
    COPY ./simsun.ttf /usr/share/fonts/simsun.ttf 
    #设置字符集
    ENV LANG en_US.UTF-8
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
    
    EXPOSE 8082

    首先找到字体文件放置到jar包同级目录下 (此项目中添加的是黑体字体,具体字体文件如何获取网上可查找)

    不积硅步无以至千里,不积小流无以成江海。

    展开全文
  • 将修改好的脚本复制到linux服务器,例: 3.给脚本添加执行权限,cd到脚本的目录然后如下图: 4.运行脚本,启动项目,如下图: 如此操作即可启动项目,如果是多个服务或者项目,请重复如上的操作,一个项目或服务对应一个sh脚本...

    可能会用到的命令

    给文件添加执行权限

    chmod u+x  文件名
    

    命令格式:chmod [对象][+|-|=][权限] 文件名
    对象:u-目录或者文件的所有者;g-目录或者文件的所有组;o-除了目录或者文件所有者和所有组的用户或者群组;a-所有的用户及组。
    文字权限的表示:r-读权限;w-写权限;x-执行权限
    用法示例:
    给zhidao.txt文件的所有者添加读权限
    chmod u+x zhidao.txt

    后台运行指定的jar

    nohup java -jar xxx.jar
    

    查询所有java进程

    ps -ef|grep java
    

    杀掉所有java进程

    pkill -9 java
    

    杀掉指定id进程

    kill -9 pid
    

    脚本启动项目(xx.sh)

    1.下载好脚本,用记事本打开修改如下图

    在这里插入图片描述
    2.将修改好的脚本复制到linux服务器,例:

    在这里插入图片描述
    3.给脚本添加执行权限,cd到脚本的目录然后如下图:

    在这里插入图片描述
    4.运行脚本,启动项目,如下图:

    在这里插入图片描述

    如此操作即可启动项目,如果是多个服务或者项目,请重复如上的操作,一个项目或服务对应一个sh脚本.

    展开全文
  • linux部署SpringCloud登录注册项目 首先要感谢拉钩教育,JAVA高薪训练营七期班主任,导师,还有学习群里的小伙伴。谢谢你们的帮助! 这个项目是一个整合SpringCloud微服务的实现了登录注册功能的项目。原...

    首先要感谢拉钩教育,JAVA高薪训练营七期班主任,导师,还有学习群里的小伙伴。谢谢你们的帮助!

    这个项目是一个整合SpringCloud微服务的实现了登录注册功能的项目。原任务要求并没有说要部署到linux上,我已经将该工程部署到本地windows上并测试通过了。但是如果是生产环境肯定要部署到linux上,所以就想试一试。我用的linux是腾讯云centos,项目用到的技术栈有:

    • mysql
    • nginx
    • rabbitmq
    • Springboot
    • SpringCloud Eureka
    • SpringCloud Feign
    • SpringCloud Gateway
    • ...

    任务: SpringCloud作业要求

    目录

    1,安装mysql

    2,安装erlang环境

    3,安装Rabbitmq

    4,linux上安装nginx

    5,项目源码

    6,部署测试


    首先要在centos上安装环境

    我的linux版本 是 CentOS Linux release 7.8.2003 (Core)

    查看命令:

    [root@VM-0-16-centos local]# cat /etc/redhat-release
    CentOS Linux release 7.8.2003 (Core)

    1,安装mysql

    可以用yum安装或手动安装,我是手动安装。

    如果安装过需要卸载、未安装则跳过

    # rpm -qa | grep mysql
    
    mysql-libs-5.1.73-3.el6_5.x86_64
    # rpm -e mysql-libs-5.1.73-3.el6_5.x86_64 --nodeps

    如果是centos系统,默认会开启selinux
    关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled。

    下载mysql的安装 ,我用的是 mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz

    将安装包传到/usr/local 并解压 ,改名

    # mv mysql-5.7.14-linux-glibc2.5-x86_64 mysql

    配置 /etc/my.cnf :

    [mysql]
    default-character-set=utf8
    socket=/var/lib/mysql/mysql.sock
    [mysqld]
    port = 3306  
    socket=/var/lib/mysql/mysql.sock
    basedir=/usr/local/mysql
    datadir=/usr/local/mysql/data
    max_connections=1000 
    character-set-server=utf8
    default-storage-engine=INNODB
    log_error=/usr/local/mysql/logs/mysql-error.log 
    pid-file=/var/run/mysqld/mysqld.pid

    安装 libaio

    # yum install libaio

    创建目录 mysql/data, mysql/logs 

    创建用户, 创建目录之后更换属主

    useradd -r -g mysql mysql
    groupadd mysql
    chown -R mysql:mysql /usr/local/mysql
    chmod -R 755 /usr/local/mysql

    初始化 mysql

    cd /usr/local/mysql/bin
    ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql

    将mysql注册为服务并启动,设置为开机自动启动 

    chkconfig --level 35 mysqld on

    cd /usr/local/mysql/support-files
    cp mysql.server /etc/init.d/mysqld
    chkconfig --level 35 mysqld on 
    service mysqld start

    查看状态:

    安装完成后修改root密码(安装后在log里查看默认密码,但是我没有找到,没有密码也能登陆进去)

    [root@VM-0-16-centos bin]# ./mysql -uroot
    
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 4
    Server version: 5.7.14 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> use mysql
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> update user set authentication_string=PASSWORD("root")where user="root";
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    Rows matched: 1  Changed: 0  Warnings: 1
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    

    创建用户并赋予外界访问权限(貌似外界不能用root访问)

    mysql> CREATE USER 'limeng'@'%' IDENTIFIED BY 'limeng';
     
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'limeng'@'%' WITH GRANT OPTION;

    连接测试:

    如果连接失败则要打开3306端口

     

    2,安装erlang环境

    安装rabbitmq之前先要安erlang环境

    首先需要安装C++编译

    # yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC unixODBC-devel httpd python-simplejson
    

    安装erlang。下载安装包 otp_src_19.1.tar.gz 并解压

    # tar -xvf otp_src_19.1.tar.gz 

    编译安装erlang语言环境

    [root@VM-0-16-centos otp_src_19.1]# cd /root/otp_src_19.1/
    [root@VM-0-16-centos otp_src_19.1]# ./configure  --prefix=/usr/local/erlang --enable-smp-support  --enable-threads  --enable-sctp --enable-kernel-poll --enable-hipe  --with-ssl --without-javac

    erlang语言编译配置选项:

    –prefix 指定安装目录
    –enable-smp-support启用对称多处理支持(Symmetric Multi-Processing对称多处理结构的简称)
    –enable-threads启用异步线程支持
    –enable-sctp启用流控制协议支持(Stream Control Transmission Protocol,流控制传输协议)
    –enable-kernel-poll启用Linux内核poll
    –enable-hipe启用高性能Erlang
    –with-ssl 启用ssl包
    –without-javac不用java编译

    开始安装编译:

    # make && make install 

    配置erlang环境变量

    # vim /etc/profile
    
      export PATH=$PATH:/usr/local/erlang/bin
    
    # source /etc/profile
    

    测试erlang安装是否成功

    3,安装Rabbitmq

    下载安装包 rabbitmq-server-3.6.6-1.el6.noarch.rpm

    # rpm -i --nodeps rabbitmq-server-3.6.6-1.el6.noarch.rpm

    配置环境变量,编辑/etc/profile

    # export PATH=${JAVA_HOME}/bin:/usr/local/erlang/bin:/usr/local/rabbitmq/sbin:$PATH

    生成配置文件 并启动

    [root@VM-0-16-centos rabbitmq-server-3.6.6]# cp /usr/share/doc/rabbitmq-server-3.6.6/rabbitmq.config.e
    xample /etc/rabbitmq/rabbitmq.config
    [root@VM-0-16-centos rabbitmq-server-3.6.6]# service rabbitmq-server start
    Starting rabbitmq-server (via systemctl):                  [  OK  ]
    [root@VM-0-16-centos rabbitmq-server-3.6.6]# 

    常用rabbitMq启动命令:

    service rabbitmq-server   start
    service rabbitmq-server   stop
    service rabbitmq-server   status
    service rabbitmq-server   rotate-logs|
    service rabbitmq-server   restart
    service rabbitmq-server   condrestart
    service rabbitmq-server   try-restart
    service rabbitmq-server   reload
    service rabbitmq-server   force-reload
    ps -ef | grep rabbitmq  查看rabbitMq 进程
    netstat -anplt | grep LISTEN  rabbitmq 默认监听端口 15672/5672
    

    创建一个用户,账号admin 密码admin

    [root@VM-0-16-centos rabbitmq-server-3.6.6]# rabbitmqctl add_user admin admin
    Creating user "admin" ...

    将admin用户赋管理员权限

    [root@VM-0-16-centos rabbitmq-server-3.6.6]# rabbitmqctl set_user_tags admin administrator 
    Setting tags for user "admin" to [administrator] ...
    [root@VM-0-16-centos rabbitmq-server-3.6.6]# 

    启用WEB管理

    [root@VM-0-16-centos rabbitmq-server-3.6.6]# rabbitmq-plugins enable rabbitmq_management
    The following plugins have been enabled:
      mochiweb
      webmachine
      rabbitmq_web_dispatch
      amqp_client
      rabbitmq_management_agent
      rabbitmq_management
    
    Applying plugin configuration to rabbit@VM-0-16-centos... started 6 plugins.
    [root@VM-0-16-centos rabbitmq-server-3.6.6]# 

    创建和赋角色完成后查看并确认

    [root@VM-0-16-centos rabbitmq-server-3.6.6]# rabbitmqctl list_users
    Listing users ...
    admin   [administrator]
    guest   [administrator]
    [root@VM-0-16-centos rabbitmq-server-3.6.6]# 

    通过浏览器访问15672端口来登录管理平台,账号密码就是之前创建的admin

    如果是通过java连接使用的是5672端口

    需要设置用户访问权限。否则会报连接不上localhost:5672

    设置开机启动

    # chkconfig rabbitmq-server on
    

    这里安装rabbitMQ是因为springcloud config有用到,不过我部署到云上的因为内存太小所以没有springcloud config。

    4,linux上安装nginx

    安装 yum install gcc-c++

    Nginx需要依赖它们

    • gzip 模块需要 zlib 库 ( 下载: http://www.zlib.net/ )
    • rewrite 模块需要 pcre 库 ( 下载: http://www.pcre.org/ )
    • ssl 功能需要 openssl 库 ( 下载: http://www.openssl.org/ )
    cd /usr/local/src
    wget https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz 
    tar -zxvf pcre-8.44.tar.gz
    cd pcre-8.44
    ./configure
    make
    make install

    安装nginx

    下载nginx并解压

    [root@localhost]tar zxvf nginx-1.10.2.tar.gz
    
    [root@localhost] mv nginx-1.10.2 nginx
    
    [root@localhost] cd nginx
    
    [root@localhost]  ./configure && make && make install
    
    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        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;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
        server {
            listen       80;
            server_name  www.limengniubi.xyz;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
    
    	location /static {
    	    root   html;
    	}
    
    	location /api {
    	    proxy_pass   http://www.limengniubi.xyz;
    	}
    
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            #
            #location ~ \.php$ {
            #    proxy_pass   http://127.0.0.1;
            #}
    
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            #location ~ \.php$ {
            #    root           html;
            #    fastcgi_pass   127.0.0.1:9000;
            #    fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #    include        fastcgi_params;
            #}
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /\.ht {
            #    deny  all;
            #}
        }
    
    
        # another virtual host using mix of IP-, name-, and port-based configuration
        #
        #server {
        #    listen       8000;
        #    listen       somename:8080;
        #    server_name  somename  alias  another.alias;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    
        # HTTPS server
        #
        #server {
        #    listen       443 ssl;
        #    server_name  localhost;
    
        #    ssl_certificate      cert.pem;
        #    ssl_certificate_key  cert.key;
    
        #    ssl_session_cache    shared:SSL:1m;
        #    ssl_session_timeout  5m;
    
        #    ssl_ciphers  HIGH:!aNULL:!MD5;
        #    ssl_prefer_server_ciphers  on;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    }
    

    启动nginx.关掉是杀进程

    ./nginx

    [root@VM-0-16-centos nginx]# ./nginx
    [root@VM-0-16-centos nginx]# ps -ef|grep nginx
    root     19984     1  0 16:39 ?        00:00:00 nginx: master process ./nginx
    nobody   19985 19984  0 16:39 ?        00:00:00 nginx: worker process
    root     20021 11973  0 16:39 pts/1    00:00:00 grep --color=auto nginx

    搞定!

    nginx访问动态页面会有跨域问题,可以设置一个域名。

    也可以在Controller里加上@CrossOrigin解决跨域问题

     

    5,项目源码

    每个微服务工程都带端口号。用来区分每个工程

    1)由于有发邮件功能,需要在配置文件bootstrap.yml里设置发邮件端口为465。

    spring:  
     mail:
        #smtp服务主机  qq邮箱则为smtp.qq.com
        host: smtp.163.com
        #服务协议
        protocol: smtp
        # 编码集
        default-encoding: utf-8
        #发送邮件的账户 #
        username: limeng123@163.com
        #授权码
        password: 授权码
        test-connection: true
        properties:
          mail:
            smtp:
              auth: true
              socketFactory:
                # 端口号要改成465 否则linux上连不上邮件服务器
                port: 465
                class: javax.net.ssl.SSLSocketFactory
                fallback: false
              starttls:
                enable: true
                required: true

    发邮件是用的 spring-boot-starter-mail

    <!-- email依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    package com.limeng.sc.service;
    
    import com.limeng.sc.pojo.Constants;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.mail.MailException;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.stereotype.Service;
    @Service
    public class EmailService {
        @Autowired
        private JavaMailSender mailSender;
        @Value("${spring.mail.username}")
        private String from;
        private static String VALID_TIME = Constants.EXPIRE_TIME/60000 +"分钟";
        public void sendMail(String email, String code){
            //创建简单邮件消息
            SimpleMailMessage message = new SimpleMailMessage();
            //谁发的
            message.setFrom(from);
            //谁要接收
            message.setTo(email);
            //邮件标题
            message.setSubject("拉钩验证码");
            //邮件内容
            message.setText("验证码是:"+code+",有效时间是"+VALID_TIME);
            try {
                mailSender.send(message);
            } catch (MailException e) {
                e.printStackTrace();
            }
        }
    }
    

     

    2)maven 打包的时候注意,要设置打包插件,否则生成jar包不能运行,报错找不到主类

    可以在父工程中设置打包

        <build>
            <plugins>
                <!--编译插件-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>11</source>
                        <target>11</target>
                        <encoding>utf-8</encoding>
                    </configuration>
                </plugin>
                <!--打包插件-->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>

    3)Spring Cloud Config+Bus需要在git上配置一些信息,工程中的配置去git上拉取

    datasource:
     driver: com.mysql.jdbc.Driver
     url: jdbc:mysql://127.0.0.1:3306/lagou?serverTimezone=UTC
     username: aa
     password: aa
    
    mail:
     host: smtp.163.com
     protocol: smtp
     username: limengaa@163.com
     password: aaa #授权码
    
    
    ip_defend:
     limit: 100
    
    host: localhost

     

    6,部署测试

    # 部署的时候发现后面run的jar包会kill掉前面的,卡了两天发现是内存溢出了。脚本或命令要用后台运行的

    nohup java -jar ***.jar >>/dev/null 2>&1 &

    查看日志

     tail -f /var/log/messages

    由于我的云服务器内存只有2G,跑不了很多个微服务,所以把eureka设置成单实例,并且没有Config bus配置中心。

    在run脚本的时候,由于脚本是用linux编辑的,其中的空格符号和Linux的不同,可以通过sed命令与正则的配合将文件中的空格符号替换成linux的空格

    sed -i 's/\r$//' sc_java.sh
    #!/bin/sh
    export EUREKA=lagou-eureka-server-8761-1.0-SNAPSHOT.jar
    export EUREKB=lagou-eureka-server-8762-1.0-SNAPSHOT.jar
    export EMAIL=lagou-service-email-1.0-SNAPSHOT.jar
    export CONFIG=lagou-config-server-9006-1.0-SNAPSHOT.jar
    export GATEWAY=lagou-gateway-server-9002-1.0-SNAPSHOT.jar
    export CODE=lagou-service-code-1.0-SNAPSHOT.jar
    export USER=lagou-service-email-1.0-SNAPSHOT.jar
    
    export EUREKA_port=8761
    export EUREKB_port=8762
    export EMAIL_port=8083
    export CONFIG_port=9006
    export GATEWAY_port=9002
    export CODE_port=8082
    export USER_port=8081
     
    case "$1" in
     
    start)
            ## START EUREKA
            echo "-------- EUREKA START --------------"
            nohup java -jar $EUREKA >>/dev/null 2>&1 &
            EUREKA_pid=`lsof -i:$EUREKA_port|grep "LISTEN"|awk '{print $2}'`
            until [ -n "$EUREKA_pid" ]
                do
                  EUREKA_pid=`lsof -i:$EUREKA_port|grep "LISTEN"|awk '{print $2}'`  
                done
            echo "EUREKA pid is $EUREKA_pid" 
            echo "-------- EUREKA START SUCCESS--------------"          
    
    	## START GATEWAY
            echo "--------START GATEWAY---------------"
            nohup java -jar $GATEWAY >>/dev/null 2>&1 &
            GATEWAY_pid=`lsof -i:$GATEWAY_port|grep "LISTEN"|awk '{print $2}'` 
            until [ -n "$GATEWAY_pid" ]
                do
                  GATEWAY_pid=`lsof -i:$GATEWAY_port|grep "LISTEN"|awk '{print $2}'`  
                done
            echo "GATEWAY pid is $GATEWAY_pid"     
            echo "---------GATEWAY START SUCCESS-----------"	
    		
    	## START EMAIL
            echo "--------START EMAIL---------------"
            nohup java -jar $EMAIL >>/dev/null 2>&1 &
            EMAIL_pid=`lsof -i:$EMAIL_port|grep "LISTEN"|awk '{print $2}'` 
            until [ -n "$EMAIL_pid" ]
                do
                  EMAIL_pid=`lsof -i:$EMAIL_port|grep "LISTEN"|awk '{print $2}'`  
                done
            echo "EMAIL pid is $EMAIL_pid"     
            echo "---------EMAIL START SUCCESS-----------"	     
    
    	## START CODE
            echo "--------START CODE---------------"
            nohup java -jar $CODE >>/dev/null 2>&1 &
            CODE_pid=`lsof -i:$CODE_port|grep "LISTEN"|awk '{print $2}'` 
            until [ -n "$CODE_pid" ]
                do
                  CODE_pid=`lsof -i:$CODE_port|grep "LISTEN"|awk '{print $2}'`  
                done
            echo "CODE pid is $CODE_pid"     
            echo "---------CODE START SUCCESS-----------"	      
    
    	## START USER
            echo "--------START USER---------------"
            nohup java -jar $USER >>/dev/null 2>&1 &
            USER_pid=`lsof -i:$USER_port|grep "LISTEN"|awk '{print $2}'` 
            until [ -n "$USER_pid" ]
                do
                  USER_pid=`lsof -i:$USER_port|grep "LISTEN"|awk '{print $2}'`  
                done
            echo "USER pid is $USER_pid"     
            echo "---------USER START SUCCESS-----------"	         
            echo "===startAll success==="
            ;;
    
     
     stop)
     
    	P_ID=`ps -ef | grep -w $USER | grep -v "grep" | awk '{print $2}'`
            if [ "$P_ID" == "" ]; then
                echo "===USER process not exists or stop success"
            else
                kill -9 $P_ID
                echo "USER killed success"
            fi	
    	P_ID=`ps -ef | grep -w $CODE | grep -v "grep" | awk '{print $2}'`
            if [ "$P_ID" == "" ]; then
                echo "===CODE process not exists or stop success"
            else
                kill -9 $P_ID
                echo "CODE killed success"
            fi	
    	P_ID=`ps -ef | grep -w $EMAIL | grep -v "grep" | awk '{print $2}'`
            if [ "$P_ID" == "" ]; then
                echo "===EMAIL process not exists or stop success"
            else
                kill -9 $P_ID
                echo "EMAIL killed success"
            fi
    	P_ID=`ps -ef | grep -w $CONFIG | grep -v "grep" | awk '{print $2}'`
            if [ "$P_ID" == "" ]; then
                echo "===CONFIG process not exists or stop success"
            else
                kill -9 $P_ID
                echo "CONFIG killed success"
            fi
    	P_ID=`ps -ef | grep -w $GATEWAY | grep -v "grep" | awk '{print $2}'`
            if [ "$P_ID" == "" ]; then
                echo "===GATEWAY process not exists or stop success"
            else
                kill -9 $P_ID
                echo "GATEWAY killed success"
            fi	
            P_ID=`ps -ef | grep -w $EUREKA | grep -v "grep" | awk '{print $2}'`
            if [ "$P_ID" == "" ]; then
                echo "===EUREKA process not exists or stop success"
            else
                kill -9 $P_ID
                echo "EUREKA killed success"
            fi
    	P_ID=`ps -ef | grep -w $EUREKB | grep -v "grep" | awk '{print $2}'`
            if [ "$P_ID" == "" ]; then
                echo "===EUREKB process not exists or stop success"
            else
                kill -9 $P_ID
                echo "EUREKB killed success"
            fi
    
            echo "===stopAll success==="
            ;;   
     
    restart)
            $0 stop
            sleep 2
            $0 start
            echo "===restart all success==="
            ;;   
    esac	
    exit 0

     

    测试:

     

    大功告成!

    展开全文
  • 起因:新购买了云服务器,... 同时也为项目部署提供一个参考开发环境:阿里云服务器ecs,操作系统(centos_7)本人系统环境(macOS Catalina v10.15.2)develop IDE: intellij IDEA实现:nginx代理2. 使用Alibaba Cloud ...
  • 原任务要求并没有说要部署linux上,我已经将该工程部署到本地windows上并测试通过了。但是如果是生产环境肯定要部署linux上,所以就想试一试。我用的linux是腾讯云centos,项目用到的技术栈有:mysqlnginx...
  • 2.通过安装以上两个软件可以实现window电脑远程控制Linux服务器,这样就可以将我们打包好的jar文件传输到Linux服务器上进行项目部署项目存放结构图如下: 3.将jar文件传到linux目录上(不需要放到tomcat下)...
  • 一、安装Docker(Linux系统) 1. docker教程 https://blog.csdn.net/deng624796905/article/details/86493330 2. 安装 //Docker-CE 支持 64 位版本的 CentOS7 ,并且要求内核版本不低于 3.10 //查看内核版本 ...
  • Centos7无网络部署SpringCloud项目 部署需要的环境包 链接:https://pan.baidu.com/s/1o3mBNxTcJ9am5tWqnYJXtg 提取码:org0 使用root账号登录服务器 1.安装java环境 第一步:将jdk-8u231-linux-x64.tar.gz包拷贝到/...
  • 使用docker部署spring cloud项目 准备工作 JDK1.8、Docker1.12.1、CentOS7.0 1.CentOS7.0下JDK1.8的安装 (1)到Oracle官网下载好 jdk-8u181-linux-x64.tar.gz 备用 (2)卸载系统自带的java java -...
  • Linux下Spring Cloud项目部署到tomcat下

    千次阅读 2018-05-02 21:05:15
    修改Tomcat配置文件,配置多个项目 去除spring boot内置Tomcat 1.去除jar包依赖 &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt...
  • 使用Alibaba Cloud Toolkit部署maven多模块项目Linux 添加服务器地址 查看启动日志
  • Cloud Toolkit 是本地 IDE 插件,帮助开发者更高效地开发、测试、诊断并部署应用。通过插件,可以将本地应用一键部署到任意服务器,甚至云端(ECS、EDAS、Kubernetes 和 小程序云 等);并且还内置了 Arthas 诊断、...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 234
精华内容 93
关键字:

linux部署cloud项目

linux 订阅