部署SpringBoot 项目到云服务器

参考博客 :SpringBoot项目的云服务器部署 - CSDN博客 http://blog.csdn.net/zhangxing52077/article/details/73008359

在部署时候会碰到一些问题,比如不知道jdk的安装路径在哪,此时我们可以利用命令查出,

  1. 如果配置了 JAVA_HOME环境变量
echo $JAVA_HOME
  1. 如果没有就使用
[root@VM_0_15_centos ~]# which java
/usr/bin/java
[root@VM_0_15_centos ~]#

我的jdk安装在 /usr/java
所以将项目打jar包之后要放到 这个目录下,然后执行命令

[root@VM_0_15_centos java]# nohup java -jar test01.jar >/dev/null 2>&1 &
[2] 17732
[root@VM_0_15_centos java]#

原来运行的命令是

[root@VM_0_15_centos java]# nohup java -jar test01.jar &
[1] 2480
[root@VM_0_15_centos java]# nohup: ignoring input and appending output to ‘nohup.out’

[1]+  Exit 1                  nohup java -jar test01.jar

当我们访问的时候会无法得到相应的结果,将命令改成 下面的才行

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

浏览器访问 http://ip/hello 得到 hello world!

原因为:

使用Linux重定向解决nohup.out无写权限问题

■场景

执行nohup命令的时候,经常会出现下面这种没有写入权限的错误。

nohup: ignoring input and appending output to nohup.out'
nohup: failed to run command
/etc/nginx_check.sh’: Permission denied

■linux重定向:

0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出。

在一般使用时,默认的是标准输出,既1。当我们需要特殊用途时,可以使用其他标号。

例如,将某个程序的错误信息输出到log文件中:./program 2>log。这样标准输出还是在屏幕上,但是错误信息会输出到log文件中。

另外,也可以实现0,1,2之间的重定向。2>&1:将错误信息重定向到标准输出。

Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。

这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。

如果想要正常输出和错误信息都不显示,则要把标准输出和标准错误都重定向到/dev/null, 例如:

# ls 1>/dev/null 2>/dev/null

还有一种做法是将错误重定向到标准输出,然后再重定向到 /dev/null,例如:

# ls >/dev/null 2>&1

注意:此处的顺序不能更改,否则达不到想要的效果,此时先将标准输出重定向到 /dev/null,然后将标准错误重定向到标准输出,

由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,于是一切静悄悄。

■关于nohup

在使用nohup命令的时候,经常由于输出nohup.out的路径没有写入权限,而无法使用nohup。

这是可以使用Linux重定向的方法,将nohup.out重定向至一个有写入权限的路径,或者直接扔到/dev/null中。

nohup ./program >/dev/null 2>/dev/null &

或者

nohup ./program >/dev/null 2>&1 &

上述程序代码很简单: 使用springboot框架
pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.test01</groupId>
    <artifactId>test01</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>test01</name>
    <description>crm for erchuang</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

application.properties

# EMBEDDED SERVER CONFIGURATION (ServerProperties)
server.port=80
server.session-timeout=1800

HelloController.java


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**
 * Date: 2018/3/12
 * To change this template use File | Settings | File Templates.
 * Description:测试的控制器
 */
@RestController
public class HelloController {
    @RequestMapping(value="hello",method= RequestMethod.GET)
    public String say(){
        return "hello world!";
    }
}

补充,如果jar项目更新,传上了新的版本,需要停掉原先的进程,

[root@VM_0_15_centos java]# ps -ef|grep test01
root     15706     1  0 16:20 ?        00:00:10 java -jar test01.jar
root     32630 30852  0 17:54 pts/0    00:00:00 grep --color=auto test01
[root@VM_0_15_centos java]# kill 15706
[root@VM_0_15_centos java]# ps -ef|grep test01
root      1137 30852  0 17:56 pts/0    00:00:00 grep --color=auto test01

然后重新挂起

[root@VM_0_15_centos java]# nohup java -jar test01.jar >/dev/null 2>&1 &
[2] 17732
[root@VM_0_15_centos java]#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值