温馨提示×

centos怎么部署c++服务

小樊
38
2026-09-15 03:56:58
栏目: 编程语言

在 CentOS 上部署 C++ 服务,通常分为 编译构建 → 服务化运行 → 进程管理/守护 → 对外访问 几个步骤。下面给你一套通用、可落地的方案,从简单到规范。


一、准备编译环境

1. 安装基础工具

sudo yum groupinstall "Development Tools" -y
sudo yum install cmake gcc-c++ make git -y

2. 检查版本

g++ --version
cmake --version

二、编译 C++ 服务

方式 1:直接用 g++

g++ -O2 -std=c++17 main.cpp -o myserver -lpthread

方式 2:CMake(推荐)

mkdir build && cd build
cmake ..
make -j4

生成的可执行文件例如:

/build/myserver

三、运行 C++ 服务(临时)

./myserver

如果是网络服务,监听端口:

// 示例
listen(sockfd, 128);

测试:

curl http://localhost:8080

四、后台运行(不推荐长期使用)

nohup ./myserver > server.log 2>&1 &

查看:

ps aux | grep myserver

⚠ 缺点:机器重启、崩溃不会自动恢复


五、使用 systemd 托管(✅ 推荐)

1. 放置可执行文件

sudo mkdir -p /opt/myserver
sudo cp myserver /opt/myserver/

2. 创建 service 文件

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

示例:

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

[Service]
ExecStart=/opt/myserver/myserver
WorkingDirectory=/opt/myserver
Restart=always
User=www
Environment=ENV=production

[Install]
WantedBy=multi-user.target

3. 启动服务

sudo systemctl daemon-reload
sudo systemctl enable myserver
sudo systemctl start myserver

4. 查看状态

systemctl status myserver
journalctl -u myserver -f

六、防火墙与端口(CentOS 7)

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

七、生产部署建议(重要)

✅ 推荐方案

  • CentOS 7/8 + systemd
  • 使用 CMake + Release 编译
  • 日志:spdlog / glog
  • 配置:JSON / YAML
  • 多进程/线程模型

❌ 不推荐

  • 使用 screen
  • 手动 nohup
  • 在 root 下直接跑服务

八、容器化部署(进阶)

如果你以后想标准化部署:

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

九、常见坑

问题 原因
启动后立刻退出 没处理 SIGTERM
端口占用 之前进程没关
重启不生效 没 systemctl daemon-reload
库找不到 动态库未安装

十、如果你愿意,我可以继续帮你

你可以告诉我:

  1. CentOS 版本(7 / 8 / Stream)
  2. 服务类型(HTTP / RPC / TCP)
  3. 是否用框架(如 asio / muduo / brpc / grpc)
  4. 是否要 Docker / Kubernetes

我可以直接给你 完整示例 + systemd 配置 + 编译脚本。

0 踩