MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
サーバ - REST APIのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
サーバ - REST API
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <br><br> == サーバ環境のインストール == まず、システムを更新を行う。<br> # RHEL sudo dnf update # SUSE sudo zypper update # Raspberry Pi sudo apt update sudo apt upgrade <br> 次に、Linuxサーバに必要な基本環境をインストールする。<br> # RHEL sudo dnf install curl wget git # SUSE sudo zypper install curl wget git # Raspberry Pi sudo apt install curl wget git build-essential <br><br> == 開発言語とフレームワークの選択 == ==== Python + FastAPIを使用する場合 ==== Pythonと仮想環境をインストールする。<br> # 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 <br> Pythonと仮想環境の設定を行う。<br> python3 -m venv venv <br> vi ~/.profile <br> # ~/.profileファイル source venv/bin/activate <br> 必要なPythonライブラリをインストールする。<br> pip install fastapi uvicorn sqlalchemy <br> ==== Node.js + Expressを使用する場合 ==== Node.jsをインストールする。<br> Node.jsの詳細なインストール手順は、[[インストール_-_Yarn#NordJS|インストール_-_Yarn]]を参照すること。<br> <br> プロジェクトディレクトリを作成する。<br> mkdir <任意のディレクトリ 例: ~/my-api> cd <作成したディレクトリ 例: ~/my-api> <br> プロジェクトに必要なJavaScriptライブラリをインストールする。<br> npm init npm install express body-parser cors <br><br> == データベースの設定 == ==== PostgreSQLを使用する場合 ==== PostgreSQLをインストールする。<br> # RHEL sudo dnf install postgresql libpq5 # SUSE sudo zypper install postgresql libpq5 # Raspberry Pi sudo apt install postgresql postgresql-contrib <br> データベースを作成する。<br> sudo -u postgres createdb myapi_db sudo -u postgres createuser myapi_user <br><br> == APIの基本的な実装 == ==== Python + FastAPIを使用する場合 ==== <syntaxhighlight lang="python"> # 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 </syntaxhighlight> <br><br> == HTTPS対応 == ==== Let's Encryptを使用する場合 ==== Certbotをインストールする。<br> # RHEL sudo dnf install ca-certificates python3-certbot # SUSE sudo zypper install ca-certificates python3-certbot # Raspberry Pi sudo apt install certbot python3-certbot-nginx <br> SSL証明書を取得する。<br> sudo certbot --nginx -d <ドメイン名 例: example.com> <br><br> == リバースプロキシの設定 == ==== Nginxを使用する場合 ==== <syntaxhighlight lang="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; } } </syntaxhighlight> <br><br> == Systemdサービスファイルの作成 == <syntaxhighlight lang="ini> # /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 </syntaxhighlight> <br><br> == ファイヤーウォールの設定 == ==== Firewalldの場合 ==== sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload <br> ==== UFWの場合 ==== sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable <br><br> == 監視とログ管理 == [https://github.com/prometheus/prometheus PrometheusのGithub]にアクセスして、Prometheusをインストールする。<br> ダウンロードしたファイルを解凍する。<br> tar xf prometheus-<バージョン>.tar.gz <br> Grafanaをインストールする。<br> 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 <br><br> == CI/CD環境の構築 == ==== GitLabを使用する場合 ==== <syntaxhighlight lang="yaml"> # .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 </syntaxhighlight> <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:Web]]
サーバ - REST API
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse