在 CentOS 上部署 C++ 项目的实用流程
一 环境准备与依赖安装
sudo yum update -ysudo yum groupinstall -y "Development Tools"、sudo yum install -y cmake gitsudo yum install -y pcre pcre-devel zlib zlib-develsudo yum install -y libcurl-devel openssl-develsudo yum install -y boost-develsudo yum install -y centos-release-scl scl-utils-build devtoolset-7-gcc.x86_64scl enable devtoolset-7 bash(当前会话生效)二 获取代码与构建
git clone <repo-url> && cd <project>mkdir -p build && cd buildcmake .. && make -j$(nproc)g++ -O2 -o myapp main.cpp $(pkg-config --cflags --libs mylib)pkg-config 管理编译/链接参数:pkg-config --cflags --libs <库名>g++ -o app main.cpp -lboost_system -lssl -lcryptochmod +x myapp./myappgdb ./myappvalgrind --leak-check=full ./myapp三 生产环境运行与守护
sudo nano /etc/systemd/system/myapp.service[Unit]
Description=My C++ Application
After=network.target
[Service]
User=myuser
Group=mygroup
ExecStart=/opt/myapp/bin/myapp
Restart=always
Environment=MY_VAR=myvalue
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reloadsudo systemctl start myapp && sudo systemctl enable myappsystemctl status myapp、journalctl -u myapp -f/etc/profile、~/.bashrcexport PATH=/usr/local/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATHexport CPLUS_INCLUDE_PATH=/usr/local/include:$CPLUS_INCLUDE_PATHsource ~/.bashrcsudo firewall-cmd --zone=public --add-port=8080/tcp --permanentsudo firewall-cmd --reload四 容器化部署与交付
FROM centos:latest
RUN yum update -y && \
yum install -y g++ cmake libcurl-devel openssl-devel && \
yum clean all
WORKDIR /app
COPY . .
RUN g++ -O2 -o myapp main.cpp -lcurl -lssl -lcrypto
CMD ["./myapp"]
docker build -t myapp:latest .docker run -d --name myapp -p 8080:8080 myapp:latest五 常见问题与排查清单
libcurl-devel、openssl-devel、boost-devel)CPLUS_INCLUDE_PATH、LD_LIBRARY_PATH 或使用 pkg-configdevtoolset-7)firewall-cmd 放行端口,检查 systemctl status myapp 与 journalctlgdb 定位,使用 valgrind 检查内存泄漏make -j$(nproc) 提升编译速度,按项目需要添加编译优化与链接参数