温馨提示×

CentOS C++项目如何进行部署上线

小樊
36
2025-11-01 15:36:58
栏目: 编程语言

CentOS C++项目部署上线完整流程

1. 环境准备

在部署前需确保系统具备编译和运行C++项目的基础环境,包括开发工具链项目依赖库

  • 安装开发工具链:使用yum安装GCC/G++编译器、CMake构建工具及常用开发工具(如git)。
    sudo yum groupinstall "Development Tools" -y  # 安装开发工具组(含gcc、g++、make等)
    sudo yum install cmake git -y                # 安装CMake和git
    
  • 安装项目依赖库:根据项目需求安装第三方库(如BoostOpenSSL),可通过yum直接安装系统级依赖。
    sudo yum install boost boost-devel openssl openssl-devel -y  # 示例:安装Boost和OpenSSL
    

2. 编译C++项目

通过CMake(推荐)或直接使用g++编译项目,生成可执行文件。

  • 使用CMake构建(推荐)
    1. 在项目根目录创建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)  # 链接依赖库
      
    2. 创建build目录并执行构建:
      mkdir build && cd build
      cmake ..      # 生成Makefile
      make          # 编译项目,生成可执行文件(默认在build目录下)
      
  • 直接使用g++编译(简单项目)
    若项目无复杂依赖,可直接用g++编译:
    g++ -o my_app main.cpp utils.cpp -lpthread -lboost_system  # 编译并链接依赖库
    

3. 检查依赖关系

使用ldd命令检查可执行文件的动态库依赖,确保所有依赖库均已安装且路径正确:

ldd ./build/my_app

若输出中出现not found的库,需通过yum安装对应依赖(如sudo yum install libxxx-devel)。

4. 部署可执行文件

将编译好的可执行文件上传至服务器(可使用scprsync),并设置执行权限:

scp -r ./build/my_app user@server_ip:/opt/my_app/  # 上传至服务器/opt目录
ssh user@server_ip
sudo chmod +x /opt/my_app/my_app                   # 设置执行权限

5. 配置systemd服务(可选,推荐)

为了让项目在服务器重启后自动启动,并实现进程守护,可创建systemd服务文件:

  1. 创建服务文件(如my_app.service):
    sudo nano /etc/systemd/system/my_app.service
    
  2. 写入以下内容(替换为实际路径和用户):
    [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
    
  3. 加载并启动服务:
    sudo systemctl daemon-reload           # 重新加载systemd配置
    sudo systemctl start my_app            # 启动服务
    sudo systemctl enable my_app           # 设置开机自启
    
  4. 验证服务状态:
    sudo systemctl status my_app           # 查看服务运行状态
    

6. 配置防火墙(可选)

若项目需要通过网络访问(如HTTP服务),需开放对应端口(如80、443):

sudo firewall-cmd --permanent --add-port=80/tcp  # 开放80端口
sudo firewall-cmd --reload                       # 重新加载防火墙规则

7. 使用Docker打包发布(可选,推荐)

通过Docker实现环境隔离,确保项目在不同服务器上的一致性:

  1. 创建Dockerfile:在项目根目录编写Dockerfile,定义镜像构建步骤:
    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"]
    
  2. 构建Docker镜像
    docker build -t my-cpp-app .  # 构建镜像(标签为my-cpp-app)
    
  3. 运行Docker容器
    docker run -d --name my-running-app -p 8080:80 my-cpp-app  # 映射端口(如8080→80)
    

8. 监控与维护

  • 查看日志:若项目输出日志到文件(如my_app.log),可通过tail命令实时查看:
    tail -f /opt/my_app/my_app.log
    
  • 监控服务状态:定期检查systemd服务状态或Docker容器运行状态,确保项目正常运行。
  • 更新部署:修改代码后,重复编译、上传、重启服务等步骤即可完成更新。

以上流程覆盖了CentOS下C++项目从环境准备到上线运行的完整步骤,其中systemd服务Docker是推荐的部署方式,分别适用于传统服务器环境和容器化环境。

0