2023年9月25日月曜日

Microsoft Azure - その8. RDBMS

前回まででAzureのIaaSの仮想マシンで
ウェブサーバ(https)が動作するようになりましたが、
まともなウェブアプリを作ろうとするとデータベースサーバは必須です。
以下ではRDBMSにPostgreSQLを使用しています。
ただメモリ500MBの仮想マシンでは辛いので1GB品を使うことをお勧めします。
またフリーのRDBMSのもう一つの優MySQLではメモリ500MBの仮想マシンだと
メモリが足らずにインストール時にトラブルとなるのでお勧めしません。

ということで以下のコマンドでPostgreSQLをインストールします。
# apt install postgresql
# apt install postgresql-contrib
でPostgreSQLの管理ユーザーとして
ユーザー"postgres"ができているはずなので
以下のようにこれにログインして各種設定。
$ sudo su - postgres
$ createuser --interactive
Enter name of role to add: <データベース名>
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
$ psql
postgres=# ALTER USER <ユーザ名(=データベース名)> PASSWORD '<パスワード>';
postgres=# \q
$ createdb <データベース名>
$ exit
$ su -
# adduser <データベース名>
Adding user `<データベース名>' ...
Adding new group `<データベース名>' (1002) ...
Adding new user `<データベース名>' (1002) with group `health' ...
Creating home directory `/home/<データベース名>' ...
Copying files from `/etc/skel' ...
New password: <パスワード>
Retype new password: <パスワード>
passwd: password updated successfully
Changing the user information for <データベース名>
Enter the new value, or press ENTER for the default
        Full Name []: <データベース名>
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y
# exit
これでデータベース"<データベース名>"と
それを扱うLinuxアカウント"<データベース名>"が作成できました。
PostgereSQLでは任意のユーザーが"psql"コマンドを引数なしで実行すると、
ユーザー名と同名のデータベースに自動的にアクセスするので、
このようにしておくと後々のメンテナンスが楽になるというのもありますが、
ウェブアプリからのデータベースにアクセスする際の
セキュリティを考えてこうしています。
次いで以下を実行してデータベース内のテーブルを作成します。
なお、このテーブルの構成は開発初期のテスト用であるので、
実際の構成はウェブアプリケーション側の仕様を確認すること。
手順的には例えば以下のような感じにはなります。
$ su - <データベース名>
$ psql
<データベース名>=> CREATE TABLE users(id INT,name TEXT,PRIMARY KEY(id));
<データベース名>=> INSERT INTO users(id,name) VALUES(0,'一郎');
health=> \dt
health=> select * from users;
health=> \q
次に以下を実行してPHPからPostgreSQLにアクセスできるようにします。
# apt install php8.1-pgsql
[enter]キー
ここで設定ファイル"/etc/php/8.1/apache2/php.ini"の以下の
コメントアウトされている行を有効にすればOKです。
extension=pdo_pgsql

0 件のコメント:

コメントを投稿