Centos7安装MySQL8和NGINX并设置开启自启

2023-12-20 18:41:22 浏览数 (1)

概述

在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 文件。

代码语言:shell复制
vim /usr/lib/systemd/system/mysql8.service

添加以下内容到 mysql8.service 文件中:

代码语言:shell复制
[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 文件。

代码语言:shell复制
vim /usr/lib/systemd/system/nginx.service

添加以下内容到 nginx.service 文件中:

代码语言:shell复制
[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腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

0 人点赞