在部署前需确保系统具备编译和运行C++项目的基础环境,包括开发工具链和项目依赖库。
yum安装GCC/G++编译器、CMake构建工具及常用开发工具(如git)。sudo yum groupinstall "Development Tools" -y # 安装开发工具组(含gcc、g++、make等)
sudo yum install cmake git -y # 安装CMake和git
Boost、OpenSSL),可通过yum直接安装系统级依赖。sudo yum install boost boost-devel openssl openssl-devel -y # 示例:安装Boost和OpenSSL
通过CMake(推荐)或直接使用g++编译项目,生成可执行文件。
CMakeLists.txt文件,定义项目名称、源文件及依赖(示例):cmake_minimum_required(VERSION 3.10)
project(MyCppApp)
add_executable(my_app main.cpp utils.cpp) # 添加可执行文件及源文件
target_link_libraries(my_app PRIVATE pthread boost_system) # 链接依赖库
build目录并执行构建:mkdir build && cd build
cmake .. # 生成Makefile
make # 编译项目,生成可执行文件(默认在build目录下)
g++编译:g++ -o my_app main.cpp utils.cpp -lpthread -lboost_system # 编译并链接依赖库
使用ldd命令检查可执行文件的动态库依赖,确保所有依赖库均已安装且路径正确:
ldd ./build/my_app
若输出中出现not found的库,需通过yum安装对应依赖(如sudo yum install libxxx-devel)。
将编译好的可执行文件上传至服务器(可使用scp或rsync),并设置执行权限:
scp -r ./build/my_app user@server_ip:/opt/my_app/ # 上传至服务器/opt目录
ssh user@server_ip
sudo chmod +x /opt/my_app/my_app # 设置执行权限
为了让项目在服务器重启后自动启动,并实现进程守护,可创建systemd服务文件:
my_app.service):sudo nano /etc/systemd/system/my_app.service
[Unit]
Description=My C++ Application
After=network.target
[Service]
User=myuser # 替换为运行项目的用户(如root或普通用户)
ExecStart=/opt/my_app/my_app
Restart=always # 进程崩溃时自动重启
WorkingDirectory=/opt/my_app # 工作目录
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload # 重新加载systemd配置
sudo systemctl start my_app # 启动服务
sudo systemctl enable my_app # 设置开机自启
sudo systemctl status my_app # 查看服务运行状态
若项目需要通过网络访问(如HTTP服务),需开放对应端口(如80、443):
sudo firewall-cmd --permanent --add-port=80/tcp # 开放80端口
sudo firewall-cmd --reload # 重新加载防火墙规则
通过Docker实现环境隔离,确保项目在不同服务器上的一致性:
FROM centos:latest
# 安装开发工具和依赖库
RUN yum update -y && \
yum groupinstall "Development Tools" -y && \
yum install cmake git boost-devel openssl-devel -y
# 复制项目文件
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
# 编译项目
RUN mkdir build && cd build && \
cmake .. && \
make
# 设置容器启动命令
CMD ["/usr/src/myapp/my_app"]
docker build -t my-cpp-app . # 构建镜像(标签为my-cpp-app)
docker run -d --name my-running-app -p 8080:80 my-cpp-app # 映射端口(如8080→80)
my_app.log),可通过tail命令实时查看:tail -f /opt/my_app/my_app.log
以上流程覆盖了CentOS下C++项目从环境准备到上线运行的完整步骤,其中systemd服务和Docker是推荐的部署方式,分别适用于传统服务器环境和容器化环境。