2021/07,江端さんの技術メモ

どなたか、良いアイデアを頂けませんか?

(1)最初にhttp://192.168.0.19(ローカル) でアクセスしたWebサーバのコンテンツに記載された"*.kobore.net"のIPアドレスは、無条件で"192.168.0.19"に変換されて、自分のサーバにループしてアクセスさせるようにする方法です。

(2)http://kobore.net でアクセスした場合は、従来通りの反応をする

「kobore.netや、wp.kobore.netが、事故でクラッシュした」時でも運用が続けられるように、先日、Raspberry Pi 4のセット一式を購入しました。

―― もし、kobore.netや、wp.kobore.netが、事故でクラッシュしたらどうしよう?

これです。

説明書が不親切なので、組立方の手順を簡単に残しておきます。

(1)基盤を一番下のプラ板に設置
(2)基盤に放熱版(3つを設置) # 虫めがねとピンセットがないと辛いかも
(3)ファンを設置する(方向は、#(多分)コードがプラ版につく方向だと思う

経験的に、ラズパイをサーバとして使うと、夏場に熱でダウンすることは知っていますので、今回は「冷却(といっても空冷だけど)」に投資しています。

私、通常はubuntuなのですが、今回は、SDカードにプレインストールされていたOSをそのまま使うことにしました(SDカード焼き込みとか、面倒なので)

ちなみに、HDMIのインターフェースが、Pi3から変っています(MiniHDMIになっている)ので、こんなのも追加で購入しました。

取り敢えず、部屋の中のWiFiに繋いで、apt-get install, update, upgradeを実施中です。

======

GUIから、SSHサーバの設定ができる

これだけ。これでTeraTerm IPアドレス(192.168.0.19)、ポート22 でアクセスできるようになりました。

さてWebサーバは、apache と nginx の2択がありますが、今回はnginxを使うことにしました。理由は、最近、これしか使っていないからです。その他、色々メリットもあるようです。

さて、次はngnixの構築だけど、ここで(私は)初めて、ufwなるもの設定する必要が出てきたので、メモを残しておきます(なんでもiptablesのコマンドライン設定ツールだとか)。

$ sudo apt-get install ufw

は、さくっとできたのですが、状態を調べたら

 $ sudo ufw status
ERROR: Couldn't determine iptables version

てなものが出てきます。sudo rebootで、

$ sudo ufw status
Status: inactive

となりました。

では、全アクセスを禁止した上で、sshポート(22)だけをオープンしておきます。

$ sudo ufw default deny
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)
$ sudo ufw allow 22
Rules updated
Rules updated (v6)

次に、ufwを有効化します。

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

再度状態を確認します

$sudo ufw status
Status: active

To Action From
-- ------ ----
22 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)

とりあえず、web用に80と443をオープンしておきます。

$ sudo ufw allow 80
Rule added
Rule added (v6)
$ sudo ufw allow 443
Rule added
Rule added (v6)
$ sudo ufw status
Status: active

To Action From
-- ------ ----
22 ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)

と、こんなところで準備完了かな?

ためしに、http://192.168.0.19をやってみたところ、成功しました。

https://192.168.0.19 は失敗しますね。

当然ですね。まだ、秘密鍵も仕込んでいませんし。まあ、とりあえずこちらは後回しにして、kobore.netからコンテンツのフルダウンロードをします。

sshを使ってシェルにログインした後(詳細は「ホームページのフルバックアップ」を参照
$cd /home/kobore
$cp -r www www2 // Don't touch "www" itself
$tar -czvf www2.tgz www2
$mv www2.tgz www.kobore.net.20210713.tgz
$rm -r www2 // Never delete directory "www"
でもって、
"www.kobore.net.20210713.tgz" をローカルにダウンロードする

そんでもって、これをさらに、teratermの「ファイル(F)→SSH SPC...」でもってラズパイに送り込みます。
ちなみにkoboreというアカントは予め作っておいて、そちらにSSHログインしておきます。

ちなみに、kobore.net → ローカルPCのダウンロードに4時間、さらにラズパイへの転送に4時間かかりました。

でもって、

tar zxvf www.kobore.net.20210731.tgz

で解凍します。

$mv www2 www

として、とりあえずコンテンツの配置は完了。さて、次は、ngnixに、この、/home/kobore/wwwをリンクさせます。

/etc/nginx/sites-available/default の、ここだけを変更

これで変更できて、http:/192.168.0.19 で表示を確認しましたが・・・

ここで「どエラい見落し」を見付けました。

ラズパイの中の、/home/kobore/wwwに記載された、"kobore.net"は、全部、本物のサーバに向かってしまい、ラズパイの中のコンテンツには向かない

考えてみれば当然です。これでは、ラズパイの中にindex.shtmlのリンクを張っただけのことで、サーバとしては全く役に立ちません。

江端家ネットワーク内に、DNSサーバを立てることもできるけど、そうしてしまったら、本家の、kobore.netにアクセスできなくなるし、"*.kobore.net"→"192.168.0.19"と強制的に書き換えすることもできるけど、かなり面倒な作業になるし、美しくない。

ラズパイの中のみで作業をする、という手もあるけど、江端家ネットワーク内のPCから、こちらのサーバも使いたい(特に、ローカルなWordPressに、守秘情報を保存したい)

DNSサーバに、"*.kobore.net"→"*.local.kobore.netとして、"192.168.0.19"と書き込むか? 先ずできるとは思えないし、モラルとしても論外だろうなぁ。

という訳で、

どなたか、良いアイデアを頂けませんか?

(1)最初にhttp://192.168.0.19(ローカル) でアクセスしたWebサーバのコンテンツに記載された"*.kobore.net"のIPアドレスは、無条件で"192.168.0.19"に変換されて、自分のサーバにループしてアクセスさせるようにする方法です。

(2)http://kobore.net でアクセスした場合は、従来通りの反応をする

ホスト名 http://raspberrypi/ でアクセスできることを確認した。ならば、ホスト名を変えみようか。"koborepi", "tech_koborepi", "wp_koborepi"  とか複数の名前を設置できるか?試してみよう

 

 

(参考文献)

【ど忘れシリーズ】tarコマンドのzxvfのおさらい

UbuntuにNginxをインストールしてWebサーバー構築【マルチドメイン】

2021/07,江端さんの技術メモ

これは困った・・・

Amazon Associates アマゾン アソシエート アソシエートID アクセスキー シークレットキー

あたりを弄った後で、できなくなったのは間違いなのだけど・・・

で、Amazonに質問を出したところ、以下の回答を頂きました。

江端様

Amazon.co.jpアソシエイト・プログラムにお問い合わせいただき、ありがとうございます。

当プログラムにて確認いたしましたが、問題なくプレビューにHTMLが表示され、取得出来ることを確認いたしました。

また、現在不具合報告はなく、同様のお問い合わせもございません。

ご連絡の件につきましては、下記の点をお試しください。

・ご利用ブラウザのcookieならびに一時ファイル(キャッシュ)を削除のうえ、更新をお試しください。
※cookieならびに一時ファイル(キャッシュ)を削除いただく場合、お手数ではございますが、事前に重要なデータをバックアップしてから削除をお試しください

・異なるブラウザでも同様となるのかをお試しください。
※Internet Explorer、Firefox、Chromeの3つは必ずお試しください。

アソシエイト・プログラムをご利用いただき、ありがとうございます。

 

Amazon.co.jp カスタマーサービス アソシエイト・プログラムスタッフ
ご利用ありがとうございました。
Amazon.co.jp
以下のボタンから、お客様のご意見をお送りください。

 

現在、Chromoを使っているので、まずキャッシュを削除してみました → 効果なし

ブラウザをIEにして試してみました → 表示されました

まあ、取り敢えず、当面の間は必要な時に、IE立ち上げて対応する、で対応することといたします。

 

 

2021/07,江端さんの技術メモ

<html>
<head>
<title>アンケートフォーム</title>
</head>
<body>

  
<form action="mailto:sea-anemone2021@google.com" method="post" enctype="text/plain">
<table>
  <tr>
    <td colspan="2">
      <strong>アンケートフォーム</strong>
    </td>
  </tr>
  <tr>
    <td>
      <strong>アクセスナンバー:</strong>
    </td>
    <td>
    <input type="text" name="アクセスナンバー" maxlength="5">
    </td>
  </tr>
    <td >
      <strong>普段いらっしゃる場所:</strong>
    </td>
    <td>
      <select name="普段いらっしゃる建屋">
        <option>土木棟</option>
        <option>理工学棟</option>
        <option>図書館</option>
        <option selected>学生食堂</option>
        <option>文学部棟</option>
		<option>それ以外</option>
      </select>
    </td>
    <td >
      <strong>パソコン歴:</strong>
    </td>
    <td>
    <input type="checkbox" name="パソコン歴" value="一年未満">一年未満
    <br>
    <input type="checkbox" name="パソコン歴" value="一年以上">一年以上 
    </td>
  </tr>
  <tr>
    <td colspan="4">
      <strong>メッセージ:</strong>
    <br>
      <textarea name="メッセージ" rows="5" cols="75"></textarea>
    </td>
  </tr>

    <tr>
	  <td>
		<strong>あなたのIDは以下になります。大切に記録しておいて下さい。</strong>
		<center>
<!--タグはここから--><table border="0" cellspacing="0" cellpadding="0"><tr><td align="center"><a href="http://www.rays-counter.com/"><img src="http://www.rays-counter.com/d451_f3_022/5e2836308f717/" alt="アクセスカウンター" border="0"></a></td></tr><tr><td align="center"><img src="http://www.rays-counter.com/images/counter_01.gif" border="0"><img src="http://www.rays-counter.com/images/counter_02.gif" border="0"><img src="http://www.rays-counter.com/images/counter_03.gif" border="0" alt=""><img src="http://www.rays-counter.com/images/counter_04.gif" border="0"><img src="http://www.rays-counter.com/images/counter_05.gif" border="0" ></td></tr></table><!--ここまで-->
		  </center>


<tr>
    <td colspan="2">
    <input type="submit" value="送信する">
    </td>
    <td colspan="2">
    <input type="reset" value="やり直し">
    </td>
  </tr>
</table>
</form>

</body>
</html>

2021/07,江端さんの技術メモ

入社して数年後に、会社のテニス部の部長をやっていたことがありました。

A few years after I joined the company, I was the head of the company's tennis club.

社内テニストーナメントの当日、朝から雨がじゃじゃ降りの状態だったので、私は、参加者に対して、メールで中止を指示しました。

On the day of the in-house tennis tournament, it had been heavy raining since the morning, so I sent an email to the participants instructing them to cancel the tournament.

ところが午後になると、天気は一転し、晴天になりました。

In the afternoon, however, the weather changed and it became sunny.

参加者からは、『午後からは、晴れるという予想があったんだから・・・』という不満の声が上がっていました。

Some of the participants complained, "The weather forecast said it would be sunny in the afternoon...."

しかし、私は、

However, I wanted to ask them

―― お前なら、じゃじゃ降りの雨を見ながら、午後からの試合の実施を決断できるか?

"Would you be able to make the decision to hold the game in the afternoon while watching the heavy rain pour down?"

と、問いたいと思いました。

仮に午後から晴れたとしても、開催が延期になるだけのことです。

Even if the weather cleared in the afternoon, the event would only be postponed.

雨の中での試合を強行するよりは、ずっとマシなはずです。

It should be much better than forcing the game to be played in the rain.

このように、「中止」とか「延期」とかは、『問題を先送りにする』という最適戦略なのです。

Thus, "cancel" or "postpone" is the optimal strategy to 'postpone the problem'.

-----

ただ、この「中止」とか「延期」は、『何度も切れないカード』というのも事実です。

However, it is also true that "cancel" or "postpone" is a card that cannot be played again and again.

上記の例であれば、次回のトーナメントについては、『どしゃ降りの中での試合の実施』か『本年度の社内トーナメントの中止』のどちらかの決断を強いられることになるでしょう。

In the above example, for the next tournament, we will be forced to make a decision between 'playing in a downpour' or 'cancelling this year's in-house tournament'.

実施担当者であれば、『どしゃ降りの中での試合の実施』を選び易くなるのは、当然と言えます。

If you are in charge of implementation, it is only natural that you would be more likely to choose to hold the game in a downpour.

・・・いえいえ、単なる「思い出」の話です。

...No, no, it's just a memory.

-----

そういえば、昨日、第4度目の緊急事態宣言 + 東京五輪の1都3県の「無観客開催」が決定したようです。

Oh, by the way, it seems that yesterday, the fourth state of emergency was declared + the decision was made to hold the Tokyo Olympics in one or three prefectures "without spectators".

2021/07,江端さんの技術メモ

「草の根"差別"運動」と呼ぶべきかな、と考えています。

I think we should call it a "grassroots 'discrimination' movement".

私は、「ワクチン接種を受けない自由」は、絶対的に守るべき権利であると信じています。

I believe that the "freedom not to be vaccinated" is a right that should be absolutely protected.

しかし、ワクチン接種を行わない人への、個人としての対応については、「裁量権の範囲内」にあると思っています。

However, I believe that we are within our "discretion" when it comes to how we, as individuals, respond to those who do not vaccinate.

「ワクチン接種を受けない自由」に対して、江端家家長である私は、「契約の自由(民法531条)」の権利行使を行います。

As the patriarch of the Ebata family, I will exercise my right of "freedom of contract (Civil Code Article 531)" against the "freedom not to be vaccinated.

―― 新型コロナワクチン接種をしていない者の、江端家家屋への立ち入りは、これを拒否する

"Persons who refuse to receive the new corona vaccine shall be denied access to the Ebata family home"

を、宣言しておきます。

This, I declare.

ただ、これを"今"、行使すると、娘たちが帰宅できなくなるので、もう少し後に適用開始します。

However, if I exercise this "now", my daughters will not be able to come home, so I will start applying it a little later.

-----

私達夫婦は、再来週に、第2回目の日程が決まっています(ファイザー社のワクチンが、予定通り配送されれば、ですが)。

My wife and I have a second date set for the week after next (if the Pfizer vaccine is delivered on time).

次女は、明日、大学での第1回目接種(モデルナ社)をします。

My second daughter will have her first vaccination (Moderna) tomorrow at the university.

現在は、長女の接種が遅れています。

Currently, the vaccination of my senior daughter has been delayed.

職域接種も、市役所も、現在受付を中止していますので、仕方がないと言えます。

It can't be helped that both the vaccination at work and the vaccination at city hall are no longer being accepted.

-----

ワクチン接種は、できるだけ短い期間内に、一気に大量に行われる必要があります。

Vaccinations need to be given in large doses at once, within the shortest possible time frame.

ウイルスのキャリア(保持者)の人数が減れば、感染リスクは勿論ですが、変異株の発生率も下がります。

The fewer the number of carriers of the virus, the lower the risk of infection and, of course, the lower the incidence of mutations.

変異株の発生率は、キャリアの人数に、正確に反映されます。

The incidence of mutant strains is accurately reflected in the number of carriers.

-----

世界最凶最悪の変異株が『日本株』という名前で呼ばれる日 ―― なんてのは、シャレになりません。

The day when the world's worst coronavirus variant is called "Japanese variant". Nobody will expect the day.

日本は『原爆』と『原発(事故)』だけで十分です。

"Atomic bomb" and "nuclear power plant (accident)" are enough for us.

2021/07,江端さんの技術メモ

Dockerfileに書き込んでしまったhttp_proxyやら https_proxyの設定、

ENV http_proxy http://12.34.56.78:8080

ENV https_proxy http://12.34.56.78:8080  (← https://でない?)

は、docker-compose.ymlの environmentの上書きでは消せなかった

environment:
http_proxy:
http_proxy:

やりかたが間違っているのかもしれないけど、とりあえずメモ

2021/07,江端さんの技術メモ

■docker-compose up

docker-compose.ymlで定義されているすべてのサービスを開始または再起動
デフォルトの「接続」モードでは、すべてのコンテナのすべてのログ。
「切り離された」モード(-d)では、コンテナの起動後にComposeが終了するけど、コンテナは引き続きバックグラウンドで実行されるこになる。

■Docker-compose run

「1回限り」または「アドホック」タスクを実行するためのもの。
実行するサービス名が必要で、実行中のサービスが依存するサービスのコンテナーのみを開始する。
runを使用して、テストを実行したり、データボリュームコンテナーへのデータの削除や追加などの管理タスクを実行する。
runコマンドはdocker run -tiのように機能する。

■Docker-compose start

以前に作成されたが停止されたコンテナを再起動する場合にのみ役立ちます。新しいコンテナは作成されません。

2021/07,江端さんの技術メモ

PowerPointでレーザーポインターを表示させる方法

PowerPoint2010では、プレゼンテーションをしている際に、マウスカーソルを赤いレーザーポインターに変更する事ができます。

【Ctrl】を押しながら【マウスの左ボタン】を押し続けている間、マウスカーソルは赤いレーザーポインターに変更されます。