「Linux」カテゴリーアーカイブ

Debian3.1インストール後の初期設定

先の投稿で、Debian3.1のインストールプロセスの手順を示したが、ここではその続き(再起動後に表示される)、初期セットアッププロセスについて記す。

01:初期セットアップの開始(再起動後、自動的に開始!)
02:システム時刻の設定
03:タイムゾーンの設定
04:rootユーザのパスワード設定
05:ユーザアカウントの設定(フルネーム)
06:パッケージ入手先の設定
07:指定先のチェック(このとき、インストールに使ったメディアを入れておくこと!)

日本語の表示設定

08:参照メディアが複数あるかの確認
09:パッケージ参照先の追加
10:セキュリティアップデートパッケージのチェック(ここでは気にせずそのまま続行)
11:インストールパッケージの選択(ここでは目的別指定。「手動・・・」を選択)
12:Aputitudeによるパッケージの選択
13:メールサーバ設定(システム内の通知でもSMTPは使用されるが、ここでは省略)
13:未設定であることの確認
14:未使用としてもここは出てくる(なので、前に設定した一般ユーザを指定)
15:ようやく完了(base-configコマンドについては後程)

以上で、Debianインストール直後の初期セットアップは完了。

もし、やはりあのとき、別の設定をしておけば。。。。と後悔があれば、”base-config”コマンド(rootユーザで)で実行して変更することもできるし、個別に自力で変更させることも可能です。

上記手順で、「手動でパッケージをインストールする」ように選択したため(そのあとの工程でも何もパッケージを追加していないため)、サーバとしてはほとんど何も実装されていない状態です。

今後の投稿では、ここから、サーバデーモンだけでなく、操作環境などの運用面でも必要な機能を追加していこうと考えています。

Debian3.1(Sarge)のインストール

過去にせっかく作った木製レトロPCを有効利用するため、2000年台当時サーバを再現させて、当時目指した自宅内ネットワークシステムを実現させようと思いつき、手元にあったメディアのうち比較的扱いやすい掲題のLinuxをインストールすることにしました。

ちなみにベースとした木製レトロPCの主なスペックは、以下の通りです。

  • CPU:AMD K6-2 300MHz(1998年物)
  • MEM: SDRAM 128MB
  • M/B: ASUS P5A-B(1998年物)
  • HDD:IDE 10GB(IBM DTTA-351010 1998年物)

これにOSとして、LinuxのDebian3.1(2005年物)をチョイス。ほんとは上記H/Wに合わせてもう少し古いものを選びたかったのですが、手元にあるインストールメディアのうち、最も古いDebianが3.1しかなかったので、これに妥協しました。

01:インストールメディアから起動(Returnキーで開始!)
02:表示言語の選択
03:キーボードタイプの選択
04:しばらく待ちます。。。
05:ホスト名(コンピュータ名)の設定
06:ドメイン名の設定
07:インストールディスクの選択
08:ディスクパーティションタイプの選択
09:ディスクパーティションの構成(デスクトップマシンの場合)
10:パーティショニングの確定
11:ブートローダのインストール
12:インストール完了(メディアを取り出して再起動!)

上記スペックだと、インストール完了(後述の初期セットアップ含め)まで、40分ほどかかりました。

MediaWikiサーバの作り方(その3)

4)MediaWikiの初期設定&カスタマイズ

先の投稿(その2)で、一通り必要なパッケージが正常にインストール出来たら、Webブラウザで当該サーバにアクセスすることで、Mediawikiの初期セットアップウィザードが開始できるようになります。この時の操作を以下に記します。

(1)WikiサーバをGUIモードで導入していれば、ローカルでWEBブラウザを立ち上げ、そうでなければリモートからアクセスできるような状態にして(Firewall機能などで)、下記URLにアクセスする。

URL> http://<WikiサーバのFQDN>/wiki/inidex.php

すると、下図のようにMediaWikiのセットアップ画面のトップページが表示されるので、画面中の”set up the wiki”のリンクをクリックする。

(2)下図の画面にて、日本語表示および入力できるよう、ともに”ja-日本語”を選択して「continue」をクリックする。

(3)下図の画面にて、赤枠で囲った文言を確認し、「環境を確認しました。MediaWikiをインストールできます。」と表示されたら、当該ページの下端にある[続行→]をクリック

(4)下図の画面にて、先の投稿記事(その2)で作成した、データベース情報を入力の上、[続行→]をクリックする。

(5)下図の画面にて、そのまま(チェックが入っている状態で)[続行→]をクリックする。

(6)これから立ち上げたいWikiサイトの名称・構成(名前空間)・管理者アカウント情報を入力の上、[続行→]をクリックする。

(7)下図の画面にて、引き続き これから立ち上げたいWikiサイトの 構成情報を入力していく。

(8)引き続き、 これから立ち上げるWikiサイトに必要な機能を選択の上、 [続行→]をクリックする。

(9)下図の画面が表示されたら、 [続行→]をクリックする。

(10)下図のように、インストール状況が表示され、すべての処理項目が正常に実行されたことを確認(「データベースが正常にセットアップされました。」が表示される)の上、 [続行→]をクリックする。

(11)MediaWikiの初期セットアップウィザードがすべて正常に完了すると、下図の画面が表示されると同時に、いままでの設定項目内容が反映された”LocalSettings.php”をテキストエディタで開くダイアログボックスが表示されるので、いったん開いて内容を確認したのち、ローカルに保存する。(もしくは、そのまま保存する)

(12)この内容をそのまま(コピペもしくはファイルをアップロードして)、Wikiサーバ内のMediawikiディレクトリ内に、”LocalSettings.php” ファイルを新規作成の上保存し、Webサーバデーモンを再起動させる。

$> sudo cp ./LocalSettings.php /opt/mediawiki-1.36.2/
$> cd /opt/mediawiki-1.36.2/
$> sudo chown ubuntu:ubuntu ./LocalSettings.php 
$> chmod 664 ./LocalSettings.php
$> ls -ltr
total 1636
-rw-rw-r--  1 ubuntu ubuntu   19421 Nov  5  2019 COPYING
-rw-rw-r--  1 ubuntu ubuntu      95 Nov  5  2019 FAQ
-rw-rw-r--  1 ubuntu ubuntu     102 Nov  5  2019 composer.local.json-sample
-rw-rw-r--  1 ubuntu ubuntu     199 Nov  5  2019 SECURITY
-rw-rw-r--  1 ubuntu ubuntu     168 Oct  1 01:46 CODE_OF_CONDUCT.md
-rw-rw-r--  1 ubuntu ubuntu    4490 Oct  1 01:46 api.php
-rw-rw-r--  1 ubuntu ubuntu    1525 Oct  1 01:46 README.md
-rw-rw-r--  1 ubuntu ubuntu    8245 Oct  1 01:46 img_auth.php
-rw-rw-r--  1 ubuntu ubuntu    1977 Oct  1 01:46 index.php
-rw-rw-r--  1 ubuntu ubuntu    1951 Oct  1 01:46 load.php
-rw-rw-r--  1 ubuntu ubuntu    4610 Oct  1 01:46 opensearch_desc.php
-rw-rw-r--  1 ubuntu ubuntu     998 Oct  1 01:46 rest.php
-rw-rw-r--  1 ubuntu ubuntu    1439 Oct  1 01:46 thumb_handler.php
-rw-rw-r--  1 ubuntu ubuntu   13612 Oct  1 01:48 CREDITS
-rw-rw-r--  1 ubuntu ubuntu    4544 Oct  1 01:48 UPGRADE
-rw-rw-r--  1 ubuntu ubuntu   48038 Oct  1 01:48 RELEASE-NOTES-1.36
-rw-rw-r--  1 ubuntu ubuntu    3612 Oct  1 01:48 INSTALL
-rw-rw-r--  1 ubuntu ubuntu 1247893 Oct  1 01:48 HISTORY
-rw-rw-r--  1 ubuntu ubuntu    5073 Oct  1 01:48 composer.json
-rw-rw-r--  1 ubuntu ubuntu  156893 Oct  1 01:48 autoload.php
-rw-rw-r--  1 ubuntu ubuntu    1430 Oct  1 01:48 jsduck.json
-rw-rw-r--  1 ubuntu ubuntu   23581 Oct  1 01:48 thumb.php
drwxr-xr-x  2 root   root      4096 Nov  9 13:27 cache
drwxr-xr-x  2 root   root      4096 Nov  9 13:27 images
drwxr-xr-x  5 root   root      4096 Nov  9 13:27 docs
drwxr-xr-x 83 root   root      4096 Nov  9 13:27 includes
drwxr-xr-x  6 root   root      4096 Nov  9 13:27 languages
drwxr-xr-x  4 root   root      4096 Nov  9 13:27 mw-config
drwxr-xr-x 15 root   root     12288 Nov  9 13:27 maintenance
drwxr-xr-x  5 root   root      4096 Nov  9 13:27 resources
drwxr-xr-x  9 root   root      4096 Nov  9 13:27 tests
drwxr-xr-x 30 root   root      4096 Nov  9 13:27 extensions
drwxr-xr-x  5 root   root      4096 Nov  9 13:27 skins
drwxr-xr-x 17 root   root      4096 Nov  9 13:27 vendor
-rw-rw-r--  1 ubuntu ubuntu    6026 Jan 21 16:40 LocalSettings.php 
$>

$> sudo systemctl restart apache2

● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor pres>
     Active: active (running) since Fri 2022-01-21 15:30:19 JST; 13s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 728549 ExecStart=/usr/sbin/apachectl start (code=exited, status=0>
   Main PID: 728563 (apache2)
      Tasks: 6 (limit: 462)
     Memory: 25.8M
     CGroup: /system.slice/apache2.service
             ├─728563 /usr/sbin/apache2 -k start
             ├─728564 /usr/sbin/apache2 -k start
             ├─728565 /usr/sbin/apache2 -k start
             ├─728566 /usr/sbin/apache2 -k start
             ├─728567 /usr/sbin/apache2 -k start
             └─728568 /usr/sbin/apache2 -k start

Jan 21 15:30:19 wikisv01 systemd[1]: Starting The Apache HTTP Server...
Jan 21 15:30:19 wikisv01 systemd[1]: Started The Apache HTTP Server.

(13)最後に、WEBブラウザで再度アクセス(この段階では、index.phpは指定不要)して、下図のようなMediaWikiのトップ画面が表示され、前作業で入力した当該Wikiサイトの管理者アカウントでログインできることを確認する。

ログイン後、さらに自分Wikiサイトの目的に応じたカスタマイズを実施していくことになるが、この作業については、後日の投稿に記す予定です。

以上。

MediaWikiサーバの作り方(その2)

3.稼働させるサーバサービスに必要なパッケージの導入

作業の順番としては、「2.OSの環境設定」が先なのですが、、、、

Linuxカーネルバージョンが、3.x系になってから、各種Linuxディストリビューションとも、systemdやNetwork-Mangerなど最新機能によって、構築作業での操作が大幅に変わり、以前までやっていた作業を、書籍やほかのWEBサイトで調べながら、試行錯誤の結果、最低限のところまでやれただけで、やり切れてないところや、やったことも十分なものか怪しい状況なので、もっと勉強して、整理出来たら投稿しようと思っています。

そういったことで、上記作業工程でも結構時間がかかってしまい、放置してしまうと、それだけお金が無駄になってしまいますし、やらなきゃいけないことがたくさんあるので、最も重要な主機能に当たるWikiサーバ機能を実装していくことにしました。

今回構築するWikiサーバの具体的な仕様としては、

  1. OSは、さくらインターネットVPSサーバでサポートされているLinuxOSのうち、プライベートで使用している(2ndマシンとして)Ubuntu20.04 Server とする。
  2. RDBMSは、通常使用されるMySQLやMariaDBではなく、会社で唯一使用しているLinuxサーバで実装しているPostgreSQLを使用する。(これは、単に個人的な要件)
  3. 上記RDBMSおよび、PHP、Webサーバサービスは、前項1に記すOSにバンドルされているパッケージを採用する。(PHPはバージョン7.4.3、WEBサーバはApache2.4.xx)
  4. MediaWikiは、現時点で最新のもの(バージョン:1.36.2)

では、さっそく上記必要パッケージをインストールしていく。

1)PHPおよびApache Webサーバのインストール

$> sudo apt-get install php php-apcu php-intl php-mbstring php-xml php-pgsql apache2


[sudo] password for ubuntu:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  apache2-bin apache2-data apache2-utils libapache2-mod-php7.4 libapr1
  libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libjansson4 liblua5.2-0
  libonig5 libpq5 php-apcu-bc php-common php7.4 php7.4-cli php7.4-common
  php7.4-intl php7.4-json php7.4-mbstring php7.4-opcache php7.4-pgsql
  php7.4-readline php7.4-xml ssl-cert
Suggested packages:
  apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser
  php-pear php-gd openssl-blacklist
The following NEW packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.4 libapr1
  libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libjansson4 liblua5.2-0
  libonig5 libpq5 php php-apcu php-apcu-bc php-common php-intl php-mbstring
  php-pgsql php-xml php7.4 php7.4-cli php7.4-common php7.4-intl php7.4-json
  php7.4-mbstring php7.4-opcache php7.4-pgsql php7.4-readline php7.4-xml
  ssl-cert
0 upgraded, 32 newly installed, 0 to remove and 86 not upgraded.
Need to get 6880 kB of archives.
After this operation, 29.7 MB of additional disk space will be used.
Do you want to continue? [Y/n]Y

・・・・・・・・省略・・・・・・・・・

導入後、Apache Webサーバデーモンは利用可能な状態で立ち上がっているので、その状態を念のため確認してみる。

$> systemctl status apache2
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
     Active: active (running) since Sat 2022-01-22 23:35:45 JST; 25min ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 78669 (apache2)
      Tasks: 6 (limit: 468)
     Memory: 17.4M
     CGroup: /system.slice/apache2.service
             tq78669 /usr/sbin/apache2 -k start
             tq78672 /usr/sbin/apache2 -k start
             tq78673 /usr/sbin/apache2 -k start
             tq78674 /usr/sbin/apache2 -k start
             tq78675 /usr/sbin/apache2 -k start
             mq78687 /usr/sbin/apache2 -k start

Jan 22 23:35:45 ik1-101-57125 systemd[1]: Starting The Apache HTTP Server...
Jan 22 23:35:45 ik1-101-57125 systemd[1]: Started The Apache HTTP Server.
$>

さらに、動作確認として、Apache2-Webサーバのドキュメントルート(= /var/www/html/ )に、デフォルトでApache2の構成情報が表示されるindex.htmlファイルが用意されているので、これが表示されるかを確認するものよいかと思われる。

ただし、確認出来たら、このファイルはセキュリティ上削除しておくこと。代わりに、運用上Webサーバが動作しているかをチェック(=ヘルスチェック)するために、簡単な内容のindex.htmlを別途用意しておくことを推奨。

2)PostgreSQLの導入

引き続き、Wikiサーバのデータを登録するRDBMSとして選択した、”PostgreSQL”をインストールする。

$> sudo apt-get install postgresql

[sudo] password for ubuntu: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libllvm10 libpq5 postgresql-12 postgresql-client-12
  postgresql-client-common postgresql-common sysstat
Suggested packages:
  postgresql-doc postgresql-doc-12 libjson-perl isag
The following NEW packages will be installed:
  libllvm10 libpq5 postgresql postgresql-12 postgresql-client-12
  postgresql-client-common postgresql-common sysstat
0 upgraded, 8 newly installed, 0 to remove and 55 not upgraded.
Need to get 30.6 MB of archives.
After this operation, 121 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y

           ・・・・・・・省略・・・・・・・

Success. You can now start the database server using:

    pg_ctlcluster 12 main start

Ver Cluster Port Status Owner    Data directory              Log file
12  main    5432 down   postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log
update-alternatives: using /usr/share/postgresql/12/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
Setting up sysstat (12.2.0-2ubuntu0.1) ...

Creating config file /etc/default/sysstat with new version
update-alternatives: using /usr/bin/sar.sysstat to provide /usr/bin/sar (sar) in auto mode
Created symlink /etc/systemd/system/multi-user.target.wants/sysstat.service → /lib/systemd/system/sysstat.service.
Setting up postgresql (12+214ubuntu0.1) ...
Processing triggers for systemd (245.4-4ubuntu3.15) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
$>

ただ、このように導入しただけでは、WikiサーバのDBとして利用できないが、いったんこのままにして、メインのMediaWikiパッケージをインストールする。

3)MediaWikiパッケージの導入

MediaWikiサイトから、tar+zip形式のインストールパッケージをダウンロードして、導入サーバのApache-Webサーバのドキュメントルートディレクトリに展開するだけであるが、直接そこに配置せず、/opt配下に展開して、ここへのリンクをドキュメントルートに配置することにする。(詳細は、後述)

(ちなみに、この理由は、MediaWikiをバージョンアップする場合、上書きではなく、新バージョンディレクトリを別途展開して、そこにリンクを張りなおすことで、不具合時の切り戻しを容易にしたり、MediaWikiの機能拡張を追加したり、環境設定ファイル変更する際に、これらをまとめてバックアップ&リストアしやすくするため。)

なお、本手順を実施するにあたって、事前に MediaWikiサイト 内のMediaWikiインストールパッケージのURLを、実際にWebブラウザで辿って押さえておくこと。
(本手順実施時のURLは、”https://releases.wikimedia.org/mediawiki/1.36/mediawiki-1.36.2.tar.gz”であった。)

$> wget https://releases.wikimedia.org/mediawiki/1.36/mediawiki-1.36.2.tar.gz

--2021-11-09 13:22:07--  https://releases.wikimedia.org/mediawiki/1.36/mediawiki-1.36.2.tar.gz
Resolving releases.wikimedia.org (releases.wikimedia.org)... 103.102.166.224, 2001:df2:e500:ed1a::1
Connecting to releases.wikimedia.org (releases.wikimedia.org)|103.102.166.224|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 49653546 (47M) [application/x-gzip]
Saving to: ‘mediawiki-1.36.2.tar.gz’

mediawiki-1.36.2.ta   0%[                    ]       0  --.-KB/s          mediawiki-1.36.2.ta   0%[                    ]  38.91K   127KB/s
・・・省略・・・
mediawiki-1.36.2.ta 100%[===================>]  47.35M  8.88MB/s    in 7.1s

2021-11-09 13:22:16 (6.69 MB/s) - ‘mediawiki-1.36.2.tar.gz’ saved [49653546/49653546]

$> cd /opt
$> ls
mediawiki-1.36.2.tar.gz
$> tar zxf mediawiki-1.36.2.tar.gz
・・・・省略・・・・
$> ls
mediawiki-1.36.2   mediawiki-1.36.2.tar.gz
※”mediawiki-1.36.2”が、パッケージを展開してできたMediaWiki本体のディレクトリである。
$> cd mediawiki-1.36.2
$> ls
CODE_OF_CONDUCT.md  cache                       maintenance
COPYING             composer.json               mw-config
CREDITS             composer.local.json-sample  opensearch_desc.php
FAQ                 docs                        resources
HISTORY             extensions                  rest.php
INSTALL             images                      skins
README.md           img_auth.php                tests
RELEASE-NOTES-1.36  includes                    thumb.php
SECURITY            index.php                   thumb_handler.php
UPGRADE             jsduck.json                 vendor
api.php             languages
autoload.php        load.php
$>

次に、Apache2-Webサーバのドキュメントルートに移動して、前手順で生成したMediaWiki本体のディレクトリへのリンクを作成する。

$> cd /var/www
/html
$> ln -s /opt/mediawiki-1.36.2 ./wiki 
$> ls -l
-rw-r--r-- 1 root root   838 Nov  9 15:34 index.html
lrwxrwxrwx 1 root root    21 Nov 15 22:51 wiki -> /opt/mediawiki-1.36.2
$>

4)Image Magickの導入

MediaWikiで画像ファイルをアップロードして利用する際に、画像ファイルをサムネイルで表示できるようにするための機能プログラム「Image Magick」をインストールする。

$> sudo apt-get install imagemagick
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  gsfonts imagemagick-6-common imagemagick-6.q16 libfftw3-double3
  libilmbase24 liblqr-1-0 libmagickcore-6.q16-6 libmagickcore-6.q16-6-extra
  libmagickwand-6.q16-6 libnetpbm10 libopenexr24 netpbm
Suggested packages:
  imagemagick-doc autotrace enscript ffmpeg gimp gnuplot grads graphviz hp2xx
  html2ps libwmf-bin mplayer povray radiance texlive-base-bin transfig
  ufraw-batch libfftw3-bin libfftw3-dev inkscape libjxr-tools
The following NEW packages will be installed:
  gsfonts imagemagick imagemagick-6-common imagemagick-6.q16 libfftw3-double3
  libilmbase24 liblqr-1-0 libmagickcore-6.q16-6 libmagickcore-6.q16-6-extra
  libmagickwand-6.q16-6 libnetpbm10 libopenexr24 netpbm
0 upgraded, 13 newly installed, 0 to remove and 46 not upgraded.
Need to get 8135 kB of archives.
After this operation, 25.4 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
         ・・・・・以下省略・・・・・

5)Wiki用データベースの作成

下記内容でWiki用データベースを作成する。

  • データベース名=WIKIDB00
  • データベースユーザ名=wikidbuser
  • 上記ユーザパスワード=******

まず、作成するまえに、PostgreSQL用のコマンドを実行するためのシステムユーザ”postgres”(PostgreSQLのバイナリパッケージインストール時に自動的にシステムユーザに追加される)を利用可能にする。

$> sudo passwd postgres
New password: 
Retype new password: 
passwd: password updated successfully
$> 

postgreユーザになって、以下のコマンドを実行してWiki用データベースとアクセスユーザを用意する。

$> su - postgres
Password: ********
postgres$> 
postgres$> which createuser
/usr/bin/createuser
postgres$>
postgres$> createuser -S -D -R -P -E wikidbusr
Enter password for new role: ******* 
Enter it again: 
postgres$> echo $?
0
postgres$> which createdb
/usr/bin/createdb
postgres$> createdb -O wikidbusr WIKIDB00
postgres$> echo $?
0
postgres$> echo $?

注)上記作業を”postgres”ユーザ以外で実行してしまうと、下記エラーとなる。

ubuntu$> sudo createuser -S -D -R -P -E wikidbusr
[sudo] password for ubuntu: 
Enter password for new role: 
Enter it again: 
createuser: error: could not connect to database template1: FATAL:  role "root" does not exist

念のため、作成したデータベースとユーザ(ロール)が存在するかを確認する。

ubuntu$> su - postgres
Password:
postgres$>
postgres$> psql
psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1))
Type "help" for help.

postgres=# \l
                              List of databases
   Name    |   Owner   | Encoding | Collate |  Ctype  |   Access privileges
-----------+-----------+----------+---------+---------+-----------------------
 WIKIDB00 | wikidbusr| UTF8     | C.UTF-8 | C.UTF-8 |
 postgres  | postgres  | UTF8     | C.UTF-8 | C.UTF-8 |
 template0 | postgres  | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
           |           |          |         |         | postgres=CTc/postgres
 template1 | postgres  | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
           |           |          |         |         | postgres=CTc/postgres
(4 rows)

postgres=# \q
postgres$> 

上記操作の詳細については、後日PostgreSQLを勉強してから、改めてPostgreSQLに関する記事を書こうと思う。

最後に、PHPスクリプトからPostgreSQLに接続できるようにPHP環境設定ファイル(php.ini)に修正を施す。
過去のバージョンであれば、php.iniは、/etcディレクトリ内にあったはずだが、昨今のバージョンだと、かなり構成が変わっており、見つけ出すのが困難。
そこで、下記コマンドを実行して、そのありかを表示させる。

$> php -i |grep php.ini
Configuration File (php.ini) Path: /etc/php/7.4/cli
Loaded Configuration File:         /etc/php/7.4/cli/php.ini

以上の出力結果から、php.iniのパスが分かったので、このファイルの内容を一部修正する。
$> sudo vi /etc/php/7.4/cli/php.ini

なお、修正箇所は、下記2か所である。
L934: extension=pdo_pgsql   ←コメント記号の”;”をはずす。
L936: extension=pgsql   ←コメント記号の”;”をはずす。

変更を有効にするため、Apache2-Webサーバデーモンを再起動する。
$> systemctl restart apache2

以上で、必要パッケージのインストールと、MediaWikiセットアップのための準備が整った。

次回は、MediaWikiのセットアップ操作をまとめる。

MediaWikiサーバの作り方(その1)

小生、年齢のせいではなく、元から記憶力がよくない(嫌なことは覚えているが、勉強や仕事で学んだ知識は特に)ので、いままで自分の仕事や趣味におけるナレッジ(KB)を記録しておくために、WikiとLAMP環境が日本で流行った頃から、MediaWikiを使ったwikiサーバを立てて(サーバのログからだと、2007年頃)、それから今なお独り利用し続けています。

このサーバで利用しているVPSサービスが、お○前ドットコムのものでしたが、先の投稿「さくらインターネットのVPSを使ってみた!」に記した通り、新機能追加で操作がしにくくなり、サポート対応やメールでの通知やログイン画面で、うるさくドメイン更新手続きの通知が表示され、嫌気がさしてさくらのVPSに乗り換えることにしました。

そこで、システム全体的にバージョンもかなりかけ離れてしまっているため、最新バージョンで作り直そうと決意しました。(それと、蓄積された情報も不要なもの・中途半端なものなどが多数散乱しているので、大掃除することも併せて実施)

VPSサービスで立ち上げたサーバの作業としては、下記のような作業の流れとなります。

  1. さくらインターネットでのVPSサーバの立ち上げ(先の投稿に記載済みの)
  2. OSの環境設定(ここから、随時投稿予定)
  3. 稼働させるサーバサービスに必要なパッケージの導入
  4. MediaWikiの初期設定&カスタマイズ
  5. VPSサービスのサーバ運用機能の追加設定
  6. サービスイン(その後のサーバ運用操作)

各作業の詳細については、随時投稿していきます。(どなたかの参考になれば、幸いです。)

ラズパイとLinuxパソコンをシリアル接続する方法

ラズパイゼロを使って思ったのですが、、、

ラズパイゼロを使った装置(作品)を完成させて、いざ初回起動開始!のときに、「あれれ?うごかないぞ。。。」ってなった時や、「いままで動いてたのに急に動かなくなったぞ!?」って時に、無線LAN接続が使えればいいのですが、往々にして動かない時は、繋がらないもの。

なので、USBハブ+マウス+キーボード+HDMIモニタを接続して状況を確認・対処するということになるのですが、

それが自宅外とすると、そんなに機材を持ち歩くことは、しんどい!というか無理。

そこで、以前につい衝動買いで秋月で購入したUSB->RS232シリアル変換ケーブル「FTDI TTL-232R-3V3」(USB to TTL Serial Cable(3.3V)-1.8m)を使って、ラズパイとLinux(Debian)端末をシリアル接続する方法を以下に示す。

まずは、変換ケーブルの接続端子のピンアサインは、以下の通り。

黒=GND
 黄=RXD
 橙=TXD
 赤=Vcc(+5V)
 茶=CTS#
 緑=RTS#

この内、接続に必要なものは、黒と黄と橙の3つ。

一方、ラズパイのシリアル接続用のGPIOのピン番号は、
8番(TXD)、10番(RXD)、14番または6番(GND)

私のラズパイは、6番ピンをクーラーファンに使用しているため、14番としました。

6番ピンを使えれば、縦3つで横並びとなるので、3端子のコネクタがあれば、
変換ケーブルに既存の6端子コネクタから、うまい具合に端子を抜き取って※移植すれば、
ハンダ付けや工具や端子を購入する必要もなくなるかと思います。

※端子の抜き取り方法は、千枚通しとかシャーペン(壊れてもよいもの。要領が解れば壊すこともない)を使って、
コネクタ側面の端子金具が見える窓(=金具の出っ張りを引っ掛けるところ)に上記の道具の先を押し付けながら、
ケーブル方向に押し出すと、金属端子ごときれいに抜けるので、3端子のコネクタにそのまま差し込めると思います。

変換ケーブルとGPIOの接続は、以下の通りクロス接続させます。
 <変換ケーブル> |   <GPIO>
 黒(GND)   <=>  14番または6番(GND)
 黄(RXD)   <=>  8番(TXD)
 橙(TXD)   <=>  10番(RXD)

次に、ラズパイの方は、
/boot/cmdline.txtをエディタで開き、下記の箇所を確認の上修正。

 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

修正ないし確認した後、シリアルコンソール接続するため、ラズパイをシャットダウンしておく。

接続するDebian端末において、
変換ケーブルをUSBポートに接続させた後、コンソールプログラムを立ち上げて、以下のコマンドを実行し、変換ケーブルのデバイスファイルを確認する。

 $> dmesg
 [201786.992092] usb 5-1: new full-speed USB device number 2 using uhci_hcd
 [201787.188131] usb 5-1: New USB device found, idVendor=0403, idProduct=6001
 [201787.188142] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
 [201787.188150] usb 5-1: Product: TTL232R-3V3
 [201787.188156] usb 5-1: Manufacturer: FTDI
 [201787.188162] usb 5-1: SerialNumber: FTA3BBZ5
 [201788.243386] usbcore: registered new interface driver usbserial
 [201788.243444] usbcore: registered new interface driver usbserial_generic
 [201788.243491] usbserial: USB Serial support registered for generic
 [201788.247032] usbcore: registered new interface driver ftdi_sio
 [201788.247089] usbserial: USB Serial support registered for FTDI USB Serial Device
 [201788.247346] ftdi_sio 5-1:1.0: FTDI USB Serial Device converter detected
 [201788.247458] usb 5-1: Detected FT232RL
 [201788.247465] usb 5-1: Number of endpoints 2
 [201788.247472] usb 5-1: Endpoint 1 MaxPacketSize 64
 [201788.247478] usb 5-1: Endpoint 2 MaxPacketSize 64
 [201788.247484] usb 5-1: Setting MaxPacketSize 64
 [201788.252298] usb 5-1: FTDI USB Serial Device converter now attached to ttyUSB0
 以上の出力結果から、変換ケーブルのデバイスファイルは、”/dev/ttyUSB0”

さらに、Debian端末にて、シリアルポートがサポートされたターミナルプログラム(cuなど)をインストールする。

シリアル通信するデバイスを接続後、シリアル通信プログラムを実行して、シリアル通信が可能かを確認する。

参考)以下、シリアル通信プログラムとして、”cu”を使用して通信を確認する場合
% sudo chmod 666 /dev/ttyUSB0

補足)ラズパイのGPIOのシリアルポートは、”/dev/ttyUSB0”である。

% sudo cu -s 115200 -l /dev/ttyUSB0

と入力する(ボーレートとデバイス名は、接続機器にあわせて指定のこと)。

上記コマンド実行後,/dev/ttyUSB0に接続が成功すると,

Connected.

が表示され、ラズパイ待ち状態になるので、ラズパイの電源をONする。

しばらくすると、ラズバイのOS起動時のコンソール出力が、Debian端末のシリアル通信プログラムのウィンドウに表示される。

 pi@debian:~$ cu -s 115200 -l /dev/ttyUSB0
 Connected.
 [ 0.000000] Booting Linux on physical CPU 0x0
 [ 0.000000] Linux version 4.9.35+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611) ) #1014 Fri Jun 30 14:34:49 BST 2017
 [ 0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
 [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
 [ 0.000000] OF: fdt:Machine model: Raspberry Pi Model B Plus Rev 1.2
 [ 0.000000] cma: Reserved 8 MiB at 0x17400000
 [ 0.000000] Memory policy: Data cache writeback
 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 97440
 [ 0.000000] Kernel command line: bcm2708_fb.fbwidth=1360 bcm2708_fb.fbheight=768 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x1ec00000 vc_mem.mem_size=0x20000000 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
 [ 0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
 ・・・・省略・・・・

ログインプロンプトが表示されるので、ラズパイのアカウント情報を入力してログインし、間違いなくシリアル接続したラズパイであることを確認する。

・・・・省略・・・・
 b1/1-1/1-1.5/1-1.5:1.0/0003:093A:2521.0003/input/input2
 [ 4.981346] hid-generic 0003:093A:2521.0003: input,hidraw2: USB HID v1.11 Mouse [USB OPTICAL MOUSE] on usb-20980000.usb-1.5/input0
 [ 5.017712] fuse init (API version 7.26)
 [ 5.061482] i2c /dev entries driver

Raspbian GNU/Linux 8 raspberrypi ttyAMA0

raspberrypi login: pi
 Password:
 Last login: Mon Oct 8 22:27:33 JST 2018 on tty1
 Linux raspberrypi 4.9.35+ #1014 Fri Jun 30 14:34:49 BST 2017 armv6l

The programs included with the Debian GNU/Linux system are free software;
 the exact distribution terms for each program are described in the
 individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
 permitted by applicable law.
 pi@raspberrypi:~$

以上

お名前ドットコムのVPSに格安サーバ証明書(KingSSL)を導入する

最近、セキュリティ機能強化の風潮があちこちで広まり、IE(Edge)ばかりでなく、フリーのFirefox,Chromeまでも同様に標準で、オレオレ証明書(=公的に保証されていない私的な証明書)のサイトはかならず警告ないし、最悪表示することすらできなくなってしまった。

これでは不便なので、仕方なく自身のサーバにもちゃんとした証明書を用意しなきゃと泣く泣く導入することにしました。

はじめに

まず、最初に準備というか前提ですが、、、本題のサーバ証明書を実装するオレオレ証明書で稼動するWEBサーバ(すなわち、https://*****でサイトが構成されていること)ありきで、話を進めます。

よって、本誌の内容は、いずれかのサービスでVPSサーバを保有し、そこにHTTPSでアクセスできるWEBサーバを立てたことがある方、もしくはこれからされようとされてい方に限られた内容になります。(このようなWEBサーバの立ち上げ方については、近々個人的に実施する予定なのでそのときに記事をアップしようと思ってます。)

ちなみに、今回対象とするWEBサーバの仕様は、以下のとおりです。

<WEBサーバ仕様>

  1. お名前ドットコムのVPSサービス(KVM)でたてたLinuxサーバ
  2. OSは、CentOS5.9
  3. WEBサーバは、OSバンドルのApache2.xパッケージを実装後アップデートしたものに、同様に実装したOpenSSLでHTTPSのWEBサイト環境を構築。
  4. 固定のグローバルIPアドレス×1個(お名前ドットコムのVPSサーバは、1個付与してくれる)
  5. インターネット上で自サーバのFQDNが使えるようDNSレコードが設定済み(お名前ドットコムの自ドメイン取得サービスを利用)

ここでのポイントはやはり、お名前ドットコムのサービスを使っているということでしょうか。

各サービス機能についての詳細については一長一短あるかと思いますが、通常個人のWEBサーバを維持管理していく上ではそれほど問題にならなかったですし、いずれのサービスも他社と比較しても遜色なく安く、必要なサービスの請求や管理の窓口が一本化されるのは何より便利です。(この良さが、後々の本書の中で効いてきます)

であれば、サーバ証明書の取得サービスもお名前ドットコムのものを使用すればと思うのですが、、、

実際にそのサービスの金額を見たら、他社サービスと比較してもお高いので、そこでこのサービスは以前に安いと評判のKingSSLを利用することにしました。(せめてRapidSSLを担いで欲しかった)

調理開始

以上、必要な材料がそろったので、早速調理に取り掛かります。

まずは、サーバ証明書取得のために、KingSSLのサイトへ。

ここをじっくり調査し、他者と比較検討したわけではないので、ほんとにおすすめできるかは現時点ではなんともいえませんが、

私的には、

  • やはり、安い。しかも早い。支払いはクレジットカードのみになりますが、手続きも完全自動化されており、すぐにサーバ証明書を入手可能
  • 安いだけにサイトはシンプルだけど、日本語でわかりやすい
  • 新規だけでなく更新や再発行の手続きもわかりやすそう

という印象で決めました。(ここは自由に選べますし、将来的にはさらに安い業者もあるかもしれません。ただ、安いだけで決めるのは、今後必要となるサポートや手続きの面で損をすることもあるのでご注意を!)

本紙では、年間900円の1年モノにしました。(もちろん、複数年モノにすればそれだけ割引がありますが、ためしに使ってみるということで1年モノにしました)

さっそく、サイトから申し込み手続きのボタンをクリックして手続き開始へ!

第一関門:CSRの生成と入力

手続きの一発目から、いきなりCSRの入力欄が出現!

まずは手続きの第一関門。オレオレ証明書でやってきたので、CSR生成についてはピンと来なくて、どうすればいいんだけっけ?ってググろうと思ったけど、同サイト内のサポートページで、しっかり手順が書いてありましたので、その手順そのままに実施することにしてみました。

ちなみに、CSRは、サイトにも書かれていたが、”Certificate Signing Request”で、要は証明書を発行する際の本人確認のための情報みたいなもの。具体的には、サーバ内で生成されたサーバ所在情報+公開鍵データ。

手順としては、サーバ構成が”Apache 2.x + mod_ssl + OpenSSL”なので、その手順ページを参照。

サーバ内での操作としては・・・、

まず、現在WEBサーバが立ち上がっている環境の確認。サーバ立ち上げ時に現在使用されているオレオレ証明書を作成した際に生成された、秘密鍵や証明書+公開鍵の保管場所を/etc/httpd/conf.d/ssl.confファイル内で下記項目を確認し、

  • SSLCertificateFile(サーバ証明書のパス)
  • SSLCertificateKeyFile(秘密鍵のパス)

そこに記載されたパスにある、現在使用中の各ファイルをかならずmvコマンドなどで退避させておくこと。さもないと、以降の作業時に誤って消失させてしまうと、同じものを復元させることができませんので、現状のWEBサービスを停止・起動させることができなくなってしまいます。

(最悪、新たな証明書を用意するまで停止状態にするか、もう一度オレオレ証明書を再作成して立ち上げなおせばいいだけの話ですが、今後正規の証明書で運用していく場合は、この場合のリスクについても考慮のこと)

一発目の操作は、まず先のssl.confに記載のSSLCertificateKeyFileパス、すなわち秘密鍵が格納されているパスで以下のコマンドをrootユーザで実行します。

# openssl genrsa -des3 -out ./<生成する秘密鍵ファイル名>.key 2048

ここで、<生成する秘密鍵ファイル名>には、ssl.confの”ServerName”に記述されたファイル名(WEBサーバのFQDNを入れたり、さらに生成日も入れたりするといいでしょう)にして、実行します。

この結果、下記のように表示されるので、秘密鍵に割り当てたいパスフレーズを入力します。(これは、後の手順で入力が必要となるので、間違えず忘れないように!)

[root@myportal ~]# openssl genrsa -des3 -out ./myportal.yshome.net.key 2048 <Retキー>
Generating RSA private key, 2048 bit long modulus
......................................................+++
.......................+++
e is 65537 (0x10001)
Enter pass phrase for ./myportal.yshome.net.key: <パスフレーズを入力>
Verifying - Enter pass phrase for ./myportal.yshome.net.key:<同上を入力>
[root@myportal ~]# ls -ltr
この結果、カレントディレクトリに、下記のファイルが生成される。
-rw-r--r-- 1 root root  1751 12月 29 11:07 myportal.yshome.net.key

なお、WEBサーバのFQDNはこの時点でかならず、これがお名前ドットコムのドメインサービスで取得されてDNSレコードに定義されて利用可能であること。

また、このとき入力したパスワードは、後の手順でも使用し続けるので、ちゃんと記録しておきましょう。(忘れてしまったら、手順というか手続きを位置からやり直しとなってしまいます)

この結果、カレントディレクトリに”<生成する秘密鍵ファイル名>.key”というファイル名で、 秘密鍵(2048ビット)が生成されます。

次に、証明書が格納されているパスで、以下のコマンドをrootユーザで実行します。

# openssl req -new -key <前手順で生成した秘密鍵ファイル> -out ./<生成するCSRファイル名>.csr

実行すると、当該WEBサーバの所在情報の入力が一問一答形式で開始されますので、KingSSLサイトのサポートページを参照して適切な値を入力していってください。

[root@myportal ~]# openssl req -new -key ./myportal.yshome.net.key -out ./myportal.yshome.net.csr
Enter pass phrase for ./myportal.yshome.net.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:Tokyo
Locality Name (eg, city) [Newbury]:○○-ku
Organization Name (eg, company) [My Company Ltd]:My Home Lab.
Organizational Unit Name (eg, section) []:<入力不要とのこと>
Common Name (eg, your name or your server's hostname) []:myportal.yshome.net
Email Address []:<入力不要とのこと>
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:<先のパスフレーズを入力>
An optional company name []:<同上>
[root@myportal ~]# ls -ltr
-rw-r--r-- 1 root root  1751 12月 29 11:07 myportal.yshome.net.key

なお、ここで入力した値は、最終的に得られたサーバ証明書の情報に組み込まれ、ユーザなどからその情報が証明書情報の表示操作で見えてしまうので、誤字やいい加減な入力は恥ずかしい黒歴史となりますので慎重に!

最後に、前手順の秘密鍵生成時に入力したパスワードを入力する必要があります。

この結果、<生成するCSRファイル名>.csr がカレントディレクトリに生成されますので、これをcatやviコマンドで内容を表示させてください。

[root@myportal ~]# cat myportal.yshome.net.csr
-----BEGIN CERTIFICATE REQUEST-----
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
-----END CERTIFICATE REQUEST-----
[root@myportal ~]#

上記のように表示されたファイル内容において、”—–BEGIN ・・・・”の行から、”—–END ・・・・”の行まで、一文字の抜けがない様、また余計な文字が含まれないよう十分注意して、手続き画面の一発目に出現したCSRの入力欄にコピペします。

あとは、次の画面で、入力したCSRのデータから、サーバの所在情報の確認や、支払いに使用するクレジットカードの入力がありますので、各情報を入力していってください。

第二関門:承認メール送り先の用意

っで、この手続きの中で一番問題となる、第二関門の承認メールのメールアドレスの指定ですが、、、

これが厄介なことに、業者のシステムで、登録したFQDN情報から自動生成されたメールアドレスの選択式となっており、自由に入力することができないということです!

たとえば、メールアカウント名が、”hostmaster”,”postmaster”,”admin”となっており、メールアドレスのドメインも、WEBサーバのドメイン名しかありません。。。

(サポートページのFAQにも、回答として「コモンネームに指定のドメインのメールサーバにエイリアスでもいいので・・・」って、スラって書いてあるけど、面倒なのでそもそも自ドメインのメールサーバ立ててないんですけど!)

ここで助かったのが、お名前ドットコムの無料オプション機能の”お名前.comメール転送Plusサービス”です!!

これを知らないときは、1GBプラン¥42円/月のメールサービスを使用やむなしと思っていましたが、”お名前.comメール転送Plusサービス”もあるということを知り、使えるかどうか試しに申し込んでみたところ、思ったとおりの設定ができました!

この機能を有効に設定することで、

自身の管理するドメインのDNSレコードに、MXレコード(お名前ドットコムのメール転送機能用メールサーバ)が登録され、指定したメールアドレスから転送したい任意の既存メールアドレスに転送されるというというものです。おかげでメールサーバの運用コストを増やすことなく、手続きが可能となりました。

具体的には、

KingSSLで選択した、”postmaster@<domainname>”のメールアドレスに対して、

KingSSLの申込者欄の連絡先メールアドレスに記載の私個人利用のメールアドレスを設定するだけ!(この機能自体には、さらに自動応答やフィルタ機能なども備えている)

なお、このメールアドレスは、承認メールが送られるだけで使用するもので、最終的な証明書は、別途申込者情報の入力欄で入力した管理者連絡用メールアドレスに送られてきます。(むしろ、こちらのほうを当該サーバ側に送って欲しい。コピペって文字コードや改行コードなどで意外と危ういですし。)

この後は、上記のとおり、承認メールが転送先のメールアドレスに届くので、その本文中のリンクをクリックして、承認WEB画面内の承認ボタンをクリックして、しばらく待つと、証明書のメールが申込者の連絡先メールアドレスに送付されてきます。

証明書といっても、ファイルではなく、メールの本文内に何十行にもわたる意味不明な文字列が書いてあるので、これをWEBサーバの証明書ファイルにコピペしていくことになります。

たとえば、# cat > <新サーバ証明書ファイル名>.crt

を実行後、標準入力待ちになるので、一気にペーストして流し込む。(流し込んだ後は、<RET>キーを押下し、そのまま不要な文字を入力せずに速やかに「CTRL」+「C」キー)

なお、本証明書には、中間証明書も必要になっているので、こちらも証明書のディレクトリに新たにファイルを用意してコピペすること。(このファイルは、それとわかるようにkingcacert.cerとか例そのままでもいいかと)

次に、いままでオレオレ証明書では使用することはなかった、中間証明書の指定を先のssl.conf内の”SSLCertificateChainFile”で追加してやる必要があります。

正規のサーバ証明書で立ち上げ!

念のため、各ファイルの内容やパスに誤りがないことを確認の上、

WEBサービスの停止(service httpd stop)&起動(service httpd start)を実行。すると、起動時にパスワードを要求してきますので、最初の秘密鍵生成時に入力したパスワードを入力します。正しければ、何事もなく新しい正規のサーバ証明書でWEBサーバが立ち上がります!

[root@myportal certs]# service httpd stop
・・・省略・・・
[root@myportal certs]# service httpd start
httpd を起動中: Apache/2.2.3 mod_ssl/2.2.3 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server myportal.yshome.net:443 (RSA)
Enter pass phrase:

OK: Pass Phrase Dialog successful.
                                                           [  OK  ]
[root@myportal certs]#

補足)なお、再起動実施において、”NG”となった場合の原因の一例として、証明書コードのコピペミスがよくある。
この場合、/var/log/httpd/ssl_error_logに、下記のエラーログが見られる。
[error] Failed to configure CA certificate chain!
このメッセージ自体の意味は、”証明書の初めから終わりまでが正しくない”という内容のものです。
今一度、コピペした証明書ファイルの内容を確認してみましょう。
十中八九、”—–BEGIN CERTIFICATE—–”から”—–END CERTIFICATE—–”までが正しく張り付けられていないはずです。
(コピーの範囲指定ミスで開始または終了の”-“が足りないとか、(コピペ後、<RET>を入れ忘れて)最後の”—–END CERTIFICATE—–”自体が欠落しているなど)

なお、新しいサーバ証明書での動作確認としては、IEの”In Privateブラウズ”でWEBブラウザを立ち上げて、同WEBサーバにアクセスしてみてください!いままでアドレスバー赤色に染まっていたのが、何事もなく水色の鍵アイコンに変わり、そのアイコンをクリックして証明書情報を確認すると、見覚えのある内容が確認できます。

以上の手続きが、時間も問わずなんと半日でできてしまう!というお手軽さ。

本件の目的を適当に急ぎでやっつけちゃおうってことだけであればおすすめしません。(ほんとに必要なのか?ほんとにこの業者でいいのか?をちゃんと考えてから行動を起こしましょう)

が、この運用コストを極力抑えて、本来のWEBサーバのコンテンツ管理の運用を行いたいというのであれば、おすすめします!

追記、肝心なこと忘れてました!

http://でアクセスしに来たら、https://にリダイレクトさせなきゃ。

おわりに・・・

以上で、個人のWEBサーバを、一般的にまともなWEBサーバに近づけることができました。

そもそもサーバ証明書の役割ですが、簡単に言うと、

  1. 通信を暗号化して、通信の盗聴リスクを回避する。
  2. サーバを外部の機関が唯一無二のサーバであることを保証してもらうことで、なりすましや改ざんといったリスクを回避する。

といったところでしょうか。

ひと昔では、サーバ証明書と自ドメインの取得と維持管理だけでも年間3万円以上出費しなければならず、自サーバを持ちたい貧乏人にとっては、大変きついものでした。(なので、そういった人はできるだけ出費を抑えようと自力で自己防衛の努力をしてきたのですが。。。)

これを、現実に置き換えて考えると、、、

盗聴やなりすまし(偽称)は、治安のよい日本ではよっぽどの人でない限り、被害にあうことはないものでしたが、今となってはストーカーや詐欺といった犯罪が広まり、普通の人でもその被害者になりつつあります。しかし、実際の生活環境でこれらに対する対策はしてないのに、自身のサーバにだけお金をかけて対策を講じるのも、変な話ですが、インターネットの世界では、当人だけの被害ならまだしも、被害者でありながら知らずに加害者になってしまっているケースがあるので、エチケットとしてこういった対策は施していかなければならないということでしょうか。。。(今という時代やインターネットの世界とは、まったく世知辛いものです)

LinuxPCで秋月のUSB-シリアル変換ケーブルを使う

秋月電子通商の「USB-シリアル変換ケーブル (スケルトン)」(M-00720)は、サポートOSとしてWindowsクライアントOSしか記載されていない。

個人ではもっぱらLinuxPCを利用しているため、このPC環境で利用できないか試してみた。

本書で試してみたLinuxPCの環境は下記のとおりである。

  • PC本体:Lenovo Thinkpad X61s(USBポートのみでシリアルポートはない)
  • OS:Debian-7u6(Wheezy)

 

1.とりあえず接続してみた

OSデフォルト(別のところでカスタマイズはしているが)状態のままで、当該ケーブルをつなげてみて、OSが認識するかどうかを確認してみた。

接続後、以下のコマンドを実行してみた。

①dmesg

[1051828.140176] usb 5-2: New USB device found, idVendor=067b, idProduct=2303
[1051828.140185] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[1051828.140192] usb 5-2: Product: USB-Serial Controller
[1051828.140198] usb 5-2: Manufacturer: Prolific Technology Inc.
[1051828.142283] pl2303 5-2:1.0: pl2303 converter detected
[1051828.154334] usb 5-2: pl2303 converter now attached to ttyUSB0

上記のような出力が表示されました。(システム起動後に当該ケーブルを接続したのち、上記コマンドを実行すると、その最後にUSB関連と思われるログが出現するので、見つけやすいと思われます)

上記ログから、”USB-Serial Controller”というキーワードが確認できるので、この部分が接続したUSBシリアル変換ケーブルだという事の判断がつきます。

そして、この部分から、このUSBシリアル変換ケーブルに割り当てられたデバイスファイルが、”/dev/ttyUSB0”であるという事を把握すること。

②lsusb

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0411:01ee BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM2 Wireless LAN Adapter [Ralink RT3070]
Bus 005 Device 003: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

上記出力のうち、”Bus 005 Device 003: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port”から、

USBバス番号⑤番に、”Prolific Technology, Inc. PL2303 Serial Port”のシリアルポート装置が接続されているということが裏付けられます。

こちらのコマンドは、あくまでdmesgコマンドの出力から推察した当該デバイス情報のウラを取るための補足みたいなものです。

以上より、本環境(というよりも、ほとんどのLinuxディストリビューションと、当該変換ケーブルで使用されているICが”PL2303”であれば)においては、特に外部からデバイスモジュールをインストールなどの手間をかけずとも、そのままプラグアンドプレイで認識することができる。

ただし、認識はしたが、実際にこの接続を利用する場合、シリアル通信コンソールアプリケーションプログラムが必要になる。(Windowsであれば、「Tera Term」などに当たるもの。)

 

2.シリアル通信コンソールアプリのインストール

Linuxでは、CLIコマンドプログラムとして、”CU”と”minicom”がある。これをインストールしないことには、この接続を介してのシリアル接続通信が実現できない。

これらのプログラムは、Debianの場合は、ディストリビューションの標準パッケージとして存在するので、以下のコマンドを実行して、インストールすることができた。

# apt-get install cu

# apt-get install minicom

3.シリアル通信コンソールアプリの実行

<共通>

シリアル通信ポートを使用するにあたって、そのデバイスファイル”/dev/ttyUSB0”に対して、読み込み・書き込み権限を追加する必要がある。

pi@yspc912:/proc$ ls -l /dev/ttyUSB0
crw-rw—T 1 root dialout 188, 0  4月  3 00:08 /dev/ttyUSB0
pi@yspc912:/proc$ sudo chmod 666 /dev/ttyUSB0
pi@yspc912:/proc$ ls -l /dev/ttyUSB0
crw-rw-rw- 1 root dialout 188, 0  4月  3 00:08 /dev/ttyUSB0

参考)上記を実施せずに、コンソールアプリを実行しようとすると、下記のようなエラーが出力されて使用できない。

以下は、”cu”で実行した場合のエラーメッセージ

cu: open (/dev/ttyUSB0): Permission denied
cu: /dev/ttyUSB0: Line in use

以下に、それぞれのシリアル通信コンソールアプリの実行操作を記す。

<cuの場合>

% sudo cu -s 9600 -l /dev/ttyUSB0
と入力する(ボーレートとデバイス名は、接続機器にあわせて指定のこと)。
上記コマンド実行後,通信に成功すると,
Connected.
と返してくる。これで通信確立。
もし,
Line in use
とか返してきた場合,前述の<共通>に示した手順が実施されていない可能性があるので,もう一度チェックすること。
なお、プログラム終了(通信切断)の際は,
~.(チルダとドットを入力して、<Enter>)
と入力すると,数秒後に切断される。