温馨提示×

centos怎样部署c++服务

小樊
33
2026-10-03 01:35:21
栏目: 编程语言

在 CentOS 上部署 C++ 服务,通常可以分为 编译构建、运行方式、进程管理、开机自启、常见运维 几个部分。下面给你一套通用且实战可用的方案。


一、准备工作

1. 安装基础工具

sudo yum install -y gcc gcc-c++ make cmake git

查看版本:

g++ --version

二、编译 C++ 服务

1. 简单示例(main.cpp)

#include <iostream>
int main() {
    while (true) {
        std::cout << "service running..." << std::endl;
        sleep(5);
    }
}

2. 编译

g++ -O2 -o myservice main.cpp

或 CMake:

mkdir build && cd build
cmake ..
make

三、运行 C++ 服务(基础方式)

直接运行

./myservice

后台运行

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

查看:

ps -ef | grep myservice

四、使用 systemd(推荐 ✅)

1. 放置程序

sudo mkdir -p /opt/myservice
sudo cp myservice /opt/myservice/

2. 创建 service 文件

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

示例:

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

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

[Install]
WantedBy=multi-user.target

3. 启动并设置开机自启

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

4. 常用命令

systemctl status myservice
journalctl -u myservice -f
systemctl restart myservice

五、依赖管理(常见坑)

1. 动态库问题

查看依赖:

ldd myservice

若缺库:

sudo yum install -y <libname>

或设置:

export LD_LIBRARY_PATH=/opt/myservice/lib:$LD_LIBRARY_PATH

六、网络服务(Socket / HTTP)

如果是:

  • TCP 服务:监听端口(如 8080)
  • HTTP 服务:可用 libhv / drogon / poco / boost.asio

防火墙放行:

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

七、生产环境建议 ✅

  • ✅ 用 systemd 管理
  • ✅ 日志走 journald 或文件
  • ✅ 用非 root 用户运行
  • ✅ 编译加 -O2 -Wall
  • ✅ 使用 cmake 管理工程
  • ✅ 容器化(Docker)更推荐

八、Docker 方式(进阶)

FROM centos:7
RUN yum install -y gcc-c++ make
COPY myservice /app/myservice
CMD ["/app/myservice"]

如果你愿意,可以告诉我:

  • 是 HTTP / TCP / 计算型服务
  • 是否用 CMake / 第三方库
  • CentOS 版本(7 / 8 / Stream)

我可以给你 完全定制化的部署方案。

0 踩