webシステムの勉強を始めようと環境構築に勤しんだ記録です。今回はVirtualBoxやHyper-VではなくWSL2で挑戦しました(作業機のOSはWindows11 Pro 22H2です)。
WSL2インストール
PowerShellを起動しコマンド一発です。拍子抜けするほど簡単でした。
wsl --install
このコマンドですとUbuntuがインストールされます。Ubuntuで良い場合はこれでOKなのですが、私はPostgreSQLを慣れた環境で使いたかったのでRHEL系を探してみました。
wsl --list -o
利用可能な一覧が表示されます。
OracleLinux8.5で作ることにしました。
wsl --install -d OracleLinux_8_5
インストールが始まり少し待つと別ウインドウでOracleLinuxが表示されます。ユーザー名とパスワードを入力するとインストール完了です。なんとも簡単です。
要るものを最初に入れる
後の作業で必要になるものや自分が使いやすいエディタを忘れないうちに入れておきます。キャプチャは取っていませんがdnf updateもやっておきましょう。この記事を作ったときはやり忘れていました(あはっ)。
sudo dnf install epel-release
sudo dnf install nano htop neofetch
neofetchは完全に個人的な趣味ですw
最初にやること(systemdを使えるようにする)
WSL環境ではsystemctlを使おうとすると「System has not been booted with systemd as init system (PID 1).」とお𠮟りを受けます。そのまんまで「systemdがPID1じゃない」ということなのですが、これを恒久的に解消するための作業を最初に行います。出でよ、ジェニー!
wget https://github.com/arkane-systems/genie/releases/download/v1.36/genie-1.36-1.fc33.x86_64.rpm
sudo dnf install genie-1.36-1.fc33.x86_64.rpm
ここでpsコマンドを使って状況を見てみましょう。
では、genieを初期化→開始します。
genie -i
ちょっと時間がかかるので気長に待ちましょう。
そして・・・
genie -s
再度psコマンドを実行してみましょう。
これでめでたくsystemctlを使えるようになったのですが、このままではwslを再起動するとまた元に戻ってしまいますので対処します。
nano ~/.bashrc
ここの末尾へ追記します。
if [ "`ps -eo pid,lstart,cmd | grep systemd | grep -v -e grep -e systemd- | sort -n -k2 | awk 'NR==1 { print $1 }'`" != "1" ]; then
genie -s
fi
こんなふうにしておきます。
と、ここまで来て「WSLの再起動ってどうするんだろ?」と思ったら一度wslを落としてしまうんですね。PowerShellに戻って実行してください。
wsl --shutdown
これで再度WSLを起動させればOKです。genie -iのときと同じように「!」がいっぱい表示されます。
これで何を意識しなくてもsystemctlを使えるようになりました。先人たちの記事がとても参考になりました。感謝!です。
PostgreSQL15のインストール
以前の記事ではソースコードからコンパイルしました(PostgeSQL10)。
今回は最新バージョンの15をdnfでインストールしていきます。そのままだと15が入ってくれないので準備を行います。
sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install postgresql15-server
これでPostgreSQL15のインストールが終わりました。折角なので設定もしてしまいましょう。
sudo -i -u postgres
/usr/pgsql-15/bin/initdb -D /var/lib/pgsql/15/data
実ははじめWSLをUbuntuで組んだのですが、Ubuntuのポスグレではinitdbが見当たらなくて焦りました。Ubuntuは先日10年サポートの発表もあったので、使い勝手が揃っていると嬉しいですね。
さて、環境変数を設定しましょう。
nano ~/.bash_profile
末尾に加筆します。
export PATH=/usr/pgsql-15/bin/:$PATH
export LD_LIBRARY_PATH=/usr/pgsql-15/lib/:$LD_LIBRARY_PATH
export PGDATA=/var/lib/pgsql/15/data
読み込みなおして完了です。
source ~postgres/.bash_profile
コマンドが通ることを確認しておきましょう!
nano $PGDATA/pg_hba.conf
nano $PGDATA/postgresql.conf
pg_ctl start
Apacheのインストール
ここは普通にdnf installだけで行えます。セキュリティ対策については触れておりませんのでご注意ください。
sudo dnf install httpd
sudo systemctl enable httpd
sudo systemctl start httpd
PHP8のインストール
Apache同様セキュリティ対策には触れていませんのでご注意ください。
まずremiリポジトリを追加します。
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
デフォルトのバージョンがいくつか見てみます。
sudo dnf module list php
PHP8を入れられるようになりましたので進めます。DBアクセスにはPDOを使いたいので一緒に入れましょう。
sudo dnf module install php:8.0
sudo dnf install php-pdo php-pgsql
動作テスト
テストファイルを作ります。
sudo nano /var/www/html/index.php
ここへ
<?php
phpinfo();
Apacheを再起動してブラウザでlocalhost/index.phpへアクセスしてみましょう。
sudo systemctl restart httpd
DBに適当なテーブルを作ってPDOもぜひ試してみてください。最後までご覧くださって有難うございました!
コメント