在 CentOS 上部署 C++ 服务,通常分为 编译构建 → 服务化运行 → 进程管理/守护 → 对外访问 几个步骤。下面给你一套通用、可落地的方案,从简单到规范。
sudo yum groupinstall "Development Tools" -y
sudo yum install cmake gcc-c++ make git -y
g++ --version
cmake --version
g++ -O2 -std=c++17 main.cpp -o myserver -lpthread
mkdir build && cd build
cmake ..
make -j4
生成的可执行文件例如:
/build/myserver
./myserver
如果是网络服务,监听端口:
// 示例
listen(sockfd, 128);
测试:
curl http://localhost:8080
nohup ./myserver > server.log 2>&1 &
查看:
ps aux | grep myserver
⚠ 缺点:机器重启、崩溃不会自动恢复
sudo mkdir -p /opt/myserver
sudo cp myserver /opt/myserver/
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
sudo systemctl daemon-reload
sudo systemctl enable myserver
sudo systemctl start myserver
systemctl status myserver
journalctl -u myserver -f
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
screennohup如果你以后想标准化部署:
FROM centos:7
RUN yum install -y gcc-c++
COPY myserver /app/myserver
CMD ["/app/myserver"]
| 问题 | 原因 |
|---|---|
| 启动后立刻退出 | 没处理 SIGTERM |
| 端口占用 | 之前进程没关 |
| 重启不生效 | 没 systemctl daemon-reload |
| 库找不到 | 动态库未安装 |
你可以告诉我:
我可以直接给你 完整示例 + systemd 配置 + 编译脚本。