温馨提示×

linux c++怎么部署服务

小樊
42
2026-07-05 19:41:06
栏目: 编程语言

在 Linux 上用 C++ 部署服务,通常包含 开发 → 编译 → 部署 → 运行 → 守护/自启 → 运维 几个阶段。下面给你一个常见、实用的完整流程,偏生产环境。


一、开发阶段(服务设计)

1️⃣ 服务类型

常见 C++ 服务类型:

  • 后台守护进程(daemon)
  • 网络服务(HTTP / RPC / TCP / gRPC)
  • 定时任务 / 计算服务

2️⃣ 技术选型(常见)

功能 常用方案
网络 epoll / libevent / asio / gRPC
日志 spdlog / glog
配置 json / yaml / ini
打包 CMake
守护 systemd
容器 Docker

二、编译构建(以 CMake 为例)

1️⃣ 示例 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(my_service)

set(CMAKE_CXX_STANDARD 17)

add_executable(my_service main.cpp)

2️⃣ 编译

mkdir build
cd build
cmake ..
make -j

生成:

my_service

三、部署到服务器

1️⃣ 目录结构(推荐)

/opt/my_service/
├── bin/
│   └── my_service        # 可执行文件
├── conf/
│   └── config.json
├── log/
└── run/

2️⃣ 拷贝文件

scp my_service user@server:/opt/my_service/bin/

或直接在服务器编译。


四、运行服务(手动测试)

cd /opt/my_service/bin
./my_service

✅ 确认:

  • 端口监听
  • 日志输出
  • 无崩溃

五、使用 systemd 守护服务(重点)

1️⃣ 创建 systemd 服务文件

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

2️⃣ 示例配置

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

[Service]
Type=simple
User=appuser
WorkingDirectory=/opt/my_service
ExecStart=/opt/my_service/bin/my_service
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

3️⃣ 启动服务

sudo systemctl daemon-reload
sudo systemctl start my_service
sudo systemctl enable my_service

4️⃣ 常用命令

systemctl status my_service
journalctl -u my_service -f

六、Docker 部署(可选但推荐)

1️⃣ Dockerfile 示例

FROM ubuntu:22.04

WORKDIR /app
COPY my_service /app/
COPY config.json /app/

CMD ["./my_service"]

2️⃣ 构建运行

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

✅ 适合:

  • 微服务
  • 云原生
  • 多环境一致性

七、常见运维问题

✅ 服务崩溃自动重启

  • systemd Restart=always
  • Docker restart: always

✅ 端口被占用

netstat -tunlp | grep 8080

✅ 权限问题

chmod +x my_service

✅ 后台运行(不推荐,仅临时)

nohup ./my_service > log.txt 2>&1 &

八、生产环境建议

✅ 使用 systemd / Docker
✅ 日志统一输出(journal / 文件)
✅ 配置与代码分离
✅ 使用非 root 用户运行
✅ 增加健康检查接口


九、如果你愿意,我可以帮你:

  • 写一个 最小可运行 C++ 服务示例
  • 给你 systemd + 日志 + 配置完整模板
  • 帮你设计 高并发网络服务架构
  • 指导 从开发到上线完整流程

你可以直接说:

“我想做一个 HTTP / TCP / gRPC 服务”
“我是新手,给个完整示例”
“我要用 Docker 部署”

0