概述
在CentOS 7中,使应用程序开机自启是保证系统稳定性和应用可用性的重要步骤。让我们以两种典型的情况——通用版 MySQL 8 和通过编译安装方式安装的 NGINX——为例,详细讲解如何配置systemctl使它们能够开机自启动。
1. 通用版 MySQL 8
安装 MySQL 8
MySQL8安装包下载链接:https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.28-el7-x86_64.tar.gz
解压安装包,编辑好my.cnf配置文件后,直接指定配置文件初始化即可。
编辑my.cnf配置文件
代码语言:shell复制# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# innodb_buffer_pool_size = 4G
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
default-authentication-plugin=mysql_native_password
basedir=/data/mysql8
user=mysql
# 开启慢查询日志
slow_query_log=on
slow_query_log_file=/data/mysql8/slow-query.log
# 数据存储目录
datadir=/data/mysql8/data
socket=/data/mysql8/data/mysql.sock
log-error=/data/mysql8/logs/log_error.log
pid-file=/data/mysql8/data/mysql.pid
# 不区分大小写
lower_case_table_names = 1
character-set-server=utf8
wait_timeout=288000
group_concat_max_len=200000
sql_mode='NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES'
innodb_flush_log_at_trx_commit=2
sync_binlog=100000
log-bin = mysql-bin
binlog-format=ROW
server_id=1
expire_logs_days=7
port = 3307
#sql_mode='PIPES_AS_CONCAT,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE'
创建安装目录和授权
代码语言:shell复制mkdir /data/mysql8
cd /data/mysql8
mkdir data logs
chown -R mysql.mysql /data/mysql8
chmod 750 -R /data/mysql8
初始化MySQL
代码语言:shell复制bin/mysqld --defaults-file=/data/mysql8/my.cnf --initialize
启动MySQL
代码语言:shell复制bin/mysqld_safe --defaults-file=my.cnf &
登录MySQL
代码语言:shell复制bin/mysql -uroot -P3307 -S /data/mysql8/data/mysql.sock -p
# 这时候提示输入密码,输入上面在/data/mysql8/logs/log_error.log中的密码
修改密码
代码语言:shell复制ALTER USER root@localhost IDENTIFIED BY 'your_password';
use mysql;
update user set host='%' where user='root';
## 刷新权限
flush privileges;
修改用户密码加密规则并更新密码
代码语言:shell复制ALTER USER 'root'@'%' IDENTIFIED BY 'your_password' PASSWORD EXPIRE NEVER; #修改加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password'; #更新一下用户的密码
FLUSH PRIVILEGES; #刷新权限
使用 systemctl 管理 MySQL 8
新建systemctl配置文件
使用以下命令将刚刚安装的 MySQL 8 注册为一个 systemd 服务
创建一个 systemd 的 service 文件来管理 MySQL 8。在 /usr/lib/systemd/system/
目录下创建一个 mysql8.service
文件。
vim /usr/lib/systemd/system/mysql8.service
添加以下内容到 mysql8.service
文件中:
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/data/mysql8/bin/mysqld_safe --defaults-file=/data/mysql8/my.cnf
ExecStop=/data/mysql8/bin/mysqladmin shutdown -uroot -P3307 -S /data/mysql8/data/mysql.sock -p'your_password'
LimitNOFILE = 5000
#Restart=on-failure
#RestartPreventExitStatus=1
#PrivateTmp=false
启用并启动 MySQL 8 服务
代码语言:shell复制systemctl enable mysql8.service # 启用自启
systemctl start mysql8.service # 手动启动服务
systemctl stop mysql8.service # 手动停止服务
现在,MySQL 8 已经被配置成为系统服务,并且会在系统启动时自动运行。
验证 MySQL 8 是否自启成功
代码语言:shell复制systemctl is-enabled mysql8.service
如果输出结果为 enabled
,表示 MySQL 8 已经配置为自启动服务。
2. 编译安装的 NGINX
安装 NGINX
在使用编译安装方式安装 NGINX 时,默认情况下通常不会自动将 NGINX 加入系统服务中。这就需要手动配置systemctl来管理NGINX服务。
使用 systemctl 管理 NGINX
创建 NGINX 的启动脚本
创建一个 systemd 的 service 文件来管理 NGINX。在 /usr/lib/systemd/system/
目录下创建一个 nginx.service
文件。
vim /usr/lib/systemd/system/nginx.service
添加以下内容到 nginx.service
文件中:
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
这里假设NGINX的安装路径为 /usr/local/nginx
,请根据你的实际安装路径修改。
启用并启动 NGINX 服务
代码语言:shell复制systemctl enable nginx.service # 启用自启
systemctl start nginx.service # 手动启动服务
systemctl stop nginx.service # 手动停止服务
NGINX现在已被配置为系统服务,会在系统启动时自动运行。
验证 NGINX 是否自启成功
代码语言:shell复制systemctl is-enabled nginx.service
如果输出结果为 enabled
,表示 NGINX 已经配置为自启动服务。
总结
通过以上步骤,我们详细了解了如何使用systemctl管理两种不同方式安装的应用程序(MySQL 8 和 NGINX)的自启动设置。在CentOS 7中,这是确保服务在系统启动时自动运行的重要步骤,以确保系统的稳定性和可用性。
我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!