在 Ubuntu 上用 C++ 部署服务,通常有两种理解:
下面我按「通用部署方式」给你一个完整、实用的方案,适合大多数场景。
// main.cpp
#include <iostream>
#include <unistd.h>
int main() {
while (true) {
std::cout << "service running..." << std::endl;
sleep(5);
}
return 0;
}
编译:
g++ main.cpp -o myservice
测试运行:
./myservice
sudo cp myservice /usr/local/bin/
sudo vim /etc/systemd/system/myservice.service
内容示例:
[Unit]
Description=My C++ Service
After=network.target
[Service]
ExecStart=/usr/local/bin/myservice
Restart=always
User=ubuntu
WorkingDirectory=/usr/local/bin
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myservice
sudo systemctl enable myservice
systemctl status myservice
journalctl -u myservice -f
✅ 这是生产环境最常用方式
#include <drogon/drogon.h>
int main() {
drogon::app().setPort(8080).run();
}
部署方式同上(systemd)
FROM ubuntu:22.04
RUN apt update && apt install -y g++
COPY myservice /app/myservice
CMD ["/app/myservice"]
构建运行:
docker build -t myservice .
docker run -d --name myservice myservice
✅ 适合云服务器、微服务
Restart=alwaysjournalctl)User=xxxldd myservice
✅ 最小可用
C++ 编译 → systemd 服务
✅ 生产环境
C++ + systemd + 日志 + 监控
✅ 现代部署
C++ + Docker + systemd / K8s
如果你愿意,可以告诉我:
我可以直接给你一份可运行的完整示例 + 部署脚本。