PostgreSQLでクエリを書こう②

クエリの書き方

前回はクエリでCRUD(Create,Read,Update,Delete)を行いました。今日はその続きです。 リレーショナルなデータとは データ同士でつながっているものがありますね。例えば、レストランなら、会社の情報、メニューの情報、お客さんの情報は、それぞれ別のデータベースのテーブルに格納されますが、そのうちのカラムは他のテーブルに依存することになります。 下記に、その関係となる3つのタイプを紹介します。 Foreign key (外部キー)を作る では、FOREIGN KEYのあるテーブルを作ってみましょう。 CONSTRAINTはデータベースにこのカラムが特別であることを教えてあげます。慣習的に外部キーを使う場合はfk_で名称を付けてあげます。 FOREIGN KEYが先ほど説明した外部キーのことです。user_idが外部キーになることを教えてあげます。 REFERENCEはどのテーブルのどのカラムが対象になるか指定してあげています。 テーブルができました。 データを追加する データ外部キーの部分をuserテーブルidの1としてサンプルのデータを追加してみます。 データが入りました。 しかし、このままだとユーザー1が誰か分かりませんね。 JOINのコマンドでデータを結合して表示させてみます。 これで外部キーが結合されたデータが表示されました。

PostgreSQLでCRUDのクエリを書こう①

クエリの書き方

お疲れ様です。今日はPostgreSQLについて紹介します。PostgreSQLは1996年に市場に出てから多くの参考書や動画で色々説明しているので詳しい説明は省きます。 知っておくべきことを順番にまとめたので分からないところは自分で調べてください。 PostgreSQLがインストールされているところまで進めてもらえると分かりやすいです。 PostgreSQLってなに? リレーショナルデータベースのことです。 SQLのクエリを使ってデータベースを操作することができます。 テーブルって何? MSのエクセルやスプレッドシートをイメージしてください。 テーブルはカラム(行)とロウ(段)でできています。そこにデータが保管されます。 PgAdmin4 PgAdmin4はPostgreSQLが提供するUIツールです。ここでデータベースの操作を画面を使って操作できます。PostgreSQLのインストールの際に一緒にインストールしたかと思います。 スキーマ(Schema)って何? テーブルをまとめているものです。 なぜSQLを書く必要があるの もし、UIパネルから同じことができるならなぜSQLを書く必要があるのでしょうか? それは、PythonなどでPosgreSQLに指示をする際にコードで書いてあげないといけないからです。 これらを自動化するためにはやはりクエリを覚えておかないといけないのですね。 SQLを書く では、PgAdmin4からQueryToolを開きましょう。 ;(セミコン)を忘れない ;(セミコロン)はクエリの最後に必ずつけます。これでクエリが終わりであることを宣言してあげます。 これがないとエラーが出るので忘れないように。 テーブルを作る では、クエリツールを開いたら下記のようにクエリを書いていきます。プロフィールのテーブルを例とします。 SQLの世界では、CREATE TABLEやPRIMARY KEYなどのキーワードは大文字で書きます。(大文字でなくても実行できますが) テーブルに関係するもの、自分で命名したもの(カラム名など)は小文字で書きます。 この場合、id、name、email、password、ageはカラム名になります。その右にあるのがデータタイプです。 VARCHARはストリング(文字、テキスト)のデータタイプになります。(255)は最大で255文字まで入力できるという事になります。 INTは数字のデータになります。 指定した以外のデータはそれぞれのカラムに入力できないようになっています。 SERIALはデータが作成されるとデータベース側で自動で数字が+1されます。 PRIMARY KEYはユニークなデータで他のデータと被らないものになります。 クエリを実行する では、クエリツールの再生ボタンを押して、書いたクエリを実行します。 ※テーブルを作成するデータベースが選択されていることを確認してね。 サクセス(成功)の返事が返ってきました。ありがとう。 作成したテーブルを見る では、スキーマの下にTable(テーブル)があるのでそれをクリックして先ほど作成したProfileテーブルを右クリックしてViewを押し、表示させます。 データが空のテーブルが表示されました! テーブル名は慣習的にsの付かない単数形で記載することが多いです。なのでprofilesではなくprofileになります。(どっちでもいいんだけどね) ユーザーテーブルを作成する では、先ほどのProfileテーブルを削除します。単純にテーブルのアイコンを右クリックしてDelete/Dropを押すだけです。データがある場合はそれも全部消えてしまいます。 次にユーザーテーブルを同じクエリで作成してみます。 ここで気が付いてほしいのが”user”とダブルクオーテーションで囲っていることです。userやtableはpostgresのキーワードなので、このようにキーワードをストリングにしてあげないといけないのですね。 ちなみにシングルクォーテーションではエラーが出ます。 データを追加する では下記のようにデータを追加するクエリを書きます。 VALUESの後に、指定した順に、データを教えてあげます。ストリングのデータはシングルクオートで囲ってあげます。ここはダブルクォーテーションだとエラーが出ます。 で、実行してあげると同じようにテーブルにデータが追加されました。 IDも自動で追加されましたね。 データを表示させる では追加したデータを表示させる(選択する)クエリを書きます。 … Read more

WindowsにPostgreSQLをインストールする

PostgreSQLをインストールしよう

今日はPostgreSQLのデータベースをWindowsにインストールする手順を説明します。 では下記のサイトからインストーラーをダウンロードします。 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 特に指定がない場合は最新版のバージョン15をダウンロードしましょう。 ダウンロードできたら、.exeの実行ファイルをクリックしてインストールを始めます。 Nextを押します。 ファイルの保管場所を教えてあげます。通常はこのままでOKです。 Stack Builderは使わないかもしれないのでチェックをはじしてもOkです。 後は使うと思うのでそのままにしてNextを押します。 データを保管するディレクトリです。これもこのままNextです。 postgresユーザーのパスワードを設定します。 後からつかうので忘れないものに! 次にポートの設定です。 外からアクセスする場合にポート番号を指定してあげます。(データベースがアパートのビルなら、ポートはそのドア番号みたいなものです。) Localです。 これはデフォルトのままでOKです。 で、Next。 インストールを開始だっ。 インストールが始まります。。。 あとちょっとだね。 インストールが完了しました。 最後のチェックボックスは外してFinishして大丈夫です。 とくに追加でインストールしたツールとかはないので。 おまけ もし、コマンドラインからPSQLを実行したい場合は環境変数にPostgresのパスを登録してあげる必要があります。 それは調べてやってみてください。

Pythonでウェブスクレイピング – BeautifulSoup ②

Beautiful Soup使い方

では前回練習したウェブスクレイピングの続きを説明します。 前回の記事はこちらからどうぞ。 今日はヤフオクに表示されている入札価格と商品名などをスクレイピングしていきたいと思います。 requestsのライブラリをインストール ではPythonから実際のウェブサイトにアクセスするにあたりHTTPリクエストを送ることになります。その際にRequestsのライブラリを使うのでインストールしましょう。 前回、virtualenvで環境を作った人はアクティベートすることを忘れずに! ではページのHTMLをスクレイピングします。 ウェブページの内容が出てきました。 リスティングのHTMLを見る ではデベロッパーツールで各リストを囲っているカードのエレメントをみます。 見てわかるようにliエレメントでProductというクラスがありますね。 ではこのProductクラスをすべてスクレイピングします。 Pythonファイルを実行してちゃんとスクレイピングできているか確かめましょう。 次に一つのリスティングから必要な情報を吸い取ります。 ではこのリスティングをループさせます。 10分ごとにスクレイピングを実行させる では先ほどのコードをファンクションにして10分ごとに実行させるように設定します。 データをSCVに書き出す 日本語のエンコードは私は”utf_8_sig”で行いました。(アメリカのPCなので。。。 色々試してください。

Pythonでウェブスクレイピング – Beautiful Soup ①

PythonでBeautiful Soupを使ってみよう

今日はPython初心者の方でもわかるウェブスクレイピングについて説明します。 ウェブスクレイピングとはウェブサイトにある情報をスクレイプ(剥ぎ取る)という事です。 例でいうと、過去の天気予報の情報をサイトからスクレイピングしたり、Amazonのサイトの商品の情報をスクレイピングしたりできます。 そのデータをどうするかはあなた次第ですが、このPythonの得意分野である自動化という力を発揮できる素晴らしいプロジェクトになります。 下準備 Beautiful Soupとは Beautiful Soup(美しいスープ)はPythonのライブラリです。このライブラリを使ってウェフスクレイピングを行います。他にもウェブスクレイピングができるライブラリがありますが、一番お勧めがこのBeautiful Soupになります。 HTMLの基本を知っておく ウェブサイトのスクレイピングをするにあたり、HTMLの構造を知らないとどの情報をスクレイピングしたいのか指示ができません。 まずは簡単なサイトでスクレイピングの練習をしましょう。 簡単なHTMLで練習 ローカルの環境にテスト用でHTMLを作成してスクレイピングの練習をします。 不要な人は飛ばしてください。 ではPythonとBeautifulSoupをセットアップしていきましょう。 環境のセットアップ Pythonのライブラリをインストールする際にpip(パッケージマネージャー)を使用します。 このままパッケージをインストールしてしまうと、グローバルにパッケージがインストールされてしまいます。 個人で楽しむ分には問題ありませんが、今後、多数のプロジェクトを並行して作業するにあたり、仮想環境を準備するのが最適になります。 本題とはそれますが、それを学びたい方は下記の動画を見てください。 virtualenvのインストール 仮想環境を使いたい人はこちらのコマンドでインストールします。 インストールができたら仮想環境を作成します。 仮想環境をアクティベートします。 これでコマンドプロンプトの左側に環境名が表示されればOKです。 ここからPythonでインストールしたライブラリはenv内に格納されるのでアクティベートされたときのみPythonがアクセスできます。 BS4のインストール BeautifulSoup4を略してbs4と言います。 何事もインストールする前にはちょっとだけでも公式ドキュメンテーションを見ておくものです。 https://www.crummy.com/software/BeautifulSoup/bs4/doc/ ではこれをインストールしていきましょう。 インストールされました! lxmlのインストール BS4で作業するにあたり、HTMLのパーサー(読み込む役割)をするライブラリが必要になります。 LxmlはHTMLのパーサーのライブラリの一つで、お勧めなのでインストールしていきます。 コードを書く ではやっと下準備が整ったのでコードを書いていきましょう。 私は、テキストエディタはVSCodeを使います。皆さんが使っているものをどうぞ。 では下記のようにコードを書いていきます。 同じディレクトリにindex.htmlで下記の中身のファイルを作成します。 ではコマンドプロンプトからPythonファイルを実行します。 見事!HtmlのファイルがPythonから読み込まれました。 しかし、このままだとHTMLタグも入って見づらいのでbeautifulSoupのPrettifyを使ってキレイにしましょう。 さっきよりキレイになりました! HTMLタグで絞り込む .find ではH1タグのHTMLだけをスクレイピングしたい場合はこのようにします。 soup.findメソッドを使い、タグを指定してあげます。 .fins_all これだと最初のh1タグしかスクレイピングされませんね。 では、すべてのh1タグをスクレイピングするようにしましょう。 findのメソッドをfind_allに変えてみましょう。 すべてのh1タグがスクレイピングされました! … Read more

無料で使えるAPIを紹介

無料で使えるAPI

皆さんこんにちは。

今日はフロントエンドで使えそうな、ポートフォリオのプロジェクトで使えそうな無料のAPIを紹介します。

真面目なものから、ふざけたものまで色々集めたので是非、使ってみてください。

NASAの宇宙API

ユーザー登録が必要です。

日替わりの宇宙画像とかがあるそうです。

https://api.nasa.gov/index.html

天気予報API

天気情報のAPIは誰しもが使うマストなAPIですね。簡単な天気アプリとかに使えそうです。

これもユーザー登録が必要になります。

https://openweathermap.org/api

米国株式のAPI

Polygon.ioというところが提供しているAPIです。GitHubで登録してAPIキーを手に入れた後にAPIにアクセスできるようです。


ユーザー登録なしで使えるAPI

ここから、ユーザー登録が不要ですぐに使えるAPIを紹介します。

ポケモンAPI

みんなの大好きなポケモンのデータがAPIになりました。

https://pokeapi.co/

参考URL: https://pokeapi.co/api/v2/pokemon/charizard

カクテルAPI

カクテルのレシピがAPIになってます。

https://www.thecocktaildb.com/api.php

サンプルURL:https://www.thecocktaildb.com/api/json/v1/1/search.php?s=margarita

ビットコインAPI

クリプトのAPIです。CoinBaseが提供しています。

https://docs.cloud.coinbase.com/sign-in-with-coinbase/docs/api-users#data-endpoints

サンプルURL:https://api.coinbase.com/v2/currencies

為替API

為替のレートのAPIです。

https://www.coingecko.com/en/api

サンプルURL:https://api.coingecko.com/api/v3/exchange_rates

アメリカの統計

アメリカの人口や統計がデータになったAPIです。

https://datausa.io/about/api/

サンプルURL: https://datausa.io/api/data?drilldowns=Nation&measures=Population

犬の画像

ランダムで犬の画像が表示されます。

https://dog.ceo/dog-api/

サンプルURL:https://dog.ceo/api/breeds/image/random

アニメAPI

アメリカで有名なMyAnimeListの非公式のAPIです。

https://jikan.moe/

サンプルURL: https://api.jikan.moe/v4/anime?q=naruto&sfw

本のAPI

OpenLibraryという組織で提供している本のAPIです。

https://openlibrary.org/developers/api

サンプルURL: http://openlibrary.org/api/volumes/brief/isbn/9780525440987.json

ランダムユーザーAPI

自動でユーザーを生成してくれるAPIです。

https://randomuser.me/

サンプルURL: https://randomuser.me/api/

とりあえず、これだけあれば次のプロジェクトの参考になるのではないでしょうか?

お疲れ様でした。

UbuntuサーバーのコードをGitHubにプッシュする方法

UbuntuサーバーからGitHubにプッシュ

GitHubにリポジトリを作成してコードを公開したい、もしくはプライベートで管理したいですよね。 今回はUbutnuサーバーでデプロイしているコードをコマンドラインからGitHubにアップロード(プッシュ)する方法をご紹介します。 これができるとちょっとしたコードの変更があった場合にGitHubにコマンドラインで更新できるのでバグ修正をすぐに行い公開することができちゃったりしますね。 でGitHubにあげたコードは自分のパソコンにクローンしてまた作業ができるようになります。 後からのGitでの更新作業を考えると、Git CloneでGitHubのリポを先にサーバー側にコピーしてあげるのが一番良いです。 今日の条件 ①Ubuntuサーバー(22.04)とSSHアクセス 他のOSでもよいですがコマンドが変わる可能性があります。 ②GitHubのアカウント 今回初めてGitとGitHubを使う人は下記の動画から基本を学んでみてください。 SSHが分からない人は下記の動画を見てください。 Gitをインストールする では、UbuntuサーバーにSSHで接続した状態にしてください。 で、ターゲットとなるディレクトリに移動して.gitファイルを作成します。 もし、GitHubからリポをクローンしている場合は飛ばしてください。 コミットができたのでRPGゲームでいうセーブが完了しました。 ではこのセーブデータをシェアするためにGitHubを接続します。 GitHubで使うSSHキーを作成する ではUbuntuサーバーでSSHキーを生成してGitHubにそのパブリックキーの方を渡すような流れになります。 SSHのフォルダーに移動します。 SSHキーを作成します。 ファイルの保管場所を聞かれるので問題がなければそのままエンター パスフレーズの聞かれるので必要に応じて秘密のパスワードを作成します。 なくても大丈夫です。その場合はただエンターを押して次に進みます。 これでid_rsaとid_rsa.pubの二つのキーができました。 では下記のコマンドでパブリックキーの方を閲覧します。 ではこれをコピーします。ターミナルでハイライトすると自動でクリップボードにコピーされますね。 GitHubでSSHのパブリックキーを登録 ではGitHubのサイトに行き、設定の画面を開きます。英語だとSettingsですね。 その中に、SSH and GPG Keysというオプションがあるのでそれをクリックします。 右上の緑のNew SSH Keyのボタンを押して先ほどコピーしたキーを貼り付けます。 タイトルは自分で管理するために使うので分かりやすいように説明を付けてあげてください。 Ubuntuサーバーからコードをプッシュする では、最初にコミットしたコードをGitHubにプッシュ(アップロード、更新)します。 ちゃんと.gitのある場所に戻りましょう。 GitHubのプッシュしたい先のSSHのURLをコピーします。 ではコードのプッシュ先を下記のコマンドで登録しておきます。 では下記のコマンドでGitHubにコミットしたコードをプッシュします。 ちなみにGitHubのブランチ名が何になっているか確認しましょう。 メインのリポにプッシュする場合はmainとかmasterになっているはずです。 もしブランチ名(枝名)をmainに変えたい場合はこのコマンドで。 レッツゴー! yesと入力し接続を完了させます。 トラブルシュート もし、GitHubの接続先にすでにリポが存在する場合はエラーが発生します。 もし、強制的にサーバー側からのコードでプッシュしたい場合は下記のfフラグで更新できるようになります。 GitHubのリポが更新されました。 お疲れ様です。

複数のDjangoのアプリを同じサーバーからデプロイする方法

複数のサイトを一つのサーバーからデプロイする方法

皆さん、こんにちは! Djangoのアプリはデプロイできたけど、複数のDjangoアプリを同じサーバーからデプロイしたいという方に是非読んでほしい記事です。 Djangoのアプリのデプロイができたら複数のDjangoアプリをデプロイすることも特に難しいことはないので是非チャレンジしてください。 今日の環境 Ubuntu 22.04のインストールされたサーバー SSHで接続できる状態 Djangoアプリが一つデプロイされている状態 詳しいDjangoのデプロイについては下記の記事から進めてください。 Djangoがデプロイができたらこの記事に戻ってきましょう! 今日はticketauthという名前のアプリをデプロイします。 あと、Linuxのコマンド(Bash)が少しわかっている方が理解しやすいです。 今日のスタック 今日は上記の記事で紹介したNginxをウェブサーバー、GunicornをWSGIのアプリケーションサーバーとして使用したものに2つ目のDjangoを追加するようにします。 Djangoがデプロイできた状態でさらにもう一つDjangoのアプリを同じサーバーからデプロイするような形で進めます。 ユーザーがアクセスする方法 同じサーバーに複数のドメイン(なんとか.comとか)でそれぞれのDjangoアプリに誘導する方法もあります。 今日は今使っている80番のポートがあるので81番のポートを開けてユーザーがIPアドレスから2つ目のDjangoアプリにアクセスできるようにします。 Djangoアプリをアップロード では、自身で作成したDjangoアプリ(2つ目)をアップロードしましょう。 場所はどこでもよいですが、前回はhome/user名の直下に置いたので同じ階層に置きます。 ticketapiが前回デプロイしたものです。 tikcetapiAuthが今アップロードしたばかりのものでこれからデプロイします。 下準備 では、前回の記事を参考にしながら、下記のDjangoの下準備を進めましょう。 Django用に仮想環境を作成 仮想環境をアクティベート pipでDjangoプロジェクトのライブラリをインストール Settings.pyのコンフィグ設定 DBの設定(PostgreSQLに接続) Staticファイルの扱い データベースのマイグレーション スーパーユーザーの作成 collectstaticの実行 ファイヤーウォールの設定 Djangoのテストサーバーでテスト Gunicornを使ってテスト Gunicornの設定ファイルの作成 ではDjangoのテストサーバーでIPアドレスからアクセスして問題がないようでしたら、2つ目のDjango用に新しくGunicornの設定ファイルを作成します。 今回使うのは、SocketファイルとServiceファイルです。 Gunicornのソケットファイルの作成 前回の記事でgunicorn.socketファイルを作成しているので2つ目のアプリ用と分かるような名称にして.socketファイルを作成します。 中身はこんな感じになります。 Gunicornのサービスファイルの作成 サービスファイルはGunicornがDjangoのファイルをプロセスするためのコンフィグファイルになります。 テストサーバー(python manage.py runserver)の本番用という事ですね。 では下記のコマンドでサービスファイルを作成します。 中身はこのような感じです。 次に下のコマンドでGunicornソケットを実行します。これで自動でソケットファイルが作成されます。 次にこれをEnable(実行:オン)にします。これで、ソケットに接続された際にsystemdが自動でgunicorn.socketを実行して処理してくれるようになります。 Gunicorn Socketファイルを確認しよう gunicorn.socketをアクティブにします。 … Read more

Gunicornってなに?

Gunicornって何

DjangoやFlaskなどのPythonアプリケーションをデプロイする際に使うGunicorn(ジーユニコーン)。 デプロイはできたけど、実際にどのような役目をしているのか分かりづらいですよね。 今日はGunicornについて紹介していきます。 Gunicornとは Gunicorn(Green Unicorn)は、PythonのWebアプリケーションサーバーであり、高速で拡張可能な環境でのWebアプリケーションのデプロイメントを容易にするために設計されています。 Gunicornは、WSGI(Web Server Gateway Interface)準拠のWebアプリケーションフレームワークと連携して動作します。WSGIは、PythonのWebアプリケーションとWebサーバーの間の標準化されたインターフェースです。つまり、GunicornはPythonのWebアプリケーションを受け入れ、HTTPリクエストを処理し、Webアプリケーションに渡す役割を果たします。 Gunicornの特徴的な特徴の一つは、マルチワーカーモデルを採用していることです。これにより、複数のプロセスを同時に実行し、複数のリクエストを同時に処理することができます。これにより、Webアプリケーションのパフォーマンスが向上し、ユーザーに迅速かつ効率的なレスポンスを提供することが可能になります。 さらに、Gunicornは拡張性に優れています。ワーカープロセスの数や接続数などのパラメーターを調整することで、サーバーの動作を調整することができます。また、NginxやApacheなどのリバースプロキシと組み合わせて使用することもできます。これにより、Gunicornは高トラフィックの環境でも優れたパフォーマンスを発揮することができます。 Gunicornはコマンドラインツールとして提供されており、比較的簡単にインストールして使用することができます。また、Pythonの仮想環境やDockerコンテナ内など、さまざまな環境で利用することができます。 要約すると、GunicornはPythonのWebアプリケーションを高速かつ拡張可能な方法でデプロイするためのサーバーソフトウェアです。マルチワーカーモデルと拡張性の高さが特徴であり、Webアプリケーションのパフォーマンス向上とスケーラビリティを実現します。 以下、さらに詳しく説明します。 Gunicornの定義 Gunicornの公式サイトに記載されているものを翻訳します。 Gunicorn もしくは緑のユニコーンとはPythoinのWSGI HTTPサーバーでUnixの為に作られました。これはPre-Forkワーカーモデルです。(※各ワーカーをアプリケーションごとに割り当てロードに必要なキャパシティ以上を割り当てる) Gunicornは様々なウェブフレームワークに対応し、簡単に実装でき、サーバーに負担のかからない、軽量なサーバーになります。 Gunicornができた経緯 Gunicorn(Green Unicorn)は、RubyのWebサーバーであるUnicornにインスパイアされて作られました。RubyのUnicornは、高パフォーマンスで信頼性の高いWebアプリケーションサーバーとして広く使用されていました。 Pythonのコミュニティでは、RubyのUnicornの成功とパフォーマンスの高さに触発され、同様の機能を持つPython用のWebサーバーが求められるようになりました。そこで、Python開発者のBenjamin PetersonがGunicornを開発しました。 Gunicornの開発は、2009年に始まりました。当初はワーカープロセスの管理やリクエストの処理など、基本的な機能の実装に焦点を当てていました。その後、GunicornはPythonのWSGI(Web Server Gateway Interface)仕様との互換性を持つように拡張され、Pythonの主要なWebフレームワークとシームレスに連携できるようになりました。 Gunicornは、PythonのWebアプリケーションサーバーとしての需要を満たすため、活発なオープンソースプロジェクトとして成長しました。開発者コミュニティの貢献により、Gunicornは安定性とパフォーマンスの向上が図られ、多くのユーザーによって利用されるようになりました。 また、Unixのアプローチとして、毎回アプリケーションのデプロイをするたびに下記の作業が必要でした。 以上の作業がアプリケーションのデプロイごとに必要になりとても時間がかかります。 それを解決するのがGunicornになります。 サーバーの仕組みを理解する Pythonのウェブアプリケーションのデプロイには下記の3つのスタックが必要になります。 ウェブサーバーはユーザーからのリクエストを受け、ドメインロジックとHTTPコネクションを担当します。ウェブサーバーは正しいリクエストだけを判別し、実際のDjangoアプリ等に渡してあげることが役目になります。 Django等のアプリケーションは各リクエストに対してリスポンスをすることしかできないことを理解しておきましょう。 ではアプリケーションサーバー(Gunicorn)の役目をこれから説明します。 Web Server Gateway Interface(WSGI)とは Web Server Gateway Interface(WSGI)は、PythonのWebアプリケーションとWebサーバーの間の標準化されたインターフェースです。WSGIは、PythonのWebアプリケーションフレームワークやWebサーバーの開発者が、相互に互換性のあるコンポーネントを作成するための共通のルールを提供します。 WSGIの主な目的は、WebアプリケーションフレームワークとWebサーバーを疎結合にすることです。これにより、異なるフレームワークやサーバーを組み合わせることができ、柔軟性と再利用性が向上します。WSGIを使用することで、Webアプリケーションの開発者は、特定のWebサーバーに依存しないアプリケーションを作成できます。 WSGIでは、2つの主要なコンポーネントが定義されています。 WSGIを使用する場合、Webサーバーとアプリケーションはお互いに疎結合であるため、異なる組み合わせが可能になります。これにより、異なるWebフレームワークを使用したり、Webサーバーを切り替えたりする際の柔軟性が向上します。 要約すると、WSGIはPythonのWebアプリケーションとWebサーバーの間の標準化されたインターフェースであり、疎結合性と柔軟性を提供します。WSGIによって、PythonのWebアプリケーションは異なるフレームワークやサーバーと組み合わせることができ、再利用性と相互運用性が向上します。 WSGIサーバーとしてのGunicorn Gunicornは複数のウェブサーバーと交信ができます。またGunicornはどのウェブサーバーを使っているかも気にしません。(例えばNginxとかApacheとか) GunciornはWSGIサーバーとしてウェブサーバーとコミュニケーションが取れることだけと条件としています。 GunicornはウェブサーバーとPythonアプリケーションの間に入り下記の問題を解決してくれます。なので自身で解決策を探す必要がありません。 Gunicornの代替オプション … Read more

Postgresのユーザーのパスワードを忘れた場合

PostgreSQL

サーバーで色々操作していてPostgresのデータベースで使うユーザーのパスワードを忘れた場合は下記の方法で新しいパスワードを再設定しなおしましょう。 今日の環境 Ubuntu22.04 PostgreSQL 14 今日の目的 Postgresの設定ファイルから仮でパスワードなしで接続できるようにします。 その後にコマンドから、新しいパスワードを設定しなおします。 最後にパスワードでデータベースに接続させるように再設定します。 ※作業にリスクがあると感じた場合はバックアップを取るなり自己責任で操作をしてください。 pg_hba.confを探す Postgrtesをインストールした後にpg_hba.confのコンフィグファイルも作成されます。ここでユーザーがどのようにデータベースに接続できるようにするか設定できます。 通常は下記のファイルパスにあります。 PostgreSQLのバージョンによりファイルの場所が少し変わるので注意します。 /etc/postgresql-9.1/pg_hba.conf /etc/postgresql/14/main/pg_hba.conf rootで入っている場合はpwdのコマンドでどこにいるか確認しましょう。 cd のコマンドとlsのコマンドを使いながらPostgresの場所を探します。 pg_hba.confを見つけました。 pg_hba.confのバックアップをとる では下記のコマンドでオリジナルのファイルをコピーしておきます。 ※パスワードをリセットしたらこっちに戻します。 ファイルがコピーで来たことを確認しました。 認証方法を変更する ではテキストエディタを使ってこのpg_hba.confを開きます。 もともとはこんな感じになっていますね。 これを下記のように変えます。 Ctl +X で抜け出し Yで上書き、エンターでファイル名をそのままにします。 Postgresのサーバーをリスタートする ではファイルを更新しただけではコンフィグを読み取ってくれないのでPostgresのサービスを再起動します。 postgresのユーザーで接続する ここでコンフィグをtrustにしたのでどのユーザーでもパスワードなしで接続できるようになりました。 ではpostgresのユーザーで接続してみます。 パスワードなしで入れました。 パスワードを更新する では更新したいユーザーのパスワードを下記のコマンドで更新します。 元のコンフィグファイルに戻す パスワードなしで誰でも接続できてしまうのは危険なので、元のファイルに戻します。 Postgresサーバーのリスタート 同じようにPostgresのシステムを再起動します。 これでpsqlのコマンドでパスワードが聞かれたらもとに戻っているという事ですね。 ではお疲れ様です。