「サーバ - REST API」の版間の差分
ナビゲーションに移動
検索に移動
(→概要) |
|||
120行目: | 120行目: | ||
# SUSE | # SUSE | ||
sudo zypper install | sudo zypper install python3-certbot python3-certbot-nginx | ||
# Raspberry Pi | # Raspberry Pi |
2025年1月1日 (水) 14:49時点における版
概要
REST APIサーバを構築・運用する場合は、以下に示す事柄に注意する。
- 定期的なバックアップの実施
- セキュリティアップデートの適用
- アクセスログの監視
- レート制限の実装
- 適切なエラーハンドリング
- データベースの最適化
- APIドキュメントの作成と管理
サーバ環境のインストール
まず、システムを更新を行う。
# RHEL sudo dnf update # SUSE sudo zypper update # Raspberry Pi sudo apt update sudo apt upgrade
次に、Linuxサーバに必要な基本環境をインストールする。
# RHEL sudo dnf install curl wget git # SUSE sudo zypper install curl wget git # Raspberry Pi sudo apt install curl wget git build-essential
開発言語とフレームワークの選択
Python + FastAPIを使用する場合
Pythonと仮想環境をインストールする。
# RHEL sudo dnf install python3 python3-pip python3-venv # SUSE sudo zypper install python3 python3-pip python3-virtualenv # Raspberry Pi sudo apt install python3 python3-pip python3-venv
Pythonと仮想環境の設定を行う。
python3 -m venv venv
vi ~/.profile
# ~/.profileファイル source venv/bin/activate
必要なPythonライブラリをインストールする。
pip install fastapi uvicorn sqlalchemy
Node.js + Expressを使用する場合
Node.jsをインストールする。
Node.jsの詳細なインストール手順は、インストール_-_Yarnを参照すること。
プロジェクトディレクトリを作成する。
mkdir <任意のディレクトリ 例: ~/my-api> cd <作成したディレクトリ 例: ~/my-api>
プロジェクトに必要なJavaScriptライブラリをインストールする。
npm init npm install express body-parser cors
データベースの設定
PostgreSQLを使用する場合
PostgreSQLをインストールする。
# RHEL sudo dnf install postgresql libpq5 # SUSE sudo zypper install postgresql libpq5 # Raspberry Pi sudo apt install postgresql postgresql-contrib
データベースを作成する。
sudo -u postgres createdb myapi_db sudo -u postgres createuser myapi_user
APIの基本的な実装
Python + FastAPIを使用する場合
# main.pyファイル
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
description: str = None
@app.get("/items")
async def read_items():
return {"items": []}
@app.post("/items")
async def create_item(item: Item):
return item
HTTPS対応
Let's Encryptを使用する場合
Certbotをインストールする。
# RHEL sudo dnf install ca-certificates python3-certbot # SUSE sudo zypper install python3-certbot python3-certbot-nginx # Raspberry Pi sudo apt install certbot python3-certbot-nginx
SSL証明書を取得する。
sudo certbot --nginx -d <ドメイン名 例: example.com>
リバースプロキシの設定
Nginxを使用する場合
# /etc/nginx/sites-available/myapiファイル
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Systemdサービスファイルの作成
# /etc/systemd/system/<任意のサービス名>.serviceファイル
[Unit]
Description=<サービスファイルの説明>
After=network.target
[Service]
User=<実行する任意のユーザ名>
WorkingDirectory=<REST APIのプロジェクトディレクトリ 例: /home/<ユーザ名>/my-api>
ExecStart=/<uvicorn実行ファイルのパス> main:app --host <ホスト名またはIPアドレス> --port <ポート番号>
# 例: ExecStart=/home/myapi_user/my-api/venv/bin/uvicorn main:app --host 0.0.0.0 --port 8000
Restart=always
[Install]
WantedBy=multi-user.target
ファイヤーウォールの設定
Firewalldの場合
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
UFWの場合
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable
監視とログ管理
PrometheusのGithubにアクセスして、Prometheusをインストールする。
ダウンロードしたファイルを解凍する。
tar xf prometheus-<バージョン>.tar.gz
Grafanaをインストールする。
sudo apt install apt-transport-https sudo apt install software-properties-common sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
CI/CD環境の構築
GitLabを使用する場合
# .gitlab-ci.ymlファイル
stages:
- test
- deploy
test:
stage: test
script:
- pip install -r requirements.txt
- pytest
deploy:
stage: deploy
script:
- ssh user@yourserver 'cd /path/to/api && git pull && systemctl restart myapi'
only:
- master