在 CentOS 上部署 C++ 项目的标准流程
一 准备环境
sudo yum update -y && sudo yum groupinstall -y "Development Tools" && sudo yum install -y cmake gcc gcc-c++ make gitsudo dnf update -y && sudo dnf groupinstall -y "Development Tools" && sudo dnf install -y cmake gcc gcc-c++ make gitsudo yum install -y openssl-devel(或 sudo dnf install -y openssl-devel)sudo yum install -y zlib-devel(或 sudo dnf install -y zlib-devel)sudo yum install -y boost-devel(或 sudo dnf install -y boost-devel)sudo yum install -y pcre pcre-develsudo yum install -y centos-release-scl scl-utils-buildsudo yum install -y devtoolset-7-gcc.x86_64scl enable devtoolset-7 bash(当前会话生效)二 获取与构建
git clone <repo-url> && cd <project>mkdir -p build && cd buildcmake .. && make -j$(nproc)make -j$(nproc)g++ -O2 -o myapp main.cppg++ your_source.cpp -o your_app -lboost_system -lssl -lcrypto -lzsudo ldconfig三 运行与验证
chmod +x your_app./your_appgdb ./your_appvalgrind --leak-check=full ./your_appexport MY_VAR=value~/.bashrc 或 /etc/profile 并执行 source ~/.bashrc四 生产环境部署
创建服务文件:`sudo tee /etc/systemd/system/myapp.service <<‘EOF’ [Unit] Description=My C++ Application After=network.target
[Service] Type=simple User=myapp Group=myapp ExecStart=/opt/myapp/bin/myapp WorkingDirectory=/opt/myapp Restart=always Environment=MY_VAR=value
[Install] WantedBy=multi-user.target EOF`
启用与启动:
sudo systemctl daemon-reloadsudo systemctl enable --now myappsudo systemctl status myapp、sudo systemctl restart myappFROM centos:7
RUN yum update -y && \
yum groupinstall -y "Development Tools" && \
yum install -y cmake gcc gcc-c++ openssl-devel zlib-devel && \
yum clean all
WORKDIR /app
COPY . .
RUN mkdir -p build && cd build && cmake .. && make -j$(nproc)
CMD ["./build/myapp"]
docker build -t myapp .docker run -d --name myapp_container -p 8080:8080 myapp/etc/ld.so.conf.d/myapp.conf:echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/myapp.conf && sudo ldconfigEnvironment=LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH五 常见问题与排查
sudo ldconfig,必要时在 CMakeLists.txt 或编译参数中补充 -I 与 -L/-lss -tulpen | grep 8080,或调整服务端口配置ExecStart 路径一致;必要时映射端口与挂载配置/数据卷