在 Linux 上使用 C++ 部署服务端程序,通常包括:
编写服务程序 → 编译 → 配置运行环境 → 后台运行 → 端口/防火墙 → 守护进程/容器化。下面按实战步骤说明。
// 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);
}
}
g++ server.cpp -o server -O2 -pthread
若使用网络库(如 Boost、libevent),需加
-l参数
./server
⚠️ 这样关闭终端就会停止
nohup ./server > server.log 2>&1 &
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
sudo ufw allow 8080
或(CentOS)
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
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
↓
防火墙放行
↓
客户端访问
如果你愿意,我可以:
你目前是做哪种服务端?