Linux 服务管理 的完整指南

以下是 Linux 服务管理 的完整指南,涵盖服务安装、配置、监控及自动化实践,适用于服务器运维和云原生场景!



一、服务管理核心概念

1. 服务管理工具

工具特点适用场景
systemd现代初始化系统,支持并行启动、依赖管理、日志记录。服务器、云原生环境
init.d传统 SysV 初始化脚本,简单但功能有限。旧版 Linux 系统、容器化环境
systemd-cloud专为云服务器设计,支持自动注册实例、配置同步。AWS EC2、Azure VM、GCP Compute Engine

二、服务安装与配置

1. 使用 systemd 管理服务

示例:部署 Nginx

# 1. 安装 Nginx
sudo apt update && sudo apt install nginx -y

# 2. 创建 systemd 服务文件
sudo nano /etc/systemd/system/nginx.service

# 3. 服务文件内容
[Unit]
Description=Nginx Web Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/sbin/nginx
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

# 4. 重新加载配置并启动服务
sudo systemctl daemon-reload
sudo systemctl start nginx
sudo systemctl enable nginx  # 开机自启

示例:配置 MySQL 数据库

# 1. 安装 MySQL
sudo apt install mysql-server -y

# 2. 配置 systemd 服务(通常已内置)
sudo systemctl start mysql
sudo systemctl enable mysql

2. 使用 init.d 脚本(传统方法)

示例:自定义服务

# 1. 创建脚本
sudo nano /etc/init.d/my-service

# 2. 脚本内容
#!/bin/bash
case "$1" in
  start)
    echo "Starting my-service..."
    /usr/bin/my-service &
    ;;
  stop)
    echo "Stopping my-service..."
    pkill my-service
    ;;
esac
exit 0

# 3. 赋予执行权限并添加服务链接
sudo chmod +x /etc/init.d/my-service
sudo update-rc.d my-service defaults

三、服务控制命令

1. systemd 命令

命令作用示例
systemctl start启动服务systemctl start nginx
systemctl stop停止服务systemctl stop mysql
systemctl restart重启服务systemctl restart postgresql
systemctl status查看服务状态systemctl status httpd
systemctl enable开机自启systemctl enable cron
systemctl disable取消开机自启systemctl disable firewalld

2. init.d 脚本控制

sudo service my-service start   # 启动
sudo service my-service stop    # 停止
sudo service my-service restart  # 重启

四、服务监控与日志

1. 实时监控服务状态

# 使用 systemctl 状态查看
systemctl status nginx

# 查看日志(systemd)
journalctl -u nginx -n 100  # 显示最近 100 行日志

# 查看实时日志
journalctl -u nginx -f

2. 日志管理

# 配置日志轮转(logrotate)
sudo nano /etc/logrotate.d/nginx

# 示例配置
/var/log/nginx/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 root adm
    postrotate
        systemctl reload nginx >/dev/null 2>&1 || true
    endscript
}

五、安全与权限

1. 服务文件权限

# 设置服务文件权限(仅允许 root 执行)
sudo chmod 600 /etc/systemd/system/my-service.service

2. 防火墙配置

# 开放 Nginx 端口(ufw)
sudo ufw allow 'Nginx Full'

# 使用 firewalld(RHEL/CentOS)
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload

六、自动化与云原生集成

1. 定时任务(Cron)

# 添加定时任务(每小时检查服务状态)
sudo crontab -e
* * * * * systemctl status nginx >/dev/null 2>&1 || sudo systemctl restart nginx

2. systemd Timers

# 创建定时器文件
sudo nano /etc/systemd/system/my-timer.service

# 内容
[Unit]
Description=My Timer Service
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/my-script.sh

# 创建定时器
sudo nano /etc/systemd/system/my-timer.timer

# 内容
[Unit]
Description=Run My Script Every Hour
OnCalendar=*:00:00

[Timer]
OnCalendar=*:00:00
Persistent=true

[Install]
WantedBy=timers.target

# 启用定时器
sudo systemctl daemon-reload
sudo systemctl enable my-timer.timer
sudo systemctl start my-timer.timer

3. 云平台集成(AWS EC2)

# 使用 systemd-cloud 注册实例
sudo systemctl daemon-reload
sudo systemctl enable systemd-cloud
sudo systemctl start systemd-cloud

# 自动配置 AWS 实例标签、安全组
sudo aws configure

七、常见问题排查

1. 服务无法启动

• 检查日志:journalctl -u service-name -b(查看启动失败日志)。
• 依赖问题:确保 After=Requires= 正确配置。
• 端口冲突:使用 netstat -tuln | grep port 检查端口占用。

2. 服务重启失败

• 配置错误:验证 ExecStart 路径和参数。
• 资源限制:检查内存和 CPU 使用(systemctl status)。

3. 日志过大

• 日志轮转:配置 logrotatejournalctl 自动清理。


八、实战场景

场景 1:部署 WordPress + MySQL

# 1. 安装服务
sudo apt install wordpress mysql-server php-fpm -y

# 2. 配置 systemd 服务
sudo systemctl start mysql
sudo systemctl enable mysql
sudo systemctl start php7.4-fpm
sudo systemctl enable php7.4-fpm

# 3. 配置 Nginx 虚拟主机
sudo nano /etc/nginx/sites-available/wordpress
# 添加配置内容...
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo systemctl reload nginx

场景 2:自动化备份服务

# 1. 创建备份脚本
sudo nano /usr/local/bin/backup.sh
# 添加内容(使用 rsync 或 tar)
sudo chmod +x /usr/local/bin/backup.sh

# 2. 创建 systemd 服务
sudo nano /etc/systemd/system/backup.service
# 配置内容...
sudo systemctl enable backup.timer
sudo systemctl start backup.timer

九、工具推荐

  1. Systemd Generator:自动生成服务文件(systemd-generator)。
  2. Prometheus + Node Exporter:监控服务资源使用。
  3. Ansible:批量管理服务配置(如 ansible-service 模块)。

通过以上指南,你可以高效管理 Linux 服务,构建稳定、安全的服务器环境,并与云原生工具链无缝集成!如果有具体需求(如 Kubernetes 服务编排),欢迎进一步讨论。 🐧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

独隅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值