说在前面
本篇文章,开机自启用了两种方法,一种为暴力开机自启 ,脚本较少,一种为服务自启
注意: 经过测试发现暴力开机自启,有可能会进入循环启动,造成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
安装
- redis.tar.gz 下载好后放在 /usr/local
- yum install gcc -c++ 如果gcc已经安装过了 ,则不必
- cd redis
- make
- make PREFIX=/usr/local/redis install
- cd ./redis/bin
- ./redis.server redis.conf
开机自启
暴力开启方法的参照-说在前面之暴力开机自启
脚本
- 设置redis.conf中daemonize为yes,确保守护进程开启。
- 编写开机自启动脚本
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
安装
nginx下载- 同样 如果没有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
-
关闭防火墙
若想使用外部主机连接上虚拟机访问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
本文详细介绍了如何通过创建启动脚本和配置服务来实现系统中Java应用、Redis、Nginx和MySQL的优雅开机自启,同时提供了一种新型的非暴力自启方法,以防止CPU和内存资源过度消耗。

459

被折叠的 条评论
为什么被折叠?



