linux【centos 8】mysql5.7,nginx1.19.6,redis5.0.7, openjdk8,springboot jar 安装及开机自启动

本文详细介绍了如何通过创建启动脚本和配置服务来实现系统中Java应用、Redis、Nginx和MySQL的优雅开机自启,同时提供了一种新型的非暴力自启方法,以防止CPU和内存资源过度消耗。

说在前面

本篇文章,开机自启用了两种方法,一种为暴力开机自启 ,脚本较少,一种为服务自启

注意: 经过测试发现暴力开机自启,有可能会进入循环启动,造成cpu 内存爆掉. 所以不建议此方法,如果要使用,请在脚本中加入判断(如果已经启动,则跳过该条命令)

暴力开机自启

在 /etc/profile.d/ 目录下创建 xx.sh文件即可
xx.sh文件创建方法

vim /etc/profile.d/xx.sh

xx.sh内容:

# !/bin/bash
## 下面开始写你需要执行的任务,比如我要启动jar
# nohup java -jar /www/sst-wj/server/PAP-army.jar  >/dev/null 2>&1 &
## 比如我要启动redis
# /usr/local/redis/bin/redis-server  /usr/local/redis/redis.conf

脚本

在/etc/init.d/目录下创建 redis,nginx,mysqld(这个一般在安装好后就有了),等的文件,文件内容就是脚本

创建好后, 执行

chmod 775 /etc/init.d/redis(nginx/mysqld)

chkconfig nginx on

至于一些注意事项,请看具体的软件安装分目录

mysql

下载

官网下载mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
地址:

https://downloads.mysql.com/archives/community/

在这里插入图片描述
如果进去是8的版本
在这里插入图片描述
可以进行选择版本

安装

tar -zxvf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
cd /usr/local/
ln -s mysql-5.7.32-linux-glibc2.12-x86_64 mysql
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
chown -R mysql:mysql ./
./bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
./support-files/mysql.server start
cp support-files/mysql.server /etc/init.d/mysqld

开机启动

chkconfig --add mysqld

chkconfig mysqld on

环境变量设置

vi /etc/profile

末尾添加:

export PATH=$PATH:/usr/local/mysql/bin

刷新

 source /etc/profile

连接mysql,并修改密码
密码是初始密码

mysql -u root -p

alter user 'root'@'localhost' identified by '密码';

use mysql;

update user set user.Host='%' where user.User='root';

select user,host from user;
# 刷新权限
flush privileges;

mysql 简单配置
/etc/my.cnf

[mysqld]
port=3306
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
user=mysql
max_connections=151
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
 
# 设置忽略大小写
lower_case_table_names = 1
 
# 指定编码
character-set-server=utf8
 
collation-server=utf8_general_ci
 
# 开启ip绑定  0.0.0.0时可以进行远程连接
bind-address = 0.0.0.0
 
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
 
#指定客户端连接mysql时的socket通信文件路径
[client]
socket=/usr/local/mysql/mysql.sock
 
default-character-set=utf8

redis

安装

  1. redis.tar.gz 下载好后放在 /usr/local
  2. yum install gcc -c++ 如果gcc已经安装过了 ,则不必
  3. cd redis
  4. make
  5. make PREFIX=/usr/local/redis install
  6. cd ./redis/bin
  7. ./redis.server redis.conf

开机自启

暴力开启方法的参照-说在前面之暴力开机自启

脚本

  1. 设置redis.conf中daemonize为yes,确保守护进程开启。
  2. 编写开机自启动脚本
vim /etc/init.d/redis

脚本内容: 注意 文件头部的三个注释不能删掉

#!/bin/sh
# chkconfig: 2345 10 90  
# description: Start and Stop redis   
  
PATH=/util/redis-5.0.7/bin   #找到本机安装redis后,存放redis命令的目录  
REDISPORT=6379                            #redis的默认端口, 要和下文中的redis.conf中一致
EXEC=/util/redis-5.0.7/bin/redis-server           #redis服务端的命令
REDIS_CLI=/util/redis-5.0.7/bin/redis-cli         #redis客户端的命令  这两个一般都在 PATH目录下
PIDFILE=/util/redis-5.0.7/redis.pid                #reids的进程文件生成的位置
CONF="/util/redis-5.0.7/bin/redis.conf"           #redis的配置文件所在的目录 
 
case "$1" in   
        start)   
                if [ -f $PIDFILE ]   
                then   
                        echo "$PIDFILE exists, process is already running or crashed."  
                else  
                        echo "Starting Redis server..."  
                        $EXEC $CONF   
                fi   
                if [ "$?"="0" ]   
                then   
                        echo "Redis is running..."  
                fi   
                ;;   
        stop)   
                if [ ! -f $PIDFILE ]   
                then   
                        echo "$PIDFILE exists, process is not running."  
                else  
                        PID=$(cat $PIDFILE)   
                        echo "Stopping..."  
                       $REDIS_CLI -p $REDISPORT  SHUTDOWN    
                        sleep 2  
                       while [ -x $PIDFILE ]   
                       do  
                                echo "Waiting for Redis to shutdown..."  
                               sleep 1  
                        done   
                        echo "Redis stopped"  
                fi   
                ;;   
        restart|force-reload)   
                ${0} stop   
                ${0} start   
                ;;   
        *)   
               echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2  
                exit 1  
esac
chmod 775 /etc/init.d/redis

chkconfig redis on

nginx

安装

  1. nginx下载
  2. 同样 如果没有gcc 请安装:
yum install gcc-c++
 yum install -y pcre pcre-devel
 yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
 tar -zxvf nginx.tar.gz
 cd /usr/local/nginx
/configure --prefix=/usr/local/nginx
 make
 make install
 vim /usr/local/nginx/conf/nginx.conf
  1. 关闭防火墙
    若想使用外部主机连接上虚拟机访问Nginx,需要关闭虚拟机的防火墙。

    centOS6及以前版本使用命令: systemctl stop iptables.service

    centOS7关闭防火墙命令: systemctl stop firewalld.service

开机自启

其他内容同redis的,修改下放在/etc/init.d/目录下即可,这里贴出脚本

脚本

#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
#              It has a lot of features, but it's not for everyone.
# processname: nginx
# pidfile: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/usr/local/nginx/logs/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
.  /etc/rc.d/init.d/functions
# Source networking configuration.
.  /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
   echo "nginx already running...."
   exit 1
fi
   echo -n $"Starting $prog: "
   daemon $nginxd -c ${nginx_config}
   RETVAL=$?
   echo
   [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
   return $RETVAL
}
# Stop nginx daemons functions.
stop() {
        echo -n $"Stopping $prog: "
        killproc $nginxd
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/webserver/nginx/logs/nginx.pid
}
 
reload() {
    echo -n $"Reloading $prog: "
    #kill -HUP `cat ${nginx_pid}`
    killproc $nginxd -HUP
    RETVAL=$?
    echo
}
# See how we were called.
case "$1" in
start)
        start
        ;;
stop)
        stop
        ;;
reload)
        reload
        ;;
restart)
        stop
        start
        ;;
status)
        status $prog
        RETVAL=$?
        ;;
*)
        echo $"Usage: $prog {start|stop|restart|reload|status|help}"
        exit 1
esac
exit $RETVAL

openjdk

安装

第一步当然是下载openjdk8啦

下载好后,

mkdir /usr/local/java

解压

tar zxvf jdk

修改环境变量

vim /etc/profile

环境变量内容:

export JAVA_HOME=/root/util/jdk1.8.0_172
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:/usr/local/nginx/sbin
export PATH=$PATH:/root/util/redis-5.0.7/bin
export PATH=$PATH:/usr/local/mysql/bin

各位根据自己的目录修改即可

刷新环境变量

source /etc/profile

开机自启springboot jar包

步骤同说在前面之暴力开机自启

具体sh脚本

# !/bin/bash
# program
# file preview server star
export JAVA_HOME=/root/util/jdk1.8.0_172
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export JRE=$JAVA_HOME/jre
nohup java -jar /www/sst-wj/server/PAP-army.jar  >/dev/null 2>&1 &


注:::: 如果少了这部分

  >/dev/null 2>&1 &

linux重启后 会一直提示nohup相关的warning,且 命令行不出现

普通sh脚本 (推荐)

昨天用的暴力自启的方法,今天下午就发现有好多jar服务,服务器内存 cpu爆了%_%,难受住

这里贴上新的开机自启方法

在etc/init.d/目录下 创建一个xx文件
内容为:

#!/bin/sh
# chkconfig: 2345 85 15
# description:auto_run:sst.jar
export JAVA_HOME=/root/util/jdk1.8.0_172
export PATH=${JAVA_HOME}/bin:${PATH}
JAR_PATH=/www/sst-wj/server
APP_NAME="PAP-army.jar"
usage() {
    echo "case: sh run.sh [start|stop|restart|status]"
    exit 1
}
isExist(){
  pid=`ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}'`
  if [ -z "${pid}" ]; then
    return 1
  else
    return 0
  fi    
}
start(){
  isExist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is already running,pid = ${pid}."
  else
	cd ${JAR_PATH}
    nohup java -jar "${JAR_PATH}/${APP_NAME}" > /www/sst-wj/logs/sst_console.log 2>&1 &
    echo "${APP_NAME} start success"
  fi    
}
stop(){
   isExist
   if [ $? -eq "0" ]; then
     kill -9 ${pid}
   else
     echo "${APP_NAME} is not running"
   fi    
}

status(){
  isExist
   if [ $? -eq "0" ]; then
     echo "${APP_NAME} is running. Pid is ${pid}"
   else
     echo "${APP_NAME} is not running"
   fi  
}

restart(){
  stop
  start
}

case "$1" in
"start")
  start
  ;;
"stop")
  stop
  ;;
"status")
  status
  ;;
"restart")
  restart
  ;;
*)
usage
;;
esac

创建好后,请测试脚本是否可用

/etc/init.d/xx start

如果正常 请继续

chmod +x /etc/init.d/xx

迂回暴力开启

继续在/etc/profile.d/目录下创建一个sh文件

#!/bin/bash
/etc/init.d/sst start

reboot 测试 正常 V_V

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qlanto

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值