サーバー運用とPC日記
NetCommons3.3.6リリース!
最新版 NetCommons3.3.6 が、ほぼ1年ぶりにリリースされました!
「重大なセキュリティバグの修正」が含まれるとのことでしたので、
先ほどupdateを済ませました。
関係の方々に感謝申し上げます!
AC電源の極性
家庭用AC電源の極性について、最も一般的な注意事項は、
「電気工事その他配線の際、接地極を必ず指定された側に接続する」というのがあります。
接地極と大地は常に同電位ですから、通常、人が接地極に触れたとしても感電はしません。
電極に直に人が触れることはほとんど無いはずですが、
例えば電球のネジ側の極には触れてしまう危険性があります。
ですから、電球のネジ側の極には、接地側の線を配線しなくてはならない規則になっています。
また、電気製品の金属部分を触った時に、
感電まではしなくてもピリピリする感覚を経験したことはないでしょうか?
このピリピリする感覚は、電源プラグを逆に刺し直すと低減することがあります。
感電を避けるという観点だけから見ても、電気製品の電源プラグの刺し方で差が生じるのです。
自分は今まで、AC電源の極性については、
感電を避ける理由で「大地に対して電位差が生じないように」意識していました。
ところが、今日初めて、
電源プラグの刺し方によってはWifiルーターが不安定になる(!)
という記事を見つけました!
Wifi系の機器は電源ノイズが大敵だと。
そして、「Wifiを含めたネットワーク機器の電源は、極性を合わせてAC電源に繋ぐべきだ」
とも書かれていました!
Wifiを使うスマートプラグに接続の極性があるのも、そういう理由だったのか!
と初めて納得出来ました。
また、自宅のWebサーバー、ルーター、ハブ等、
全て電源の極性を合わせて、正しく接続してみようと考えているところです。
<参考資料>
サイトのバックアップ
自分の自宅サーバー内のサイトのメンテナンス(バックアップ等)についてです。
低TDPの安価な新型マザーボードが出るタイミングで、
マザーボードとストレージ(SSDとHDD)を交換し、OS(Debian)もヴァージョンアップしてきました。
ところが、今回はまだ新型マザーボードが発表されていません。
そこで、ハードウェアの交換を待たずに、Webサイトのバックアップのみ昨夜行いました。
現サイトは個人運用ですから、
サーバーの故障や破壊があった時は、
状況によってはサイトも復旧できず、全て内容が失われることになります。
例えば地震や火災などで、サーバーマシンごと完全に壊れてしまうリスクはゼロではありません。
そんな時は、さすがに仕方ないとあきらめようとは思っています。
しかし、このサイトに備忘録として書き留めてある内容などは、自分にとってかなり貴重なものですし、
昔の想いや考えを過去に遡って読めるようにしておくことも、やっぱり自分には貴重なことです。
そこで、やはり、バックアップといった自分で出来ることは、定期的にやっておこうということになります。
<Netcommonsサイトのバックアップ>
①データベースのバックアップと、バックアップファイルの保管
②インストールディレクトリをそのままコピーして保管
<Wordpressサイトのバックアップ>
①Wordpressに実装されているバックアップ機能を使い、バックアップファイルを保管
現状では、この方法が最も手っ取り早いのではないかと思います。
素人的な方法だと思いますが、サイトのuploadディレクトリが肥大化していたりしても、
ローカルサーバーですし、ハードディスクを追加してそこにSSD内のファイルをコピーしたりも簡単に出来ます!
さらに、自宅内であっても、別の部屋のバックアップサーバーにファイルコピーをする等すれば、
多少であっても安全性は高まるでしょう。
iOS、iPadOS 出来るだけ早くアップデートを!
アップルは、スマートフォンなどの基本ソフト(OS)について
「ハッカーが端末に侵入する恐れのある安全上の脆弱性が見つかった」と発表しました。
アップルによると、
OSの脆弱性によって影響を受けるのは
「iPhone」の「6S」以降のモデル、
第5世代以降の「iPad」
「iPadプロ」のすべてのモデルなどです。
アップルは、
ハッカーがこの脆弱性を利用して端末を乗っ取ったり、
悪意を持って作成されたWEBコンテンツを通じて端末に侵入することができる、
といった恐れがあるとしています。
アメリカ政府のサイバーセキュリティ当局は
「ハッカーはこれらの脆弱性を悪用する可能性がある」
と警告していて、
できるだけ早く必要なアップデートを行うようユーザーに呼び掛けています。
8/20(土) 4:49配信
旧URLへのアクセスを新URLへ導くには?
旧URLのアクセスがあった時への対応はどうしようか迷ったんですが、
対応しないというのも不誠実だと思い、調べてみました。
「Redirect」を使うというのは何となく分かっていたんですが、
旧URLを使ったサイトを用意する必要があるのではないかと思い込んでいました。
今回、時間がたっぷりとあったので、色々と調べたり考えたりしているうちに、
apacheの、旧URLに対応したヴァーチャルホストの設定ファイルに、Redirect設定を書き込めば?
と思いあたりました。
旧URL用httpアクセス設定ファイル 〇〇〇.confの中身は
<VirtualHost *:80>
ServerName 〇〇〇.pgw.jp
Redirect / https://△△△.mydns.jp/
</VirtualHost>
だけです!
このあと、LetsEncrypt自動設定を行います。
#certbot --apache
旧URL用の処理を選ぶと、旧URL用httpsアクセス設定ファイルを自動で作ってくれます!
さて、以上の設定を済ませて運用した結果ですが、
現状、これで旧URLアクセスを新URLサイトに導けているようです。
旧URLサイトの特定のページも、新URLサイトの同じページに誘導出来ています!
補足ですが、旧URL、新URL共に利用できるよう、
DDNSサービスサイト(MyDNS)に定期的に通知を送信し、DNS情報を更新し続けていただいています。
旧サイトのアクセスURL変更
自分は、旧サイトで初めて Netcommons の運用を始めました。
その時のアクセスURLは、お世話になっている Mydns サイトで取得できるドメイン名を使うことになります。
その時、〇〇〇.mydns.jp より、〇〇〇.pgw.jp の方がかっこいい感じだと思い、ドメインはこれに決めました。
そして、ホスト名 www を付けて http://www.9monotaira.pgw.jp をアクセスURLとしたんです。
ずっとこれで運用していたんですが、ある時TREND.MICRO社の「サイト安全性チェック」で確認したところ、
この「安全」判定にはホッとしたんですが、
何と、サイトのカテゴリ評価は・・・
ん?
出会い?!
出会い系サイト?!!
ヒドイでしょう?
汚名だー!
「評価内容変更のリクエスト」は当然しました!
これで一度は改善されたんですが、
サイトをSSL化したところ、またも「出会い」カテゴリに分類されてしまったんです!
しばらく考えてみたんですが、これは、ドメイン名 pgw.jp を使うことに問題があるのではないかと思いあたりました。
例えばこのドメインが悪用された例があるとか。
試しに、存在しないサイト名 https://kakuu.pgw.jp を「サイト安全性チェック」で同様にチェックしてもらうと、
予想通り「出会い」カテゴリと診断されました!
これで状況が掴めました!
こんな訳で、旧サイトのアクセスURLをドメインも含めて変更できないか考えることにしたんです。
Netcommons3サイトのアクセスURL変更
①Netcommons3サイト内のアクセスURLが書いてあるファイルですが、
インストールディレクトリ¥app¥Config¥application.yml です。
この中のアクセスURL(1か所)を書き換えます。
②DynamicDNS等の設定は前もって済ませておく。
(certbot --apacheによるLetsEncrypt設定で、外部DNSに新URLを行き渡らせておかないとダメ)
③次は、WebサーバーApache2の設定ファイルです。
まず、
#a2dissite 〇〇〇.conf
で、該当サイトへのアクセスを無効にしておきます。
また、
#a2dissite 〇〇〇-le-ssl.conf
も実行しておきます。
#systemctl reload apache2
④新しいURL用の △△△.conf を作成
⑤新URLアクセスを有効にする。
#a2ensite △△△.conf
#systemctl reload apache2
⑥LetsEncrypt自動設定
#certbot --apache
あとは対話形式で操作を選んでいけばサイトssl化が完了!
IEモードを有効にするためにはIE機能は有効のままで
MS社のインターネットエクスプローラーのサポートがついに終了となりました。
他のアプリケーションソフトと同様、サポートが終了されたソフトは使わないようにすべきでしょう。
ということなので、IE11の代わりに他のブラウザを使うようにすればいいんです。
ところが、このブラウジングソフトの機能を使用したシステムが多数存在するようです。
例えば、メーカー提供のシステムをネットワークアクセスして使うような用途では、ほぼWebブラウジングソフトが使われているんですね。
このような時、システムを作成するメーカーは、Windows標準だったインターネットエクスプローラー使用を前提とした設計をしたんでしょう。
さて、一般的には、WebブラウジングだけならブラウザソフトをEdgeやChrome等に変更すればいいだけで、
その時WindowsのIE11機能を無効にしておくと、より安全性が高まると思います。
しかし、MS社Edgeのインターネットエクスプローラーモードを使おうという時は、
このWindowsシステム内のIE機能を有効にしたままでないと上手く行きません!
ちょっと注意して下さい!
WordPressサイトを作成
デザイン性に優れた新しいウェブサイトを利用したい、という依頼がありました。
そこで、商業的なウェブサイトとしても利用実績が多く人気の高い WordPress でサイトを作ってみることにしました。
WordPress は CMS に分類される Web アプリケーションです。
オープンソースソフトで無料で利用できます。
構築の仕方ですが、
① Web サーバーを用意
レンタルサーバーと契約、又は自前のサーバーを作る
② データベースを用意
①のサーバー内に Mysql 等のデータベース環境を用意して、WordPress サイト用のデータベースを作成する
③ WordPress 本体を WordPress.com サイトからダウンロードして、①のサーバー上で解凍し、ドキュメントルートに配置
④ このサイトにアクセスして、初期設定を完了させる
これだけです!
興味さえあれば、難しくはありません。
最初は、自宅の LAN 内で1からサーバーを作ってみるのもすごく面白いですよ!
php8にまだ対応してないアプリケーションへの処置
先日、Netcommons3のヴァージョンを、3.3.4から3.3.5に上げようと、いつもの手順で作業していました。
しかし、今まで見たこともないエラーが・・・
しばらく考えていましたが、情報も得られずエラーメッセージも分からない。
でも、もう一度良く見てみると、
Error: ReflectionMethod::__construct(): Argument #2 ($method) cannot be null when argument #1 ($objectOrMethod) is an object
> #0 /var/www/html/vendors/cakephp/cakephp/lib/Cake/Console/Shell.php(358): ReflectionMethod->__construct()
> #1 /var/www/html/vendors/cakephp/cakephp/lib/Cake/Console/Shell.php(423): Shell->hasMethod()
> #2 /var/www/html/vendors/cakephp/cakephp/lib/Cake/Console/ShellDispatcher.php(222): Shell->runCommand()
> #3 /var/www/html/vendors/cakephp/cakephp/lib/Cake/Console/ShellDispatcher.php(66): ShellDispatcher->dispatch()
> #4 /var/www/html/app/Console/cake.php(35): ShellDispatcher::run()
phpの動きに問題?
このサーバーのphp環境は7.4だったはずなんですが、調べてみたらなんと8.1に上がっていました!
こまめにOSのアップデートをしていますが、その時にphpもアップデートされてしまうのは知りませんでした。
最初にOSインストールした時、phpのリポジトリ登録は手作業でやったんですが、この関係?
ここで、Netcommonsプロジェクトにメールで相談してみました。
手掛かりがなければ、phpを元の7.4に戻してみようと思っていました。
ところが何と!
嬉しいことに、すぐ返信が届いたんです!
「Netcommons3はphp8に対応させる予定はあるが、まだ見通しが立っていません」
「サーバーをphp7環境に戻して使って下さい」
この情報で、対処の見通しがつきました!
# update-alternatives --config php
このコマンドを実行すると、出力は、
選択肢 パス 優先度 状態
------------------------------------------------------------
* 0 /usr/bin/php7.4 74 自動モード
1 /usr/bin/php7.3 73 手動モード
2 /usr/bin/php7.4 74 手動モード
現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください
といった感じでメッセージが出るので、
希望するヴァージョンのphpを選んで番号を入力、Enterすれば使用phpの切り替えが簡単に出来ます!
この後Netcommonsのヴァージョンアップの作業を再度やってみたら、無事にアップデート完了しました!
Netcommonsプロジェクトの中島様、それからプロジェクトの皆様、
本当にありがとうございました!
再度ですが、明朝 3/4(金) 4:00から、サーバーメンテのためサイトを一時停止します
今朝の作業でつまづいてしまったため、
明朝3/4(金) 4:00~4:30の予定で
再度、Netcommonsのアップデート作業を行います。
この間、サイトを一時停止します。
作業が終わりましたら、サイトを通常動作に戻します。
よろしくお願いいたします。
明朝 3/3(木) 4:00から、サーバーメンテのためサイトを一時停止します
3/3(木) 4:00~4:30の予定で
Netcommonsのアップデート作業のため
サイトを一時停止します。
作業が終わりましたら、終了の連絡と共にサイトを通常動作に戻します。
よろしくお願いいたします。
Sambaファイルサーバー仕上げ(追加)
ファイルサーバーのリモート On Off ですが、電源 On は Windows クライアント側での WOL(フリーソフト)は使用感がとてもいいです。
初期設定の NIC の MAC アドレス取得とかも非常に楽で、すぐ使えるようになります。
ファイルサーバー側の OS が完全に立ち上がってから音を鳴らしてくれる機能も good です!
サーバー側が完全に立ち上がる前に Samba にアクセスすると、ファイルアクセスだけでなく、OS のコマンド操作、Webmin からのアクセスも出来なくなることがあるので。
さて、サーバーのリモート電源 Off ですが、SSH を使ってコマンドを打ち込むやり方しか思い当たりませんでした。
Webmin からでも電源 Off は出来ますが、手順が多くちょっとやっかいなんです。
そこで、
Windows クライアントに SSH クライアントソフト Rlogin(フリーソフト) を入れておきます。
初期設定はちょっとだけで済みます。
次回の接続からはログインまで自動です!
さて、そこからですが、自分ならいつも su- コマンドで root に遷移してからシャットダウンコマンドを打ち込んでいました。
今回は、ちょっとだけですが、より簡単な操作に出来そうだということで、使用ユーザーに権限が与えられる sudo コマンドを使うことにしました。
まず sudo をインストールし、sudoユーザーの設定ファイルを編集します。
/etc/sudoers
ファイルに、権限を与えるユーザについての行を書き込んで保存します。
# User privilege specification
の下に
gonta ALL=(ALL:ALL) ALL
といった記述を書き込めば、ユーザー gonta には root 権限が与えられた上でコマンド操作が出来るようになります。
指定したコマンド操作をする時だけ root になれるということですね!
ユーザー gonta がサーバー機をリモートシャットダウンしたい時は、
gonta@server :~$ sudo shutdown -h now
とコマンドを打ち込みます。
その後パスワード入力を求められるので、パスワードを打ち込めば命令が実行されます。
なんだ! 結構手間がかかるじゃないか! と思いますが、
コマンド操作の入力履歴は、キーボード「↑」を打てばワンタッチで出てくるんですね!
ですから、サーバーの電源 Off の操作は
① Rlogin を起動(タスクバーにアイコンを置いておくと良い)
②ログイン先をクリックしてログイン(自動)
③「↑」キーを1回押して、(sudo shutdown -h now を表示させて)「Enter」キーを押す
④パスワードを入力して「Enter」キーを押す
以上です!
面倒そうに見えますが、一連の流れでスムーズに操作出来ます!
Linux 系 OS での操作ですが、良かったら試してみて下さい。
Sambaファイルサーバー仕上げ
Sambaのファイルサーバー機が嫁入りする前に、もう少し細かいところを手直ししてみます。
PowerOnにしたあと、まずはUEFIのpost画面が出ますが、この画面の表示時間を短くするには、UEFI設定で「fast」といった項目を選びます。
このマザーボードでは「ultrafast」設定がありました。
そしてUEFIがデバイスのチェックや初期化を終えると、OSのブートメニューが表示されます。
Debian11では、Grub2のブートメニュー画面ということになります。
このブートメニュー画面の表示時間がデフォルトでは結構長めなのでこの表示時間を短くしたいと思います。
/etc/boot/grub/grub.cfg
ファイルを直接編集して、
timeout = 5
等と書き換えて上書き保存しても上手くいきません。
起動時にファイルが書き戻されてしまいます。
/etc/default/grub
ファイルを編集するようです。
timeout = 1
と書き換えてみました。
このあと、
# update-grub
を忘れずに。
これで、Power On から起動するまでの時間がかなり短縮されました!
Sambaファイルサーバー設定(2)
本日は代休ということもあり、昨日の作業の続きに没頭しました。
Debian11のSambaサーバー(NASとして仕上げる)ですが、クライアントマシンからリモートで電源onに出来ないと不便です。
ということで、Wake on Lan の設定作業です。
今までの認識では、起動させようとするマシンは眠っている訳ですから、BIOSの設定だけでOSの設定は関係ないと思っていました。
今回は、マザーボード側で「Power On By PCI/PCIE Devices」をオンにしておく必要がありました。
ネットワークインターフェイスデバイスはPCIEデバイスの1つなんですね。
network boot はこの設定では関係ありません。
さて、これだけで起動してくれると嬉しいな~ と思ったんですが、やっぱりこれだけではダメでした・・・
そういえば・・・
以前 Windows 機を Wake on Lan させようとした時、デバイスマネージャーで NIC のプロパティをいじった記憶があるんです。
そこで、Debian 機の Wake on Lan 設定を検索で何とか見つけ出しました。
/etc/init.d ディレクトリ内に
wakeonlan といったファイルを作っておき、
そのファイルに以下を書き込みます。
#!/bin/bash
ethtool -s eno1 wol g
exit
このファイルの権限を変更します。
#chmod +x /etc/init.d/wakeonlan
さらに、このファイルを自動起動するよう設定します。
#update-rc.d -f wakeonlan defaults
また、
/etc/network/interfaces ファイル最終行に以下を書き加えます。
iface eno1 inet static
ethernet-wol g
以上の設定で、ようやくDebianサーバー機を wake on Lan させることが出来ました!
クライアント側の wake on Lan ソフトですが、nWOL というフリーソフトがとても良く作られていました!
また、電源Offですが、やはりSSHクライアントソフト(Rlogin等)を使ってコマンドを打ち込むようなやり方になりそうです。
これ以外に行った設定は、ファイヤウォールはもちろんですが、IPV6無効化、ローカルネットワーク外からのアクセス禁止(SSH、Webmin、Samba)等です。
これで、このサーバー機は嫁入り出来る状態までに仕上がったと思います!
今回のストレージですが、WD-REDではなく東芝のNAS用HDD12TBを2台使いました。
この2台をOSによるソフトウェアRAID1としましたが、ブートローダー grub は両方のHDDにインストールしてあります。
Sambaファイルサーバー設定(1)
LinuxSambaによるWindowsファイルサーバー(NAS)を作って知人宅に設置しようとしていたんですが、知人宅内のネットワークアドレスが自分の家でのネットワークアドレスと異なっていました。
ローカルIPアドレスは、通常 192.168.〇.△ のような数値になっていますが、この第3オクテット(〇)の値が、通常の値ではなかったんです。
ならば、こちらで設定をほぼ済ませてからNASを知人宅に持って行って、そこで最後の設定をすればいいや、と考えていました。
NASはLAN内からのファイルアクセスの他に、LinuxServerの設定、修正、updateが出来るように SSH、Webmin が使えるようにしておく他、Serverの電源OnOffをリモートで出来るようにしておいた方がいいだろうと考えていました。
現状では、セキュリティ強化の面からWindowsUpdate等によって、以前は簡単に出来ていた事が出来なくなってきているようです。
現に、今回Sambaの設定でつまづいてしまいました。
ということで、知人宅と同じネットワークアドレスを作った上で、実験を繰り返しながらこのNASを完成させた方が良さそうです。
で、最近偶然に分かったことなんですが、自宅のLAN環境にもう1台のルーターを直列に入れれば、第3オクテットを変えたネットワーク環境が作れるんですね!
このやり方で今日、Debian11のSambaファイルサーバーが90%ほど完成しました!
あとは、Wake on lan が上手く動くように明日頑張ってみたいと思います!
サイト不具合に対する現時点での対応
不具合の原因を素人なりに色々と考えながらいくつかの作業をやってみました。
①Netcommons3.3.4の不具合かもしれないと思い、3.3.3バージョンに戻してみた。
→ 作業直後は正常に戻ったように見えていたが、一晩後にはまた表示がおかしくなっていた。
②cashe、expireといったキャッシュ設定が悪さをしているかもしれないと考え、これらを無効にしてApacheを再起動。
→ 変化なし
③google pagespeedモジュールを無効にしてみた。
→ 嘘のように全く正常な表示に復帰!
PCからもスマホからも正常に表示されるようになった。
Netcommonsも最新の3.3.4に戻した。
理由はどうしてなのか分かりませんが、とりあえずこれで様子を見てみます。
どうかこのまま正常動作していて欲しいと願っています!
何をやってもダメならサイト運用を停止しないといけなくなりますが、今はグループウェアとしても使っているのでサイト停止はしたくないんです。
このサイトの不具合と格闘中
このサイトの表示に関する不具合についての正しい対処法が未だに掴めていません。
現時点での対処ですが、新しいNetcommons3.3.4ディレクトリを上書きして、アップデートコマンドを実行させるという作業を行いました。
この上書きの際、元ファイルのパーミッションを保持したままのコピーとし、最後にディレクトリとファイルの所有者をwebサーバーに変更しておきました。
これでしばらく様子を見てみます。
DDNSサービスについて
10月に入って、サイトのメンテ中に光モデムルーターを再起動して、WANからのアクセスがしばらく出来なくなったんですが、今回は復帰までの時間がちょっと長かったんです。
光モデムルーターを再起動すると、割り当てられているグローバルIPアドレスが変わります。
一方、DDNSサーバーへの通知は30分おきにしかしていないので、DDNSサーバーが持っている情報は最長30分は古いままです。
①最長30分後、DDNSサーバーは更新情報を受け取ります。
②DDNSサーバーからDNSサーバーへ新しいDNS情報が通知されます。
①のあと、②はすぐに行われると思っているのですが、多くのDNSサーバーに情報が行き渡るのには時間がかかるでしょう。
固定ipを持っていないサーバーではこんな感じになり、WANからアクセスできない時間がしばらく発生してしまう訳です。
今回の件で、今まで何気なく利用させていただいてきたDDNSサービスについて、改めてありがたさを感じました。
自分はMydnsを使わせていただいているのですが、最近は国内の無料DDNSサービスはここだけになってしまったのではないでしょうか?
古くからあったアゴラ社のieserverはサービスを休止(停止?)しているようですので、Mydnsが最後の頼みの綱ということになります。
これまでの自分は、この無料DDNSサービスへの感謝が足りなかったと反省しているところです。
もう一つ、Mydns の twitter に次のような内容が tweet されていました。
Ban4ip は IPv4 及び IPv6 用の、/64のようなネットマスクでもBAN可能な防御(ロックアウト)ツールです。
ホワイトリスト(非制限アドレス)機能もあるので安心です。
このツールは、サーバーへの悪意あるアクセスをアクセスログの解析等によって防御するものらしく、Mydnsサーバーへのアクセスについて審査されていると思われます。
当然、自分のサーバーからもMydnsサーバーに毎日30分毎にアクセスしているので、不正アクセスでないか審査が行われているものと推測されます。
DDNSサービスが動いているか停止しているか表示してくれる別サイトがあるのですが、自分はこのサイトの情報を見てMydnsのDDNSサービスがdownしているんだと判断していました。
現在も、この別サイトの情報によると、Mydnsサービスはdownしていることになっているのですが、どうも違うのではないかと思っています。
しばらく様子を見てみようと思っています。
また、Mydnsサーバーへのアクセスコマンドですが、とりあえず使用例にならって、curl から wget に変更しておきました。
MydnsのDDNSサーバーがダウンしているようです・・・
現在、20時16分ですが、LAN内からブログ更新しています。
しかし、外部つまりWANからのアクセスが出来ない状況です。
お世話になっているMydnsのDDNSサーバーがダウンしているようなんです。
このサーバーが復旧してくれないと、このサイトはWAN上に公開できないのです・・・
DDNSサーバーが復旧した時、この記事が見えているはずです。
このウェブサイトは、
NetCommons3.3.7で動いています。
NetCommons プロジェクト 開発の、
CMS+グループウェアです!
日 | 月 | 火 | 水 | 木 | 金 | 土 |
27 1 | 28 1 | 29   | 30   | 31   | 1   | 2   |
3   | 4   | 5   | 6   | 7   | 8   | 9   |
10   | 11   | 12   | 13   | 14   | 15   | 16   |
17   | 18   | 19   | 20   | 21   | 22   | 23   |
24   | 25   | 26   | 27   | 28   | 29   | 30   |