在 CentOS 上部署 C++ 服务端,一般流程包括:环境准备 → 编译 → 运行 → 守护进程 → 防火墙/端口 → 可选(容器/自动化)。下面按最常见场景给你一个完整、可落地的步骤。
sudo yum update -y
sudo yum install -y gcc gcc-c++ make cmake
sudo yum install -y openssl-devel
sudo yum install -y libevent-devel
sudo yum install -y boost-devel
示例(简单 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);
}
}
g++ server.cpp -o server -std=c++17 -O2
# CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(server)
add_executable(server server.cpp)
mkdir build && cd build
cmake ..
make
./server
⚠️ 注意:
0.0.0.0nohup ./server > server.log 2>&1 &
创建服务文件:
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
sudo firewall-cmd --zone=public --add-port=9000/tcp --permanent
sudo firewall-cmd --reload
netstat -tunlp | grep 9000
127.0.0.1ldd server
如果你愿意,可以告诉我:
我可以给你 更针对性的部署方案或示例工程。