前段
以前、然程困る事も無くセットアップできていたRedmine6ですが、
WindowsにRedmine6を立てる①
気が付けば同じ事をしてもセットアップが出来ない…と。 とても困りました。
【Aiに相談しながら色々試した事】
1)Ruby のバージョンダウン(3.3 ⇒ 3.2 ⇒ 3.1) = 全滅
2)Visual Studio Build Tool の Install
3)gemの依存パッケージ含め、正常にセットアップされた頃に全指定
ここまでやってみて、全滅…と。心の折れた瞬間でした。
オーダーはWindowsを使い、Redmine6 を運用する事だったので、手を出した事の無い仮想の世界へ。。。
1)Docker = ライセンスを確認すると、有料になる可能性があり = パス!
2)Hyper-V = IPアドレスの管理が大変そう = パス!
3)WSL2 = これしかない…と。
WSL2(セットアップ編)
前提として、Linuxをコマンドで扱える必要があります。
扱ってみて良かったと思う点。
・構築した環境をエクスポート&インポートで容易に移築可能、複数運用可能
・Microsoft Store から簡単にセットアップが可能
(Microsoft Store に接続できなくても、Dockerイメージを利用可能)
※ Dockerイメージは、GitHubで共有されています
・軽量/安定/速度もOK
扱ってみて苦慮した事
・ポートフォワーディング
・Windowsのファイアウォール
【準備方法】
以下をざっと流し読みしましょう。
https://learn.microsoft.com/ja-jp/windows/wsl/install-manual
(以降のPowerShellは、管理者で実行します)
まずは、以下のコマンド2つを実行します。
WSL機能の有効化と、仮想マシン機能の有効化です。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
その後、Windowsを再起動します。
流し読みしたMicrosoft中段辺り、
「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」
というリンクが用意されています。(以下がリンク先でした)
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
ダウンロードして実行すると、以下のような画面が起動しますので、Finish まで進めます。
その後、再度、PowerShellです。
wsl --set-default-version 2
wsl --install -d Debian
この後は、Linuxが起動し、LinuxのユーザIDとパスワードの入力待ちとなります。
起動してしまえば、Linuxの世界なので、以下で対応が可能です。
RaspberryにRedmine6を立てる
注意点としては、パッケージをInstallしても、結構古い状態になります。
apt-get update
apt-get upgrade
apt-get install postgresql vim ruby ruby-dev libyaml-dev libpq-dev subversion build-essential
groupadd redminegrp
groupadd redminegrp
passwd redmine パスワード設定
passwd postgres パスワード設定
vi /etc/postgresql/15/main/pg_hba.conf (peerをパスワードに変更)
vi /etc/postgresql/15/main/postgresql.conf (localアクセスに変更)
su - postgres
createuser -P redmine
createdb -E UTF-8 -O redmine -T template0 redmine
exit
mkdir /test
chmod 777 -R /test
cd /test
svn co https://svn.redmine.org/redmine/branches/6.0-stable/ redmine
sudo chmod 777 -R redmine
cd redmine/config
cp database.yml.example database.yml
vi database.yml (db接続情報の準備)
cd /test/redmine
gem install bundler
bundle config set --local without 'production:rmagick'
bundle install
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data
bundle exec puma -e production -p 3000
WSL2(セットアップのやり直し編)
Linuxのセットアップ途中で、変な事をしてしまい、やり直したい時は以下です。
・WSLの一覧確認と不要環境の削除
wsl -l -v
コマンド実行により、WSLの環境が確認できます。
不要な環境は削除することも可能です。
wsl --unregister Debian12
wsl -l -v
WSL2(Linuxで作業を再開する時)
Linuxのメンテナンス作業を行いたい場合や、機能追加を行いたい場合
wsl -d Debian (Debianはwslで確認したNAMEの部分)
とすると、Linuxが起動して、PowerShellからコンソールが切り替わります。
起動するLinuxは、起動するWindows内で仮のIPが附番されます。
WSL2(別のWindowsに移築する場合)
別の環境に移築する場合は、以下のコマンドでエクスポートとインポートが可能です。
wsl --export debian1 c:\wsl\bk.tar
wsl --import DebianX C:\wsl\debian2 C:\WSL\bk.tar --version 2
エクスポート時:wslの名前を指定して、tarファイルで出力します
インポート時:wslの名前、保存先とtarファイルを指定します
(インポート時は、保存先を指定できるので、使い勝手が良いですよね)
tarファイルはパッケージを追加すれば、当然、サイズが大きくなるので注意しましょう。
WSL2(ポートフォワード)
LinuxにWebサービスを準備すると、準備したWindowsからは、localhostとしてアクセスが可能です。ただし同一ネットワーク上の別の環境からはアクセスできません。
そこでポートフォワードにより、外部からポート〇番でアクセスしてきたら、WSLのポート〇番を提供する…こんな定義を行います。
ポイント1) PUMAの起動を、どこからのアクセスでも受け付けるようにしましょう。
bundle exec puma -e production -b tcp://0.0.0.0:3000
ポイント2) PowerShellにてポートフォワードします
netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=3000 connectaddress=WSLのIPアドレス
wslのIPアドレスは、PowerShellで、「wsl hostname -I」を実行すると確認できます。
ポイント3) Windowsのファイアウォール設定を変更しましょう
外部から3000番のポートで、WSL上のPUMAへ連携するので、3000番のポートを受信許可する必要があります。
(ポイント:まとめ)
FireWallの設定は行うしかありませんが、起動制御の部分は、AiにShellを作成して貰って、稼働を運用する事が可能です。(Aiを良きパートナーとして使いこなしましょう)
WSL2(Windowsのデータベースを使う場合)
Postgresは、Windowsにセットアップして別のアプリにも使う…。開発環境ではよくありそうな話ですよね。
ポイント1) Windowsのファイアウォール設定を変更しましょう
postgresのポート(デフォルト:5432)を開放します。
ポイント2) WSL上のRedmineのDB接続定義「database.yml」で、hostに、windowsのIPアドレスを指定します
ポイント3) Postgresのpg_hba.confの設定で、hostの受付を広く、0.0.0.0で設定します
WSLは、LinuxユーザがWindowsで何とかする場合に有効な手段となるようです。
(本音は、Linuxを準備すれば済むのに… の一択です)
以上、御疲れ様でした~