如何配置Linux系统以支持RESTful API开发?

来源:Python编程网作者:沙月恵奈‌头衔:网络博主
导读:本期聚焦于小伙伴创作的《如何配置Linux系统以支持RESTful API开发?》,敬请观看详情。不少团队在Linux服务器上部署接口服务时,常因缺少运行时环境或防火墙限制导致调用失败。本文从系统准备讲起,说明如何用包管理器安装Node.js与Python环境,配置Nginx反向代理实现域名访问,以及使用ufw开放端口。同时介绍用systemd托管API进程,保证异常退出后自动重启。按步骤操作,可让一台裸机在半小时内具备对外提供RESTful接口的能力,避开权限与跨域配置的常见麻烦。

在Linux系统上搭建RESTful API开发环境,核心在于准备好语言运行时、Web服务器与进程管理工具。不同发行版操作略有差异,但整体思路一致:先装依赖,再跑服务,最后做反向代理与守护。

如何配置Linux系统以支持RESTful API开发?

一、选择并安装语言运行时

RESTful API可以用多种语言实现,Node.js和Python是常见选择。以Ubuntu为例,使用apt能快速安装Node.js。建议通过NodeSource仓库获取新版本,而非系统自带的老版本,避免语法不支持。

下面脚本添加了Node.js 18的源并安装。执行后可用node -v确认版本。若用Python,则安装python3与venv模块,便于隔离依赖。

# 安装Node.js 18
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

# 验证
node -v
npm -v

使用虚拟环境能有效防止包冲突。Python开发者可这样初始化:

sudo apt-get install -y python3 python3-venv
python3 -m venv api_env
source api_env/bin/activate
pip install flask

二、编写并启动一个简单API服务

以Node.js的Express框架为例,先初始化项目并安装express,再写入口文件。以下代码创建一个返回JSON的GET接口,监听本地3000端口。

注意代码中未写死外部可访问地址,只绑127.0.0.1,后续由Nginx转发,这样更安全。生产环境切勿直接将Node进程暴露公网。

// app.js
const express = require('express');
const app = express();

app.get('/api/hello', (req, res) => {
  res.json({ message: 'Hello RESTful' });
});

app.listen(3000, '127.0.0.1', () => {
  console.log('API running on 127.0.0.1:3000');
});

启动方式是在项目目录运行node app.js。但终端关闭后进程会退出,因此需要systemd托管。

三、使用systemd守护API进程

systemd是Linux主流初始化系统,可定义服务单元文件,实现开机自启与崩溃重启。在/etc/systemd/system创建api.service,填写执行路径与用户。

配置里Restart=always保证进程挂掉立即拉起,WorkingDirectory指向代码目录。修改后执行daemon-reload并enable。

[Unit]
Description=Simple RESTful API
After=network.target

[Service]
User=www-data
WorkingDirectory=/opt/api
ExecStart=/usr/bin/node /opt/api/app.js
Restart=always

[Install]
WantedBy=multi-user.target

相关命令如下,启动后可用systemctl status api查看日志:

sudo systemctl daemon-reload
sudo systemctl enable api
sudo systemctl start api
sudo systemctl status api

四、配置Nginx反向代理与防火墙

浏览器或客户端通常访问80或443端口,由Nginx将请求转发到3000。这样既统一入口,也能处理静态文件与SSL。配置文件写在sites-available,再软链到sites-enabled。

同时用ufw只允许必要端口。默认拒绝全部,再开放22、80、443。API端口不需对外直通,降低风险。

server {
    listen 80;
    server_name api.ipipp.com;

    location /api/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

防火墙命令示例:

sudo ufw default deny incoming
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable

五、跨域与日志排查

若前端域名不同,需在Nginx或应用层加CORS头。Nginx可加add_header Access-Control-Allow-Origin。日志方面,systemd的journalctl -u api可看报错,Nginx错误日志在/var/log/nginx/error.log。

整体完成后,访问http://api.ipipp.com/api/hello应返回JSON。按上述步骤,Linux即可稳定支撑RESTful API开发与部署,兼顾安全与可维护性。

LinuxRESTful_APINode.js修改时间:2026-08-08 05:03:21

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。