C++项目在CentOS中如何部署
导读:在 CentOS 上部署 C++ 项目的标准流程 一 准备环境 更新系统并安装基础工具与编译器: 对于 CentOS 7:sudo yum update -y && sudo yum groupinstall -y "...
在 CentOS 上部署 C++ 项目的标准流程
一 准备环境
- 更新系统并安装基础工具与编译器:
- 对于 CentOS 7:
sudo yum update -y & & sudo yum groupinstall -y "Development Tools" & & sudo yum install -y cmake gcc gcc-c++ make git - 对于 CentOS 8/Stream:
sudo dnf update -y & & sudo dnf groupinstall -y "Development Tools" & & sudo dnf install -y cmake gcc gcc-c++ make git
- 对于 CentOS 7:
- 安装常用依赖开发包(按需):
- 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
- OpenSSL:
- 多版本 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)
- 构建目录:
- 使用 Makefile:
make -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-reloadsudo systemctl enable --now myapp- 常用:
sudo systemctl status myapp、sudo 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
- Dockerfile:
- 运行时库路径(如将库放在 /usr/local/lib):
- 方式一:写入
/etc/ld.so.conf.d/myapp.conf:echo "/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
