温馨提示×

linux c++如何部署服务端

小樊
46
2026-09-29 06:01:32
栏目: 编程语言

在 Linux 上使用 C++ 部署服务端程序,通常包括:
编写服务程序 → 编译 → 配置运行环境 → 后台运行 → 端口/防火墙 → 守护进程/容器化。下面按实战步骤说明。


一、编写一个简单的 C++ 服务端(示例)

1. TCP 回声服务端(基础示例)

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

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

    bind(server_fd, (sockaddr*)&addr, sizeof(addr));
    listen(server_fd, 5);

    std::cout << "Server running on port 8080\n";

    while (true) {
        int client_fd = accept(server_fd, nullptr, nullptr);
        char buf[1024];
        ssize_t n = read(client_fd, buf, sizeof(buf));
        write(client_fd, buf, n);
        close(client_fd);
    }
}

二、编译 C++ 服务端

2. 使用 g++ 编译

g++ server.cpp -o server -O2 -pthread

若使用网络库(如 Boost、libevent),需加 -l 参数


三、运行服务端

3. 直接运行(测试用)

./server

⚠️ 这样关闭终端就会停止


四、后台运行(生产基础)

4. 使用 nohup

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

5. 使用 systemd(推荐 ✅)

创建服务文件

sudo vim /etc/systemd/system/myserver.service

内容示例

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

[Service]
ExecStart=/path/to/server
WorkingDirectory=/path/to
Restart=always
User=www-data

[Install]
WantedBy=multi-user.target

启动服务

sudo systemctl daemon-reload
sudo systemctl start myserver
sudo systemctl enable myserver

五、端口与防火墙

6. 开放端口

sudo ufw allow 8080

或(CentOS)

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

六、部署方式选择

✅ 方式 1:裸机 / 云服务器

  • 直接编译 + systemd
  • 适合中小型服务

✅ 方式 2:Docker 部署(推荐)

Dockerfile 示例

FROM ubuntu:22.04
WORKDIR /app
COPY server /app/server
EXPOSE 8080
CMD ["./server"]
docker build -t myserver .
docker run -d -p 8080:8080 myserver

七、常见增强(生产级)

功能 技术
高并发 epoll / libevent / Boost.Asio
日志 spdlog / glog
配置 JSON / YAML
HTTPS OpenSSL
性能 线程池 / 协程

八、总结流程

C++ 编写
   ↓
g++ 编译
   ↓
systemd / Docker
   ↓
防火墙放行
   ↓
客户端访问

如果你愿意,我可以:

  • 给你 epoll 高并发服务端
  • 给你 CMake 工程结构
  • 给你 Nginx + C++ 后端架构
  • 或针对 游戏 / Web / 物联网 场景设计

你目前是做哪种服务端?

0 踩