sudo apt update && sudo apt upgrade -y
(Ubuntu) 或 sudo yum update -y
(CentOS)bash
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
/etc/ssh/sshd_config
,设置PermitRootLogin no
sudo adduser deployuser && sudo usermod -aG sudo deployuser
sudo apt install nginx -y # Ubuntu
# 或
sudo yum install nginx -y # CentOS
示例Nginx配置(/etc/nginx/sites-available/your_api
):
server {
listen 80;
server_name api.yourdomain.com;
location / {
proxy_pass http://localhost:3000; # 假设你的API运行在3000端口
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
启用配置:sudo ln -s /etc/nginx/sites-available/your_api /etc/nginx/sites-enabled/
sudo npm install pm2 -g
pm2 start your-api.js
pm2 startup systemd
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u deployuser --hp /home/deployuser
pm2 save
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:8000 your_app:app
使用Let's Encrypt获取免费证书:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d api.yourdomain.com
实施速率限制(Nginx配置示例):
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
location /api/ {
limit_req zone=api_limit burst=20 nodelay;
# 其他配置...
}
/var/log/nginx/
/var/log/your_api/
在服务器上设置Git仓库并配置post-receive钩子自动部署
name: Deploy API
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Copy files via SSH
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SERVER_IP }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_KEY }}
source: "./"
target: "/home/deployuser/api"
- name: Restart API
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_IP }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_KEY }}
script: |
cd /home/deployuser/api
npm install --production
pm2 restart all
通过以上步骤,你可以在Linux服务器上部署一个安全、可靠且易于维护的Web接口。根据你的具体技术栈和需求,某些步骤可能需要调整。