首页主机资讯C++项目在CentOS中如何部署

C++项目在CentOS中如何部署

时间2025-11-24 16:26:05发布访客分类主机资讯浏览816
导读:在 CentOS 上部署 C++ 项目的标准流程 一 准备环境 更新系统并安装基础工具与编译器: 对于 CentOS 7:sudo yum update -y && sudo yum groupinstall -y "...

在 CentOS 上部署 C++ 项目的标准流程


一 准备环境

  • 更新系统并安装基础工具与编译器:
    • 对于 CentOS 7sudo yum update -y & & sudo yum groupinstall -y "Development Tools" & & sudo yum install -y cmake gcc gcc-c++ make git
    • 对于 CentOS 8/Streamsudo dnf update -y & & sudo dnf groupinstall -y "Development Tools" & & sudo dnf install -y cmake gcc gcc-c++ make git
  • 安装常用依赖开发包(按需):
    • OpenSSL:sudo yum install -y openssl-devel(或 sudo dnf install -y openssl-devel
    • zlib:sudo yum install -y zlib-devel(或 sudo dnf install -y zlib-devel
    • Boost:sudo yum install -y boost-devel(或 sudo dnf install -y boost-devel
    • 其他库(如 PCRE):sudo yum install -y pcre pcre-devel
  • 多版本 GCC 场景(SCL):
    • 安装工具链:sudo yum install -y centos-release-scl scl-utils-build
    • 安装指定版本(如 devtoolset-7):sudo yum install -y devtoolset-7-gcc.x86_64
    • 启用:scl enable devtoolset-7 bash(当前会话生效)

二 获取与构建

  • 获取源码:git clone < repo-url> & & cd < project>
  • 使用 CMake(推荐):
    • 构建目录:mkdir -p build & & cd build
    • 生成与编译:cmake .. & & make -j$(nproc)
  • 使用 Makefilemake -j$(nproc)
  • 使用 g++ 直接编译(示例):g++ -O2 -o myapp main.cpp
  • 链接第三方库(示例):g++ your_source.cpp -o your_app -lboost_system -lssl -lcrypto -lz
  • 安装依赖库后建议刷新缓存:sudo ldconfig

三 运行与验证

  • 赋权并运行:
    • 赋权:chmod +x your_app
    • 运行:./your_app
  • 常见验证与调试:
    • 调试:gdb ./your_app
    • 内存检查:valgrind --leak-check=full ./your_app
  • 环境变量(如需要):
    • 临时:export MY_VAR=value
    • 持久化:写入 ~/.bashrc/etc/profile 并执行 source ~/.bashrc

四 生产环境部署

  • systemd 托管后台服务:
    • 创建服务文件:`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-reload
      • sudo systemctl enable --now myapp
      • 常用:sudo systemctl status myappsudo systemctl restart myapp
  • Docker 容器化(示例):
    • Dockerfile:
      FROM 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
  • 运行时库路径(如将库放在 /usr/local/lib):
    • 方式一:写入 /etc/ld.so.conf.d/myapp.confecho "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/myapp.conf & & sudo ldconfig
    • 方式二:在 systemd 中声明:Environment=LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

五 常见问题与排查

  • 找不到头文件或库:安装对应的 -devel 包,执行 sudo ldconfig,必要时在 CMakeLists.txt 或编译参数中补充 -I-L/-l
  • 版本不兼容:老系统默认 GCC 版本较旧,使用 SCL 启用高版本工具链(如 devtoolset-7
  • 权限与路径:服务运行用户需对可执行文件与日志目录具备相应权限;可执行文件与依赖库路径建议使用绝对路径
  • 端口占用:检查端口占用 ss -tulpen | grep 8080,或调整服务端口配置
  • 容器运行失败:确认容器内已安装依赖,且工作目录与 ExecStart 路径一致;必要时映射端口与挂载配置/数据卷

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: C++项目在CentOS中如何部署
本文地址: https://pptw.com/jishu/754577.html
CentOS环境下C++依赖如何解决 CentOS中Notepad如何进行版本升级

游客 回复需填写必要信息