CentOS中C++项目如何部署与配置
导读:CentOS 上 C++ 项目的部署与配置全流程 一 环境准备与编译器安装 更新系统并安装基础工具: 执行:sudo yum update -y 安装开发组与构建工具:sudo yum groupinstall -y "Developm...
CentOS 上 C++ 项目的部署与配置全流程
一 环境准备与编译器安装
- 更新系统并安装基础工具:
- 执行:
sudo yum update -y - 安装开发组与构建工具:
sudo yum groupinstall -y "Development Tools";补充sudo yum install -y cmake make git
- 执行:
- 安装常用依赖开发库(按需):
sudo yum install -y openssl-devel libcurl-devel libxml2-devel pcre-devel zlib-devel - 编译器版本管理(如系统 GCC 较旧,使用 SCL 启用高版本):
- 安装 SCL 源与工具链:
sudo yum install -y centos-release-scl scl-utils-build - 安装所需版本(示例为 devtoolset-9):
sudo yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++ - 启用:
scl enable devtoolset-9 bash(当前会话生效;如需持久,可写入~/.bashrc的source /opt/rh/devtoolset-9/enable)
- 安装 SCL 源与工具链:
- 验证:
gcc --version、g++ --version、cmake --version应返回预期版本号。
二 构建与依赖管理
- 直接编译(小型项目):
g++ -O2 -o myapp main.cpp;若有依赖,使用pkg-config管理编译/链接参数:g++ -O2 -o myapp main.cpp $(pkg-config --cflags --libs mylib) - 使用 CMake(推荐,便于跨平台与复杂工程):
- 构建流程:
mkdir -p build & & cd build cmake -DCMAKE_BUILD_TYPE=Release .. make -j$(nproc) - 建议在
CMakeLists.txt中显式声明标准:set(CMAKE_CXX_STANDARD 11)(或更高)
- 构建流程:
- 第三方库安装与链接:
- 优先使用发行版仓库安装
-devel包(提供头文件与链接库),例如:sudo yum install -y openssl-devel - 链接时通过
-l库名指定,必要时配合-L/自定义库路径;运行时确保库路径可被解析(见第四部分)。
- 优先使用发行版仓库安装
三 运行与进程托管
- 直接运行与权限:
- 赋予可执行权限:
chmod 755 myapp - 前台运行:
./myapp;后台运行:nohup ./myapp > app.log 2> & 1 &
- 赋予可执行权限:
- 以 systemd 托管(生产推荐):
- 创建服务文件:
sudo vim /etc/systemd/system/myapp.service - 示例内容(按需修改路径、用户、环境变量与重启策略):
[Unit] Description=My C++ Application After=network.target [Service] Type=simple User=appuser Group=appgroup ExecStart=/opt/myapp/bin/myapp WorkingDirectory=/opt/myapp Environment=MY_VAR=1 Restart=always LimitNOFILE=65536 [Install] WantedBy=multi-user.target - 启用与启动:
sudo systemctl daemon-reload sudo systemctl start myapp sudo systemctl enable myapp sudo systemctl status myapp
- 创建服务文件:
- 日志与排查:
journalctl -u myapp -f(实时查看)、journalctl -u myapp --since today。
四 运行环境与库路径配置
- 环境变量(持久化到
~/.bashrc或/etc/profile.d/myapp.sh):- 可执行程序路径:
export PATH=/opt/myapp/bin:$PATH - 动态库路径:
export LD_LIBRARY_PATH=/opt/myapp/lib:$LD_LIBRARY_PATH - 生效:
source ~/.bashrc
- 可执行程序路径:
- 运行时库搜索优化:
- 优先使用系统库目录(如
/usr/lib64、/lib64) - 自定义库目录建议通过 systemd 的
Environment=LD_LIBRARY_PATH=...注入,或在/etc/ld.so.conf.d/myapp.conf中写入/opt/myapp/lib后执行sudo ldconfig
- 优先使用系统库目录(如
- 端口与防火墙(若应用提供网络服务):
- firewalld:
sudo firewall-cmd --add-port=8080/tcp --permanent & & sudo firewall-cmd --reload - 云服务器安全组需同步放行对应端口。
- firewalld:
五 生产部署要点与容器化
- 关键实践清单:
- 选择与线上一致的 CentOS 版本与架构(如 x86_64)
- 使用 Release 构建并开启优化(如
-O2/-O3),关闭调试信息以减小体积 - 启用 日志轮转(如 logrotate),避免磁盘被占满
- 以 非 root 用户运行,最小权限原则
- 配置 防火墙 仅开放必要端口,定期更新系统与依赖修复漏洞
- 做好 备份与回滚 方案,保留上一版本可执行文件与配置
- 容器化交付(示例 Dockerfile,便于一致性部署):
FROM centos:7 RUN yum update -y & & \ yum groupinstall -y "Development Tools" & & \ yum install -y cmake openssl-devel libcurl-devel & & \ yum clean all WORKDIR /app COPY . /app RUN mkdir -p build & & cd build & & cmake -DCMAKE_BUILD_TYPE=Release .. & & make -j$(nproc) ENV MY_VAR=1 CMD ["./build/myapp"]- 构建与运行:
docker build -t myapp:1.0 . docker run -d --name myapp -p 8080:8080 myapp:1.0
- 构建与运行:
- 交付物建议:将编译产物与依赖打包为 RPM(或 tar 包),并附带 systemd 单元文件与部署脚本,便于标准化上线与回滚。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS中C++项目如何部署与配置
本文地址: https://pptw.com/jishu/759209.html
