前言
由于准生产所有的机器已满,无法部署新的应用,因此最近刚申请了新的服务器。新服务器上的第一个应用就落到我的身上。因为此前没有过类似经历,算是经验值+1了。期间遇到了一些问题,在这里记录下来。也将此文当作一个学习笔记。
登录服务器
因为公司其他的一些策略,尚无法直接登录,只能通过ssh进行跳转。
ssh app@1.2.3.199
上面的命令回车之后输入密码即可登录。
JDK配置
这是遇到的第一个坑。
为了效率,我直接从其他的服务器复制了一个jdk,也就是传说中的绿色版。所以本文没有JDK的安装说明。
JDK理所当然地要配置为全局变量,于是我便去修改了 /etc/profile
文件,然后无奈地发现,我使用的app用户没有修改权限。
好吧,没有就没有吧。那我给我这个用户配置一个总可以了吧。
于是我来到了用户目录下,并查看了里面包含的文件:
app@newHostName :/> cd /app
app@newHostName :~> ls -a
./ ../
app@newHostName :~>
因为是新的机器,干干净净什么都没有。正好,我新建一个.bash_profile
的隐藏文件来对我当前的app用户设置环境变量呗:
app@newHostName :~> vim .bash_profile
里面的内容就是JDK的环境配置了,这里就不说了。
只说一点,新增环境变量用
export
关键字就可以了:
eg: export JAVA_HOME=/app/jdk/jdk1.8
设置完之后,使用source
命令刷新使文件中的环境变量生效而不用重启机器:
app@newHostName :~> source .bash_profile
然后就是部署了,取包解压(此处省略若干字)。一共有两个服务要部署,因为有事儿,当天只部署了一个。
第二天,接着之前的部署,运行启动脚本:
app@newHostName :~> ./start.sh
然后报了个错,大概意思就是有个叫java
的命令系统不认识。
神奇了。我已经配置了JDK的环境变量了呀!于是我就验证了一下:
app@newHostName :~> java -version
If 'java' is not a typo you can use command-not-found to lookup the package that contains it,
like this: cnf java
app@newHostName :~>
果然是没有配置。然后我重新source
了/app/.bash_profile
,再看,发现JDK又好了。
这尼玛果断不可以啊。
无奈只能使用root账户修改/etc/profile
文件了。结果发现仍然有同样的问题:环境变量只对当前的shell环境有效,重新连接之后居然无效了。
然后参考了这位大佬的文章《Linux设置JAVA的全局环境变量时的大坑》。
为防止文章链接失效,这里说一下文章概要。
大概的意思就是,环境变量失效,是因为在/etc/profile
文件中,会有一段代码将开头的环境变量重置,所以新增的环境变量要放在文件最后。
修改之后,重新启动,果然不再有JDK的问题了。
域名和主机名
然后查看启动日志,发现又有了新的问题:
java.net.UnkonwHostNameException : newHostName : newHostName 域名解析暂时失败
刚开始在网上找答案,说是DNS的问题,于是修改了/etc/resolv.conf
文件,新增了域名配置。但是还是继续报错。
仔细观察发现这个所谓的域名,长得跟主机名一毛一样。于是就想是不是主机名的问题,然后查看了其他服务器的Hosts文件,果然如此。于是使用root用户在/etc/hosts
中新增了配置:
1.2.3.199 newHostName
重启应用,发现无报错。
以上全部