温馨提示×

linux c++怎样部署服务

小樊
45
2026-09-20 10:35:13
栏目: 编程语言

在 Linux 上用 C++ 部署服务,通常包含:编写服务程序 → 编译 → 配置运行方式 → 守护进程/自启动 → 日志与监控。下面按常见做法一步步说明。


一、编写 C++ 服务程序

一个最简单的“服务”示例(持续运行):

// server.cpp
#include <iostream>
#include <unistd.h>

int main() {
    while (true) {
        // 模拟服务逻辑
        sleep(5);
        std::cout << "service running..." << std::endl;
    }
    return 0;
}

编译:

g++ server.cpp -o myservice -O2

二、让程序在后台运行(基础方式)

1. 使用 nohup

nohup ./myservice > service.log 2>&1 &

查看进程:

ps aux | grep myservice

⚠️ 缺点:服务器重启不会自动启动


三、使用 systemd(推荐 ✅)

1. 创建服务文件

sudo vim /etc/systemd/system/myservice.service

示例内容:

[Unit]
Description=My C++ Service
After=network.target

[Service]
ExecStart=/opt/myservice/myservice
WorkingDirectory=/opt/myservice
User=appuser
Restart=always
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

2. 部署程序

sudo mkdir -p /opt/myservice
sudo cp myservice /opt/myservice/
sudo useradd -r -s /bin/false appuser
sudo chown -R appuser:appuser /opt/myservice

3. 启动并设置开机自启

sudo systemctl daemon-reload
sudo systemctl start myservice
sudo systemctl enable myservice

4. 查看状态与日志

systemctl status myservice
journalctl -u myservice -f

这是生产环境最推荐方式


四、如果是网络服务(HTTP / TCP)

常见做法

  • 使用 socket / epoll
  • 使用库:
    • libuv
    • Boost.Asio
    • POCO
    • muduo(高性能)

监听端口示例(简化)

int sock = socket(AF_INET, SOCK_STREAM, 0);
bind(sock, ...);
listen(sock, 128);

部署时记得:

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

五、容器化部署(Docker,进阶 ✅)

Dockerfile 示例

FROM ubuntu:22.04
COPY myservice /app/myservice
WORKDIR /app
CMD ["./myservice"]

构建运行:

docker build -t myservice .
docker run -d --name myservice myservice

适合:

  • 微服务
  • 多环境一致性

六、常见生产建议

✅ 使用非 root 用户运行
✅ 日志输出到 stdout(systemd / docker 管理)
✅ 信号处理(SIGTERM 优雅退出)
✅ 配置文件外置
✅ 监控(Prometheus / health check)


七、你可以告诉我

我可以给你更具体的方案,比如:

  • TCP / HTTP 服务
  • 高并发服务
  • 微服务架构
  • 嵌入式 Linux
  • systemd + 热更新

你现在的服务是 什么类型

0