在 CentOS 上部署 C++ 服务,通常可以分为 编译构建、运行方式、进程管理、开机自启、常见运维 几个部分。下面给你一套通用且实战可用的方案。
sudo yum install -y gcc gcc-c++ make cmake git
查看版本:
g++ --version
#include <iostream>
int main() {
while (true) {
std::cout << "service running..." << std::endl;
sleep(5);
}
}
g++ -O2 -o myservice main.cpp
或 CMake:
mkdir build && cd build
cmake ..
make
./myservice
nohup ./myservice > service.log 2>&1 &
查看:
ps -ef | grep myservice
sudo mkdir -p /opt/myservice
sudo cp myservice /opt/myservice/
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
sudo systemctl daemon-reload
sudo systemctl start myservice
sudo systemctl enable myservice
systemctl status myservice
journalctl -u myservice -f
systemctl restart myservice
查看依赖:
ldd myservice
若缺库:
sudo yum install -y <libname>
或设置:
export LD_LIBRARY_PATH=/opt/myservice/lib:$LD_LIBRARY_PATH
如果是:
libhv / drogon / poco / boost.asio防火墙放行:
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
systemd 管理journald 或文件-O2 -WallFROM centos:7
RUN yum install -y gcc-c++ make
COPY myservice /app/myservice
CMD ["/app/myservice"]
如果你愿意,可以告诉我:
我可以给你 完全定制化的部署方案。