Linux Java常用服务安装与设置

        上次总结过一些Java常用服务的安装和配置,隔了段时间重新配Linux又感觉啥也不会了,因此基于上次的经验和本次遇到的问题再做一次总结。

        本文基于CentOS 7

1. Linux 设置

1.1 IP地址自动变动

        有时候Linux的IP地址会突然发生变化,这是由于默认网卡配置指定了IP地址获取方式为DHCP(动态主机配置协议,不了解所以在此不赘述),顾名思义IP会动态获取,因此我们需要将其改为静态获取。

        首先ifconfig/ip addr看一下当前生效的网卡设置,以ifconfig为例显示的内容如下:

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.190.129  netmask 255.255.255.0  broadcast 192.168.190.255
        inet6 fe80::690d:ca7f:7270:e28d  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:da:7c:dd  txqueuelen 1000  (Ethernet)
        RX packets 9204  bytes 815274 (796.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9703  bytes 15956071 (15.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 40550  bytes 19515218 (18.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 40550  bytes 19515218 (18.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        可以看到显示本机IP地址对应的网卡名称为“ens33”,因此要去修改对应的网卡配置,/etc/sysconfig/network-scripts目录下的“ifcfg-ens33”文件即为网卡配置文件,注意修改对应名称的配置信息。打开文件后有几个主要属性需要修改:

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" //默认设置为dhcp,需要修改为static
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="fcc1ea85-7169-4f30-b23d-943b2ef5d3e8"
DEVICE="ens33"
ONBOOT="yes" //需要修改为yes

IPADDR=192.168.190.129 //需要修改为固定IP
NETMASK=255.255.255.0
GATEWAY=192.168.190.2
DNS1=8.8.8.8
DNS2=8.8.4.4

        修改完后重启网卡服务“service network restart”即可。

1.2 域名解析错误

        用wget下载东西时提示“Name or service not known”,即域名或服务解析错误。试着ping了一下百度,一直没有响应。问题突然就出现了,可能是什么操作影响了网络。Linux使用的是NAT模式共享本机的网络,那么这个问题就有两个解决方向。

        方向1从问题本身入手,既然提示域名解析错误,那就显式地指定DNS服务器,这俩DNS都是谷歌提供的,一主一备,设置完成后重启网卡服务,发现没啥用。

DNS1=8.8.8.8
DNS2=8.8.4.4

       方向2从网络本身入手,有可能是Linux本身就已经连不上网了,所以搞什么设置都白搭。去VMware查看一下虚拟网络编辑器设置,发现其中有VMnet1和VMnet8,其中VMnet8对应着我使用的NAT模式,因此查看一下它的NAT设置详情。

         几个关键的属性已经标了出来,由于Linux虚拟机是靠本机来转发网络请求,因此网关就成为重要的属性了。我们再去网卡配置里添加这几个对应的属性:

IPADDR=192.168.190.129 //需要修改为固定IP
NETMASK=255.255.255.0
GATEWAY=192.168.190.2
DNS1=8.8.8.8
DNS2=8.8.4.4

        这次重启网卡后再ping百度就通了。如果没有解决的话,还有个终极方法,把Linux虚拟机的网卡移除再加入重置一下设置。

1.3 防火墙和SELinux关闭

        部署服务肯定要给本机访问的,所以要把相关的安全措施关闭,更稳妥的方式其实是开放端口,但由于只是用于本机学习,就不整那么麻烦了,直接全给他关了。

        先关闭防火墙,这个简单,调用以下命令:

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

//最后一步如果显示状态为“inactive(dead)”即为正常关闭

        SELinux需要修改/etc/selinux/config中“SELINUX=disabled”,然后重启服务器后生效。

2. 服务安装

2.1 ElasticSearch

        ES的安装流程就略显复杂些,我们需要解决几个问题。由于ES的安全策略不支持root账户直接启动,因此需要创建一个ES专用账户,且给予其最高权限。

        之后要修改ES的配置文件,主要需要修改下面几个属性,值得注意的是“inital_master_nodes”一定要修改成当前节点的名称,否则启动会找不到初始化主节点。

cluster.name: myes //集群名称

node.name: esnode-1 //当前节点名称

path.data: /home/esuser/elasticsearch/data //数据存放路径

path.logs: /home/esuser/elasticsearch/logs //日志存放路径

network.host: 0.0.0.0 //允许访问IP地址,设置为0.0.0.0才能允许其他机器访问

cluster.initial_master_nodes: ["esnode-1"] //集群初始主节点,一定要配置成节点名称,否则无法启动

gateway.recover_after_nodes: 1 //设置为集群节点数

        其次是ES依赖于较高版本的JDK,比如我用的7.5.0需要JDK11才能运行,而开发版本一般都是JDK1.8.0。不过这个问题也很好解决,ES一般都会自带JDK,我们只需要在启动程序中指定优先使用它的JDK即可:

# 将jdk修改为es中自带jdk的配置目录
export JAVA_HOME=/home/elasticsearch-7.5.0/jdk
export PATH=$JAVA_HOME/bin:$PATH

if [ -x "$JAVA_HOME/bin/java" ]; then
        JAVA="/home/elasticsearch-7.5.0/jdk/bin/java"
else
        JAVA=`which java`
fi

        最后需要配置几个参数,第一个是内存参数,因为ES依赖于Java环境启动,且非常消耗内存空间,因此要先修改ES目录下jvm的内存参数,且需要给用户指定足够的内存权限。

//修改ES对应Java内存大小
-Xms2g //初始内存
-Xmx2g //最大内存


//指定用户内存权限
cd /etc/sysctl.conf
vm.max_map_count=655360

        至此ElasticSearch就可以正常启动了。

2.2 Kibana

        Kibana也需要一个专用用户和权限,流程和ES差不多。需要修改一下配置文件:

server.port: 5601
#ip地址,0.0.0.0表示可远程访问
server.host: "0.0.0.0"
# 服务名
server.name: "kibana-service"
# elasticsearch地址
elasticsearch.hosts: ["http://127.0.0.1:9200"]
# 请求elasticsearch超时时间,默认为30000
elasticsearch.requestTimeout: 100000

2.3 RabbitMQ

        RabbitMQ依赖于Erlang,因此需要先安装Erlang,且要使用对应的版本,具体可以自行搜索。本文基于RabbitMQ 3.8.1 + Erlang 23.2.7。

        将两个服务rpm安装包下载好拉到服务器去,执行以下语句即可。

//安装erlang
rpm -ivh erlang-23.2.7-2.el7.x86_64.rpm

yum -y install erlang


//安装RabbitMQ
//RabbitMQ依赖于Erlang和socat,需要事先安装好
yum -y install socat

rpm -ivh rabbitmq-server-3.8.14-1.el7.noarch.rpm

yum install -y rabbitmq-server


//启动RabbitMQ可视化界面
rabbitmq-plugins enable rabbitmq_management

        安装好后,RabbitMQ会自动生成systemctl服务,因此可以直接调用“systemctl start rabbitmq-server”来启动。 启动后在本机访问一下15672端口,如果能正常显示管理登录界面即为安装成功。

        RabbitMQ自带一个Guest用户,但此用户只能服务所在的机器登录,因此我们还要为本机创建一个登录账户,并给予他权限:

//添加用户
rabbitmqctl add_user 用户名 密码

eg:
rabbitmqctl add_user root 123456

//设置权限
rabbitmqctl set_user_tags 用户名 角色

eg:
rabbitmqctl set_user_tags root administrator

//设置资源权限(授予访问虚拟机根节点的所有权限)
rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"

eg:
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"

        权限分为6类:Administrator、Monitoring、Policymaker、Management、Impersonator、None。我们直接拉满Admin即可,就能正常登录了。

3. 开机自启动

        开机自启主要靠systemctl注册服务并设置自启动,或是chkconfig + service设置启动服务这两种方式。

        systemctl相关的所有初始化系统服务都会放在/usr/lib/systemd/system下,用户可以新建***.service并设置自启动。相关指令如下:

systemctl enable ***.service //自启动
systemctl start ***.service //启动服务
systemctl status ***.service //查看服务状态

        而chkconfig相关的系统服务脚本会放在/etc/init.d下,再通过chkconfig --add加入开机启动脚本。下面再具体介绍。

3.1 MySQL

        MySQL在安装完毕后,会自动生成mysqld.service服务,直接调用“systemctl enable mysqld.service”就可以设为开机自启,“systemctl start mysqld.service”启动服务再看一下status,如果为“active”即为启动成功。

3.2 Redis

        修改redis.conf中“daemonize yes”将其设为守护进程,这样才能在后台启动。创建service系统服务并启动,需要指定redis-server启动的客户端,以及对应的配置文件。记得创建好后调用下“systemctl daemon-reload”重置服务。

[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /home/redis-5.0.8/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

3.3 Nacos

        创建service系统服务,需要指定nacos启动脚本的地址,以及单机启动的参数。

[Unit]
Description=nacos
After=network.target
[Service]
Type=forking
User=root
ExecStart=/home/nacos/bin/startup.sh -m standalone
ExecReload=/home/nacos/bin/shutdown.sh
ExecStop=/home/nacos/bin/shutdown.sh
Restart=on-failure
PrivateTmp=true
[Install]
WantedBy=multi-user.target

3.4 ElasticSearch

         创建service,指定ES启动脚本目录。需要注意的是,由于ES启动需要非root账户,因此要在文件中显式指定User为我们创建的用户,否则启动会报错。且由于非root账户的文件权限不足,启动也有可能报相关的错误,因此最好是给予ES相关目录最高权限,使用“chmod -R 777”即可。

[Unit]
Description=elasticsearch
After=network.target

[Service]
Type=forking
User=esuser
ExecStart=/home/elasticsearch-7.5.0/bin/elasticsearch -d
PrivateTmp=true
# 指定此进程可以打开的最大文件数
LimitNOFILE=65535
# 指定此进程可以打开的最大进程数
LimitNPROC=65535
# 最大虚拟内存
LimitAS=infinity
# 最大文件大小
LimitFSIZE=infinity
# 超时设置 0-永不超时
TimeoutStopSec=0
# SIGTERM是停止java进程的信号
KillSignal=SIGTERM
# 信号只发送给给JVM
KillMode=process
# java进程不会被杀掉
SendSIGKILL=no
# 正常退出状态
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

3.5 Kibana

        Kibana通过创建自启动脚本的方式来实现,所有自启动脚本都会放在/etc/init.d目录下,并调用“chkconfig --add kibana”将脚本加入自启动服务中。与ES启动相同,Kibana也需要指定特殊的用户,以及给予权限,因此启动脚本如下:

#chkconfig: 345 63 37
#description: kibana
#processname:kibana-7.6.2

export KIBANA_HOME=/home/kibana-7.5.0-linux-x86_64
case $1 in
        start)
                su esuser<<!
                cd $KIBANA_HOME
                ./bin/kibana -p pid &
                exit
!
                echo "kibana is started"
                ;;
        stop)
                pid=`cat $KIBANA_HOME/pid`
                kill -9 $pid
                echo "kibana is stopped"
                ;;
        restart)
                pid=`cat $KIBANA_HOME/pid`
                kill -9 $pid
                echo "kibana is stopped"
                sleep 5
                su esuser<<!
                cd $KIBANA_HOME
                ./bin/kibana -p pid &
                exit
!
                echo "kibana is started"
        ;;
    *)
        echo "start|stop|restart"
        ;;
esac
exit 0

        su esuser便是切换用户的指令,需要格外注意。

3.6 RabbitMQ

        安装好后会自动生成systemctl服务,直接调用“systemctl enable rabbitmq-server”即可。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值