centos

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

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

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

1. 环境准备

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

2. 编译C++项目

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

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. 监控与维护

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

0
看了该问题的人还看了