RedmineのDBをPostgreSQLからMariaDBに移行

TL;DR Redmine 4.2.5にて、yaml_dbを利用することでPostgreSQL(14.2)からMariaDB(10.4.24)に移行できました 経緯 GCPのVMの無料枠(e2-small,Mem:1GB,HDD:30GB)で以下のDockerコンテナクラスタ(docker-compose)でredmineを運用しています。 redmine: 4.2.5-alpihne postgres: 14.2-alpine steveltn/https-portal: 1.21.1 環境が激poorなこともありますが、たまにアクセスするとページが表示されるまで10秒近く待たされることも。そこで、より軽量と思われるMySQL系のMariaDB(10.4.24)に移行しました。パフォーマンスが改善されたかどうかは、現在様子見です。 以下の手順を踏みました。 コンテナクラスタを停止 docker-compose.ymlにMariaDBコンテナを追加し、redmineコンテナから接続できるようnetwork設定し、rootた上で起動 docker-compose execコマンドでredmineコンテナに接続 apk-add mariadb-clientを実行してクライアントツールをインストール /usr/src/redmine/config/database.ymlのバックアップを取得した上で、記述をMariaDBに接続できるよう(adapterはmysql2) mysqlコマンドでMariaDBコンテナに接続し、Install Redmineの手順を参考にDBを作成 Install Redmine](https://www.redmine.org/projects/redmine/wiki/redmineinstall)の手順を参考にrake db:migrateでDBを初期化 /usr/src/redmine/Gemfileにgem "yaml_db"の記述を追加してgem bundle updateを実行。エラーとなるが、途中yaml_dbのインストールが成功していればOK /usr/src/redmine/config/database.ymlを更にバックアップした上で、前にバックアップしていたPostgreSQL用の設定に戻してRAILS_ENV=production bundle exec rake db:data:dumpを実行。/usr/src/redmine/db/data.ymlにバックアップが作成される /usr/src/redmine/config/database.ymlをMariaDBの設定に戻し、RAILS_ENV=production bundle exec rake db:data:loadを実行。 mysqlコマンドでMariaDBコンテナに接続し、データがリストアされていることを確認 docker-compose.ymlのPostgreSQLコンテナの記述を削除し、redmineコンテナからMariaDBコンテナに接続するよう設定を修正した上で起動。 参考サイト: https://hnron.hatenablog.com/entry/2015/08/18/012738

<span title='2022-04-01 00:00:00 +0900 +0900'>April 1, 2022</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41

アルファメールプレミアでDBバックアップ

TL;DR アルファメール(プレミア)ではshellの直接実行はできない。が、phpのexecを利用すればほぼ同じことができます。 経緯 自社のWEBサイトを大塚商会のアルファメールプレミアでMovable Typeを利用して運用しています。バックアップに関して、コンテンツファイルはFTP(over TLS)でCLIで取得できますが、DBに関してはphpMyAdminを利用してブラウザからボタンポチポチで取得していました。 WEBコンソールのメニューの中に「cron設定」という項目があるのに気づいて調べたところ、拡張子が「.cgi」または「.php」のファイルの一覧から選んで指定時刻に実行してくれるということのようでした。 こういうバッチ的な利用が可能なのであれば、execでOSコマンドも実行できるのでは、と思ってmysqldump叩いてみたところ実行できました。これはありがたいということで、AWS SDK for PHPのpackaged phar版をダウンロードしてS3へのアップロードまでできました。 注意事項として、認証情報をファイルから取得する場合、そのファイルを含むパスに認証をかけないと危険です。 定期的に実行したいというより、サイトを更新したときに実行できれば良いので、ブラウザで該当のphpファイルを直接呼び出しています。 phpMyAdminから手動でダウンロードしてS3にアップというのは地味に面倒なので、ブラウザ呼び出し一発でできるようになって工数削減できました。

<span title='2022-03-26 00:00:00 +0900 +0900'>March 26, 2022</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41

Active Directoryでログイン時にPowershell経由でexeを実行

TL;DR Active Directoryでログイン時にexeファイルを実行する場合はStart-Processでの実行が必要 経緯 Emotetが流行っているので、EmocheckをActive Directory のログインスクリプトに仕込んでみていた。 単体では実行できるので問題ないと考えていたが、どうもActive Directory のグループポリシーでログイン時に起動する設定をすると何故か実行されない。イベントログを見ると一応対象として認識されているのだが… Powershell から外部ファイルを実行するにはいくつか方法があるが、以下のように実行するとダメなようだった。 $proc = New-Object "System.Diagnostics.Process" $psi = New-Object "System.Diagnostics.ProcessStartInfo" $psi.FileName = $emocheck_Exe $psi.Arguments = "-output $reportDir -quiet -json" $psi.CreateNoWindow = $true; $psi.UseShellExecute = $false $psi.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Hidden $proc.StartInfo = $psi $proc.Start() 以下のように設定することでログイン時に実行されるようになった。 Start-Process -WindowStyle Hidden -FilePath $emocheck_Exe -ArgumentList "-output $reportDir -quiet -json" -WorkingDirectory $currentDir

<span title='2022-03-23 00:00:00 +0900 +0900'>March 23, 2022</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41

Google Cloud Identity FreeでChromebook運用時の注意点

TL;DR 物理的な質感はFire TVよりよい。 機能的にはちょい劣る 素のChromecast(with Google TVじゃない方)とは完全に上位互換 Googleへのこだわりがなく、Amazon Primeの機能を利用するのであればFire TVが無難か 経緯 現在2台のモニタにFire TV Stick(無印,4K)を利用しています。妻の実家に使用しなくなったChromecastを譲渡して使ってもらっているのですが、Google Photoの動画のキャスト時にかなりの確率で止まってしまう等パフォーマンスに難が出てきたので最新のChromecast with Google TVを買って解消できないかと思い購入しました。 LANアダプタもセットで。計10,000ほどで、高かったかも。 昨年Pixel6を購入していてクーポンが余っていたため、使ってしまおうという動機もありました。 せっかくなので、手持ちのFire TV Stickとの比較もしてみました。自分の使用用途しか考慮していません。 比較 Fire TV Stick Chromecast with Google TV Chromecast 備考 YouTube OK OK NG 機器単体での再生 AmazonPrime OK OK NG 機器単体での再生 GoogleCast AirReciever等でOK OK OK Kids制限 OK OK - 複数アカウント OK OK - AirPlay AirReciever等でOK AirReciever等でOK NG 写真の選択表示 OK(Amazon photos) NG(壁紙設定のみ) NG(同左) 実家でCastに利用しているのはiPhone,iPadなのでAirPlayで動画を再生できればよかったのですが、AirRecieverではそもそもGooglePhotoの画面を表示できませんでした。他のスマホの操作画面であれば映るのですが… AirRecieverはソフト自体は有名ですが作者の情報が不明で、利用には不安を感じているのですが、GoogleCastが目的であればChromecast系では利用せずに済みます。 Chromecast with Google TVについて 色を白じゃないのを買ったのですが、電源ケーブルとアダプタは白だった… だったら販売も白だけにしてくれよと思う… 箱や質感はさすがGoogleといった感じで、Fire TV Stickよりよいです。 Googleアカウントのパスワードに「{」という記号を含んでいたのですが、どうもその場合に相性が悪いらしくGoogleアカウントの登録がエラーに。さらにリモコンで手動で登録しようとしてもこの記号がソフトウェアキーボードに表示されない… 仕方ないのでGoogleアカウントのパスワードを変更しました。 写真(Google Photos)を機器単体で自由に選んで表示することができない。壁紙、スクリーンセーバーとしてしか設定できない。これができれば自分でとった写真や動画を大画面で見られて最高なのに、なぜGoogleはやらないんだろう… 結論 Fire TV StickになくてChromecast with Google TVにしかできない機能は見当たらない。逆はある。質感、ブランドなどにこだわりがなければFire TV Stickのほうが良さそう。...

<span title='2022-01-06 00:00:00 +0900 +0900'>January 6, 2022</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41

Google Cloud Identity FreeでChromebook運用時の注意点

TL;DR Google Cloud Identity Freeで作ったアカウントをChromebookで利用すると、個人で作ったアカウントとは初期値等が異なります。 経緯 リモート接続用の端末をコストを抑えて運用するため、Google Cloud Identity Freeでアカウントを作成してChromebookに利用しています。できることは制限されますが、紛失時にアカウントをロックして利用できなくするくらいのことはできます。 個人でもChromebookを利用しているのですが、いくつか初期値などが異なっていました。 Google Driveが利用できない Admin Consoleで、[アプリ]-[Google Workspace]-[サービスのステータス]で「ドライブとドキュメント」がオフになっていたので、オンにすることで利用できるようになります。Driveのファイルを操作するSpreadsheetやDocumentも同時に利用可能になります。 PINログインが設定できない Admin Consoleで、[デバイス]-[Chrome]-[設定]-[ユーザーとブラウザ]で[セキュリティ]-[ロックのクイック解除]で「PIN」にチェックを入れると利用できるようになります。 https://office-kabu.jp/chromebook/gsuite-pin-fingerprint-setting-01 マルチログインで2番目にログインできない 初期値では、マルチログインで、最初のセッションとしてはログインできますが、2番めのセッションとしては指定できません。マルチログイン アクセスを管理するを実行します。

<span title='2021-11-26 00:00:00 +0900 +0900'>November 26, 2021</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41