温馨提示×

如何在Ubuntu部署C++服务

小樊
50
2026-08-17 08:28:12
栏目: 编程语言

在 Ubuntu 上部署 C++ 服务,通常包含 开发环境准备、编译、运行、守护进程管理、以及可选的生产化部署。下面给你一个从入门到生产可用的完整流程,你可以按需要取用。


一、准备 Ubuntu 环境

1. 更新系统

sudo apt update && sudo apt upgrade -y

2. 安装 C++ 编译工具链

sudo apt install -y build-essential

检查:

g++ --version
make --version

二、编写 C++ 服务示例

示例:hello_server.cpp

#include <iostream>
#include <unistd.h>

int main() {
    while (true) {
        std::cout << "C++ service is running..." << std::endl;
        sleep(5);
    }
    return 0;
}

三、编译 C++ 程序

1. 编译

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

2. 运行测试

./hello_server

四、让服务在后台运行(基础方式)

1. 使用 nohup

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

查看进程:

ps aux | grep hello_server

停止服务:

kill PID

⚠️ 不推荐用于生产环境


五、使用 systemd 管理 C++ 服务(推荐 ✅)

1. 将程序放到标准目录

sudo mkdir -p /opt/hello_server
sudo cp hello_server /opt/hello_server/

2. 创建 systemd 服务文件

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

内容示例:

[Unit]
Description=Hello C++ Service
After=network.target

[Service]
Type=simple
ExecStart=/opt/hello_server/hello_server
WorkingDirectory=/opt/hello_server
Restart=always
RestartSec=5
StandardOutput=append:/var/log/hello_server.log
StandardError=append:/var/log/hello_server.log

[Install]
WantedBy=multi-user.target

3. 创建日志文件

sudo touch /var/log/hello_server.log
sudo chmod 644 /var/log/hello_server.log

4. 启动服务

sudo systemctl daemon-reload
sudo systemctl start hello_server
sudo systemctl enable hello_server

5. 查看状态

systemctl status hello_server
journalctl -u hello_server -f

六、生产级 C++ 服务建议

✅ 1. 使用 CMake 构建

cmake_minimum_required(VERSION 3.10)
project(hello_server)

set(CMAKE_CXX_STANDARD 17)

add_executable(hello_server main.cpp)

构建:

mkdir build && cd build
cmake ..
make

✅ 2. 使用第三方库(常见)

sudo apt install -y libboost-all-dev

例如:

  • 网络:Boost.Asio / muduo / libevent
  • 日志:spdlog
  • JSON:nlohmann-json

✅ 3. 使用 Docker 部署(强烈推荐)

Dockerfile 示例

FROM ubuntu:22.04

RUN apt update && apt install -y g++ cmake

WORKDIR /app
COPY . .

RUN mkdir build && cd build && cmake .. && make

CMD ["./build/hello_server"]

构建并运行:

docker build -t hello_server .
docker run -d --name hello_srv hello_server

七、常见部署架构

场景 推荐方案
简单后台服务 systemd
高并发网络服务 C++ + epoll / Boost.Asio
微服务 Docker + systemd
云服务器 Docker + Nginx + systemd

八、常见问题

1. 程序崩溃自动重启?

✅ 使用 systemd 的 Restart=always

2. 如何监听端口?

#include <sys/socket.h>

或使用网络库(推荐)

3. glibc / 依赖问题?

  • 静态编译
  • 使用 Docker

九、我可以继续帮你

你可以告诉我:

  • ✅ 是 网络服务 / 计算服务 / 守护进程?
  • ✅ 是否使用 HTTP / TCP / gRPC?
  • ✅ 是否需要 Docker / Kubernetes?
  • ✅ Ubuntu 版本(20.04 / 22.04 / 24.04)?

我可以直接给你 可运行的完整项目模板。

0 踩