在云主机上部署接口服务,可以按以下步骤操作:
一、环境准备
更新系统 sudo apt update && sudo apt upgrade -y # Ubuntu/Debian 或 sudo yum update -y # CentOS/RHEL 安装常用工具 sudo apt install -y curl wget vim git htop
Python环境示例:
安装Python和pip sudo apt install -y python3 python3-pip python3-venv 创建虚拟环境 python3 -m venv venv source venv/bin/activate
Node.js环境示例:
使用nvm安装Node.js curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash source ~/.bashrc nvm install 18
二、接口开发示例
main.py
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.post("/items/")
async def create_item(item: Item):
return {"item": item}
@app.get("/users/{user_id}")
async def read_user(user_id: int):
return {"user_id": user_id}requirements.txt:
fastapi==0.104.1 uvicorn[standard]==0.24.0
2. Express.js (Node.js)
// app.js
const express = require('express');
const app = express();
app.use(express.json());
app.get('/', (req, res) => {
res.json({ message: 'Hello World' });
});
app.post('/api/items', (req, res) => {
res.json({ data: req.body });
});
app.get('/api/users/:id', (req, res) => {
res.json({ user_id: req.params.id });
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(Server running on port ${PORT});
});package.json:
{
"dependencies": {
"express": "^4.18.2"
}
}三、部署配置
Python (FastAPI):
安装依赖 pip install -r requirements.txt 开发模式运行 uvicorn main:app --reload --host 0.0.0.0 --port 8000 生产模式 uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4
Node.js (Express):
npm install node app.js 或使用pm2守护进程 npm install -g pm2 pm2 start app.js --name "my-api"
Gunicorn + FastAPI:
pip install gunicorn gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app -b 0.0.0.0:8000
Nginx反向代理配置:
/etc/nginx/sites-available/your-api
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}四、安全配置
仅开放必要端口 sudo ufw allow ssh sudo ufw allow 80 sudo ufw allow 443 sudo ufw enable
使用Certbot获取免费证书 sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d your-domain.com
使用python-dotenv
.env文件
DATABASE_URL=postgresql://user:pass@localhost/db
SECRET_KEY=your-secret-key
代码中读取
from dotenv import load_dotenv
import os
load_dotenv()
db_url = os.getenv("DATABASE_URL")五、监控与维护
查看日志 tail -f /var/log/nginx/access.log journalctl -u your-service.service -f
/etc/systemd/system/myapi.service [Unit] Description=My API Service After=network.target [Service] User=ubuntu WorkingDirectory=/home/ubuntu/myapi Environment="PATH=/home/ubuntu/venv/bin" ExecStart=/home/ubuntu/venv/bin/gunicorn -w 4 main:app Restart=always [Install] WantedBy=multi-user.target
启用服务 sudo systemctl daemon-reload sudo systemctl enable myapi sudo systemctl start myapi
六、Docker部署(可选)
FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 8000 CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
version: '3.8'
services:
api:
build: .
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://db:5432/mydb
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: example快速启动脚本
#!/bin/bash deploy.sh 1. 更新代码 git pull origin main 2. 安装依赖 pip install -r requirements.txt 3. 重启服务 sudo systemctl restart myapi 4. 检查状态 sudo systemctl status myapi
注意事项
1、安全第一:永远不要硬编码密码和密钥
2、备份数据:定期备份数据库和配置文件
3、监控性能:设置监控告警,关注CPU、内存、磁盘使用率
4、版本控制:使用Git管理代码,方便回滚
5、测试环境:建议先部署到测试环境验证
这样的部署流程可以确保你的接口服务在云主机上稳定运行,并且便于维护和扩展。
文章摘自:https://idc.huochengrm.cn/zj/21071.html
评论
汪慕梅
回复在云主机上部署接口服务,需先配置环境,安装运行环境,开发接口,部署配置,进行安全设置,最后监控与维护,此流程可确保服务稳定运行,便于维护和扩展。