温馨提示×

centos怎样部署c++服务端

小樊
38
2026-09-21 07:04:44
栏目: 编程语言

在 CentOS 上部署 C++ 服务端,一般流程包括:环境准备 → 编译 → 运行 → 守护进程 → 防火墙/端口 → 可选(容器/自动化)。下面按最常见场景给你一个完整、可落地的步骤。


一、环境准备(CentOS 7 / 8 / Stream 均适用)

1. 更新系统

sudo yum update -y

2. 安装编译工具链

sudo yum install -y gcc gcc-c++ make cmake

3. 安装常用依赖(按需)

sudo yum install -y openssl-devel
sudo yum install -y libevent-devel
sudo yum install -y boost-devel

二、编写 / 上传 C++ 服务端代码

示例(简单 TCP 服务):

// server.cpp
#include <iostream>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>

int main() {
    int sock = socket(AF_INET, SOCK_STREAM, 0);
    sockaddr_in addr{};
    addr.sin_family = AF_INET;
    addr.sin_port = htons(9000);
    addr.sin_addr.s_addr = INADDR_ANY;

    bind(sock, (sockaddr*)&addr, sizeof(addr));
    listen(sock, 10);

    std::cout << "Server running on port 9000" << std::endl;

    while (true) {
        int client = accept(sock, nullptr, nullptr);
        char buf[1024] = {0};
        read(client, buf, sizeof(buf));
        std::cout << "recv: " << buf << std::endl;
        write(client, "ok", 2);
        close(client);
    }
}

三、编译 C++ 服务端

1. 直接 g++ 编译

g++ server.cpp -o server -std=c++17 -O2

2. 使用 CMake(推荐)

# CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(server)

add_executable(server server.cpp)
mkdir build && cd build
cmake ..
make

四、运行 C++ 服务端

./server

⚠️ 注意:

  • 默认绑定 0.0.0.0
  • 如果是云服务器,需要开放安全组端口

五、后台运行(非常重要)

方式 1:nohup(最简单)

nohup ./server > server.log 2>&1 &

方式 2:systemd(生产推荐)

创建服务文件:

sudo vi /etc/systemd/system/cppserver.service

内容:

[Unit]
Description=C++ Server
After=network.target

[Service]
ExecStart=/opt/server/server
WorkingDirectory=/opt/server
Restart=always
User=root

[Install]
WantedBy=multi-user.target

启用:

sudo systemctl daemon-reload
sudo systemctl start cppserver
sudo systemctl enable cppserver

六、防火墙 & 端口

CentOS 7/8

sudo firewall-cmd --zone=public --add-port=9000/tcp --permanent
sudo firewall-cmd --reload

七、常见问题

1. 端口被占用

netstat -tunlp | grep 9000

2. 无法外部访问

  • 检查防火墙
  • 检查云服务器安全组
  • 检查是否绑定 127.0.0.1

3. 缺少动态库

ldd server

八、进阶方案(可选)

  • ✅ Docker 部署
  • ✅ Nginx 反向代理
  • ✅ 多线程 / IO 多路复用(epoll)
  • ✅ 日志系统(spdlog)
  • ✅ 配置管理(yaml / json)

如果你愿意,可以告诉我:

  • CentOS 版本
  • 服务端类型(TCP / HTTP / WebSocket / 游戏 / 微服务)
  • 是否用框架(如 Boost.Asio、libevent、muduo)

我可以给你 更针对性的部署方案或示例工程。

0 踩