Ubuntu 12.04 LTS Server


インストールをしようとした方法とタイミングの兼ね合いのせいで、しょっぱなから壁にぶち当たりました。

12.04 LTSはインストールできず、13.04はインストールできるが起動中に画面が消えてしまうというどうにもならない状態。


すっ飛ばしたい方用Index


タイミングの不運か、リリース側の不備か

UbuntuのインストールはUSB経由で行おうとしていました。Install USB Memoryを作成するソフトは「Universal USB Installer」「UNetbootin」が二大巨頭です。

筆者がインストールをしようとしたときは12.04.3がリリースされてからあまり日が経っていないときでした。「Universal USB Installer」の最新リリースはそれよりも後になってはいましたが、実行してみると選択肢は12.04.2のままでした。仕方なくそれでInstall USB Memoryを作成してみましたが、インストール序盤でCD-ROMの読み込みに失敗と出てそこから先に進みません。無理に進めようとしてもインストールされるべきものが全然インストールされないという状況に陥ります。

「UNetbootin」ではISOファイルを指定するだけでしたが、状況は同じでした。

ひょっとしたら12.04.3のリリースファイルの方に問題があったのかもしれません。

ちなみに12.04.2は既にダウンロードできない状況でした。DVD版なら落とせましたけど、これもインストールしたいものと違うしなぁ。

一方、12.04LTSを諦めて13.04を導入しようとすると「Universal USB Installer」「UNetbootin」ともにインストールは成功するものの、起動し始めると画面表示が消えて真っ暗になってしまうという現象に見舞われました。

インストールしようとしていたPCのMother BoardはIntelのDN2800MTなのですが、このM/BにはD-SUBとHDMI、2つの映像出力端子が付いています。筆者はD-SUBで作業していたのですが、どうやらこれが起動時に勝手にHDMI出力に切り替えられてしまうようなのです。

BIOSでHDMIを無効にしてもダメ。どうやら、決め打ちされているみたいですねぇ。うちの環境ではHDMI入力を受け付けてくれるDisplayが居間のTVしかないため、困りました。困った末にネットにてHDMI→DVIケーブル¥498を購入することにしました。

そして、商品到着前々日、たまたま寄ったディスカウントストア「ジェーソン」でBuffaloのHDMI→DVIケーブル¥198を見つけることになるのです。(筆者はいつもこんな調子ですわ) しかも、こっちの方が金メッキっぽい加工がされていて高級感がある。

さらに、待っている間に「UNetbootin」にてネットインストールという形で作成したUSBメモリで12.04.3のインストールに成功し、勝手にHDMI出力にされてしまう症状にも見舞われなかったため、結局はそのケーブルも不要となってしまったのです。

なんという間の悪さでしょう。筆者はいつもこんなです。


インストールするコンポーネント

今回、新PCにWeb Serverを構築するにあたって、Blogの廃止とBlogに書いたコンテンツの移動という作業も行いました。WordPressというCMS (Contents Management System)を使用していたのですが、これが、画像に対するコメント欄を出さないように設定することができなくて、そこからスパムコメントを挿し込まれるという状況に悩まされ続けていました。また、管理画面にアクセスしようとして1秒間隔で試してくる輩が後を絶たず。これに対するペナルティも(例えば3回失敗したら3分間はアクセス不能にするとか)設定できませんでしたので、低性能なPCのリソースも食われてしまって、電力も食うし散散でした。

ちなみに、アクセス元をたどるとブラジルとかフランスとかの大手っぽいIT企業のIPアドレスだったりします。完全に踏み台にされてますね。仕方がないので、ルータでパケット破棄設定で凌ぎましたが。

本来ならこういう不満は自力で解決するのがオープンソースのソフトウェアを使用させていただく身の正しいあり方なのでしょうが、自分の意志とは無関係にアップデートされていってしまうので、アップデートの度に修正し直すのも骨です。そんな手間を掛けるくらいなら自作のCMSにまとめた方が良い。どうせまともなコメントなんて付かないんだし。

というわけで、WordPressを導入しなくなりましたので、必然的にMySQLとPHPも不要になりました。つまり、LAMPの導入自体今回はしません。何しろ自前のCMSは Apache + Glassfish + PostgreSQL + Java ですからね。

ということで、インストール時に選択したコンポーネントは今回は「Open SSH Server」のみとなりました。他で必要となるコンポーネントはUbuntu Serverのインストール後に個別でインストールすることにします。


インストール直後にしておくこと

Ubuntu Server インストール時にはDHCPでネットワークを構成していたので、これを固定IPアドレスに変更します。

$ sudo nano /etc/network/interfaces
iface eth0 inet staticaddress 192.168.xxx.xxxnetmask 255.255.xxx.xxxnetwork 192.168.xxx.xxxbroadcast 192.168.xxx.xxxgateway 192.168.xxx.xxxdns-nameservers 192.168.xxx.xxx xxx.xxx.xxx.xxx

networkとbroadcastは指定しなくても動きますね。

余談ですが、13.04では「eth0」のところが「p33p1」ってな感じに変わっていました。なんじゃこら?

修正終えたら、

$ sudo /etc/init.d/networking restart

っと。

ネットワークインストールだと起動時にスプラッシュが表示されるように設定されてしまうようです。Serverの起動時はスプラッシュよりもDmesgでしょ。というわけで、

$ sudo nano /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT=""

と、quiet splashのオプションを削除します。


すげー速くなった

PentiumM 1.6GHz (Banias) + DDR-266 1GB + 5400rpmHDD 40GBから、Atom N2800 1.86GHz 2C4T (CedarTrail) + DDR3-1067 2GB + SSD 40GBと処理性能的にはそれほどジャンプアップしていないのに起動がかなり速くなりました。SSDの恩恵も大きいのでしょうが、MySQL,PHP,Wordpressがなくなったことも大きいかも。ちなみにSpareとしてECS D41S、Atom D410 1.66GHz 1C2T (PineTral) + DDR2-800 2GB + SSD 30GBにもインストールしましたが、こちらも結構速くなりました。


一旦チャレンジレスポンス認証

前回、Ubuntu8.04LTS Serverを導入したとき(の記事はこちら「Ubuntu 8.04 LTS Server」)はWindowsからSSH,SFTPのアクセスを行なっていたのですが、今回は開発環境もUbuntu Serverにしていますので、UbuntuからのSSH,SFTPアクセスになります。基本は同じですが。

まずは、一旦チャレンジレスポンス認証を許可して、鍵なしでもアクセスできるようにします。別の何らかの方法で公開鍵をセットできるのであればこの作業も不要なのですが、素のUbuntu ServerではUSBメモリを指しても自動マウントはされない(XUbuntuDesktopを追加した開発環境では自動マウントされるのですが)ので、結局この方法が一番手っ取り早かったりします。

$ sudo nano /etc/ssh/sshd_config
ChallengeResponseAuthentication yes

デフォルトでは「no」になっていますが、一旦「yes」にします。そして、設定反映。

$ sudo /etc/init.d/ssh reload

XUbuntuには普通の「ターミナルエミュレータ」の他に「Byobu Terminal」がインストールされていました。こちらの方がステータスが表示されていたりして高機能です。まあ、どちらでも良いのですが。ターミナルからコマンドで接続できます。

$ ssh -p Port User@Host

-p Portのところはポート番号で標準の22を使用している場合は省略可能です。Userは接続するユーザー名。Hostのところは/etc/Hosts等に設定されているのであればホスト名でも良いですし、IPアドレスを直書きしてもOKです。

接続したら、ホームディレクトリの配下に公開鍵をセットします。

$ mkdir .ssh$ cat > .ssh/authorized_keys

この状態で予め作成しておいた公開鍵の内容をコピペ。エディタで開いてコピー、ターミナル上で右クリックして貼り付け。これで、流し込めます。ASCIIコードのみで構成されていますので文字化け等の心配も不要です。

流し込み終わったら[Ctrl]+[D]で抜けましょう。catが使いづらいなら、nanoで流しこんでもOKです。

ちゃんと公開鍵が設定できたら、一旦許可したチャレンジレスポンス認証を不許可に戻します。

ChallengeResponseAuthentication no

その他、ポートを変更する、X11を使わない、接続ユーザーを制限するなどの設定をしても良いでしょう。

Port 22X11Forwarding noAllowUsers xxxxx

編集が終ったら、先ほどと同じ様に設定反映をしておきましょう。

$ sudo /etc/init.d/ssh reload


改めてSSH接続

設定をやり直したりして、過去の認証記録が邪魔になってしまう場合があります。そんなときは、

sudo ssh-keygen -f "/home/User/.ssh/known_hosts" -R 192.168.xxx.xxx

などとして、過去の記録を一旦消してあげると、新しい記録がされるようになります。

パスワード打って、認証してあげればOKです。


SFTP接続

もノリは全く一緒、鍵も同じものを使い回しました。「Ubuntuソフトウェアセンター」で検索して「Filezilla」なるソフトをインストール。

設定する項目も、ターミナル接続で必要になったものと同じですので迷うことはないかと。

そういえば、秘密鍵の設定をした記憶が無いなぁ、「Filezilla」の設定画面みてもそれらしきものをセットするところが無いし、ターミナルでhistory打ってもそれらしきものが残っていない。うーむ。


PostgreSQL9.2のインストール

Ubuntu 12.04 LTS ServerではTaskselでPostgreSQLをインストールすることができますが、バージョン9.1です。

個人的に9.2をインストールしたかったので、個別にインストールすることにしました。

まぁ、「Apt - PostgreSQL wiki」に書いてあるとおりなのですが、パッケージリストを登録します。

$ sudo nano /etc/apt/sources.list.d/pgdg.list

として、新規ファイルを作成し、中身を

deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main

とします。「precise」の部分が上記ページとは異なっていますが、ここにはUbuntuのバージョン名が来ますので12.04の場合は「precise」なのです。次に、

wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -

として、認証鍵を追加します。これ、なぜか結構待たされましたので、しばらく反応が無くても我慢しましょう。

鍵が追加できたら、パッケージリストの更新です。

$ sudo apt-get update

更新できたら確認してみましょう。

$ sudo apt-cache search postgresql | grep 9.2

ずらずら出てきたらOKです。

それではインストール!

$ sudo apt-get install postgresql-9.2

これも上記ページとは若干異なるように書いていますが、筆者は9.2をインストールしたかったのでより細かくパッケージを指定しています。また上記ページにあるpgadmin3はGUIのクライアントソフトであって、開発環境には欲しいものですが、Web Server側には不要なものですのでインストールしません。もちろん、筆者は開発環境側にpgadmin3をインストールして、そこからWeb Server上のpostgreSQLにアクセスしたりします。


postgresql.confの編集

PostgreSQLはインストールした直後はローカル以外まともにアクセスできません。アクセスできるように設定が必要なります。

$ sudo nano /etc/postgresql/9.2/main/postgresql.conf

として、ファイルを開き、listen_addressesにアクセスを受け付けるIPを設定します。

192.168.xxx.xxx,localhost

どうも、ここの設定が毎回引っかかってしまう筆者ですが、どうやら、localhostはIPアドレスよりも後ろに書いた方が良いようです。localhostや127.0.0.1が先頭にあると、その後ろに書いた設定が無視されるのか分かりませんがうまいこと接続できません。

そしてもう一つ、記述するIPアドレスはアクセス元の端末ではなくWeb Server自身のIPアドレスだけで良いようです。というか、同じセグメントのIPが全部listenされるようになっているような気もします。外部の端末からpgadmin3で接続してもpsqlコマンドやpg_restoreコマンド叩いてもイケちゃうんですよね。


pg_hba.confの編集

先ほどのファイルでは記述しないとそもそも聞いてくれもしないというものでしたが、こちらのファイルでは権限関連の設定、つまりどういったアクセスを許可するかといった設定になります。

$ sudo nano /etc/postgresql/9.2/main/pg_hba.conf

さて、デフォルトではIPv4ローカルコネクションについて、localhostからのアクセスをmd5認証で受け付けるようになっています。このmd5やpasswordはOSのパスワードとは関係が無くてpostgreSQL内に作成しなければいけないものです。つまり、インストールしたてのときはどうやってもアクセス不能です。

きっちりやるならSSLにした方が良いのだろうけど、とりあえず外部にポートを開放しているわけでもないし、内部のPCが乗っ取られでもしなければ他者にアクセスされることもないので、当面は一番速いであろうtrustで行く事にしました。まぁ、筆者の勉強不足なところですが。

host    all             all             127.0.0.1/32            trusthost    all             all             192.168.xxx.1/24        trust

ローカルホスト、及び、LAN内からのアクセスは無条件に許可するようにしています。ここで、127.0.0.1/32についてもtrustにしているのはglassfishからのpostgreSQLPool接続で使われるためです。

それでは、設定反映っと。

$ /etc/init.d/postgresql restart


Apacheのインストール

UbuntuのTaskselではLAMPという形でまとまってしまっているので、Apache単独でのインストールを行うにはapt-getからする必要があります。

sudo apt-get install apache2

デフォルトでコンテンツのルートディレクトリとなる/var/wwwは所有者がrootになりますので、場合によっては所有者や権限等調整した方が運用しやすいかもしれません。

インストールが完了したら使用したい機能で、標準では有効になっていないものを有効化します。今回はrewriteとproxy_ajpを有効化しました。

$ sudo a2enmod rewrite
$ sudo a2enmod proxy_ajp

必要となるモジュールがまとめて有効化されます。

$ service apache2 restart

ですると完了です。


Apacheの設定

installされた形式を踏襲するのであれば、/etc/apache2/sites-availableにconfファイルを作成して、/etc/apache2/sites-enabledにそのリンクを置くという形になりますが、面倒だし、自分の作るconfは1つだけなので直接/etc/apache2/sites-enabledにconfファイルを作成してしまいます。なお、デフォルトで存在する000-Defaultリンクは削除しないと自分のconfとバッティングする可能性があります。逆に言うと必要なものは自分のconfにも書いてしまったほうが良いです。000-Defaultはその雛形のようなものですので。

/etc/apache2/sites-enabledに置かれたファイルはIncludeされるように予めapache2.confに記載されていますのでapache2.conf等その他のconfファイルに変更を加える必要は基本的にはありません。

ドメインの統合

元々、筆者のWebPageはwww.dodoit.infoというドメインで運営していたのですが、いつの間にかdodoit.infoもGoogleウェブマスターツールの管理対象になってしまっていて、全く変わらないコンテンツなのに二重管理みたいな形になってしまっていました。それをどちらかに統一しようと思ってrewriteモジュールを導入しました。

たまに、mx1.dodoit.infoとかでアクセスしてくる人が居るんですが、あれって何なんでしょうね?

どちらに統一しようか悩んだのですが、簡潔なURLの方が好ましいことと、wwwというサブドメイン名の存在意義が薄れてきていることからサブドメイン名なしの方向に統一しようと考えました。散散苦労しましたが、

RewriteEngine onRewriteCond %{HTTP_HOST} ^.+dodoit\.infoRewriteRule ^/(.*)$ http://dodoit.info/$1 [R=301,L]

これを<VirtualHost *:80>タグ内に記述しました。ずっと、そのさらに<Directory />タグ内に記述していて、うまく動かないなぁなんて悩んでいたんですが、当たり前です。<Directory>タグ内はURIが確定して、実際のファイルの在処を探すときに初めて生きてくるところなので、ここでドメイン名をどうこうしようとするのでは遅すぎるのでした。

index.htm(l)の有無の統合

今回はさらに/index.htmlを/に統一させようとも試みています。

RewriteCond %{REQUEST_URI} index\.html?$RewriteRule ^/(.*)index\.html?$ /$1 [R=301,L]

index.htmまたはindex.htmlを省いてリダイレクトする設定です。上記ともども301指定しているのはGoogleさんに恒久的に変更するのですよと伝えるためです。この指定をしないと302で返ってしまうためGoogleさんが保持するURIが変わってくれず古いままになってしまいます。

Proxyの設定

Proxyの設定は前回と一緒です。

<IfModule mod_proxy.c>ProxyRequests Off<Proxy *>AddDefaultCharset offOrder deny,allowAllow from all</Proxy>ProxyVia On</IfModule>

AJPプロトコルによるGlassfish連携の設定

そして、今回はApacheが直接htmlファイルを返してしまうものと、Glassfishに制御を渡すものとの区別をURIで行おうとしました。

<IfModule mod_proxy_ajp.c>ProxyPassMatch ^/$ ajp://localhost:8009/ProxyPassMatch ^/(.+/)$ ajp://localhost:8009/$1ProxyPassMatch ^/(.*\.html)$ ajp://localhost:8009/$1</IfModule>

URIのルート以下が"/"の場合、"/"で終わる場合、".html"で終わる場合にGlassfishに渡すようにしています。1行目と2行目がまとめられそうな気もするのですが、先頭の/は外出ししておかないとバグるという問題が現在のApacheにはあるそうなので、上記のように記載しました。

エラー時のhtmlなど固定でApacheから直接返したいコンテンツは".htm"で終わるようにして、Glassfishには渡さないようにしています。


ServerNameの解決

さて、

apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.xxx.xxx for ServerName

みたいなワーニングメッセージがapacheサービスの起動時、終了時に出ているかと思います。

上記confファイルの<VirtualHost *:80>タグ内にServerNameも記述しておきましょう。

ServerName dodoit.info

rewriteでwwwアクセスのドメインをdodoit.infoに統一するようにしたので不要なのかもしれませんが、一応エイリアスも書いておきましょうか。

ServerAlias *.dodoit.info

そして、DNSサーバーを持っていない場合は/etc/hostsファイルにdodoit.infoを登録すればApache起動時のワーニングは出なくなります。

192.168.xxx.xxx dodoit.info www.dodoit.info

後ろのwww.dodoit.infoは無くてもいいです。


Javaのインストール

GlassFishの前にJavaのインストールがまだでしたので、こちらを先に片付けます。GlassFishではjreでなくjdkを要求してきますので、jdkをインストールしましょう。

$ sudo apt-get install openjdk-7-jdk


GlassFishのインストール

GlassFishもUbuntuのパッケージリストに載るようになりました。しかし、標準では未だにv2.1だったりします。そこで、今回も独自にインストールすることにしました。

GlassFishは自己展開式のshファイルと単純圧縮方式のzipファイルが提供されています。shファイルではGUIを要求されますので、GUIを導入していないWeb Serverでは面倒くさいことになります。いや、事前に設定ファイルを用意してあげればGUI無しでもインストールは可能なのですが。

筆者は面倒臭がってzipファイルを選んでしまいました。しかし、今回もunzipの導入からやらなければなりませんでした。

$ sudo apt-get install unzip

そして、今回も展開先はホームディレクトリ直下です。なんか、/usr/localとかに置いたりした方が良いかなとか思ったりもしたのですが、開発環境にNetbeansとともに導入したときもホーム直下だったし、変に格好つけても管理に手間取るだけなんで割りきってホーム直下で展開しました。

$ unzip glassfish-4.0-ml.zip

あ、web profileという軽量機能限定版もあるのですが、XML周りが貧弱そうという理由だけでFull Platformを選択しています。mlはマルチランゲージの略ですね。やっぱり日本語対応されている方が楽なので。

なんか、でも、開発環境でshファイルをインストール(開発環境はGUIがあるので)したときとディレクトリ名が違ったりする。なんでこういうところがいちいち違うっていうか、合わせようっていう意識が無いのか。大方、作業者が別人でそれぞれが勝手に作業しているだけなんでしょうね。


GlassFishの設定

まずはJDBCを置いておきましょう。glassfish/lib配下に「postgresql-9.2-1003.jdbc4.jar」を置きます。

GlassFish v4の初期状態では管理コンソールへのアクセスができません。「Error 構成エラー DASにリモート・アクセスするには、セキュリティ保護された管理を有効にする必要があります。」と怒られます。

セキュリティ保護された管理を有効にするためにはまずパスワードの設定が必要です。

$ glassfish4/bin/asadmin

でasadminの対話モードに入ります。そこで、

asadmin> change-admin-passwordEnter admin user name [default: admin]>Enter the admin password>Enter the new admin password>Enter the new admin password again>

「Enter the admin password」ってところは初期状態では未入力状態ですのでそのまま[Enter]です。ちゃんと設定できたら、

Command change-admin-password executed successfully.

と出ます。

それからやっと、セキュリティ保護された管理の有効化です。

asadmin> enable-secure-adminEnter admin user name>  xxxxxEnter admin password for user "xxxxx">

成功すると、

セキュリティ保護された管理に対する変更を有効にするには、稼働中のすべてのサーバーを再起動する必要があります。Command enable-secure-admin executed successfully.

というわけで、対話モードのまま、

asadmin> restart-domain

管理コンソールへの接続はhttpsになっていますので、ブラウザ上でアドレス「https://localhost:4848/」でアクセスできます。(まぁ、httpsと打たなくても切り替わってはくれるのですが)

あ、証明書関連で怒られたりしますので例外に追加してあげてください。


管理コンソールでの設定

管理コンソールでなくても設定できるのですが、楽なので、その後の作業は管理コンソールから行います。

JDBC接続プールの設定

JDBC接続プールを追加します。名前は何でも良いです。

リソース・タイプを「javax.sql.DataSource」に、データソース・クラス名を「org.postgresql.ds.PGSimpleDataSource」に、後はとりあえずデフォルトで。

追加プロパティには少なくとも以下の項目を追加した方が良さそうです。

  • User : postgres
  • Password : xxxxx
  • DatabaseName : xxxxx
  • PortNumber : xxx
  • ServerName : localhost
  • driverClass : org.postgresql.Driver
  • URL : jdbc:postgresql://localhost:xxx/xxxxx

JDBCリソースの設定

続いてJDBCリソースを追加します。JDBCリソース名は何でも良いですが、アプリ側からアクセスするときの名前と合わせる必要があります。例えば持続性ユニット(Persistance)を使用しているのであればそこのデータ・ソース名と合わせます。

プール名には上記で追加したJDBC接続プール名を選択します。

AJPリスナーの追加

Apacheからの要求を受け付けるAJPリスナーを追加します。構成→server-config→HTTPサービス→HTTPリスナーでHTTPリスナーを追加。

名前は何でもいいです。ポートは「8009」、「JKリスナー」にチェック付け、adressは「localhost」、スレッドプールを「http-thread-pool」にします。

構成→server-config→ネットワーク構成→ネットワーク・リスナーでも同じ設定ができそうです。


サービス登録

前回とほとんど同じですが、restartがあることが分かりましたので、restartの機能も組み入れます。

$ sudo nano /etc/init.d/glassfish

別にglassfishという名前でなくても良いと思いますが、新規ファイルを書き込みます。

#!/bin/sh. /lib/lsb/init-functionscase "$1" instart)/home/xxxxx/glassfish4/bin/asadmin start-domain;;restart|reload|force-reload)/home/xxxxx/glassfish4/bin/asadmin restart-domain;;stop)/home/xxxxx/glassfish4/bin/asadmin stop-domain;;*)echo "Usage: $0 {start|stop|restart|reload|force-reload}"exit 1;;esacexit 0

そして、実行権限を与えます。

$ sudo chmod 755 glassfish

サービス登録方法も前回と一緒。相変わらずApacheのシーケンスコードが起動=91、終了=09ですので、その内側(起動は後、終了は先)に登録しました。

$ sudo update-rc.d glassfish defaults 92 08


その他の設定を軽く抑えておきます。個別にページを起こすほどでもないのでまとめて。

NTPクライアントの定期実行設定と、DynamicDNSの定期確認登録について。

NTPクライアントの設定

NTP Serverを動かす必要がなければ、新たにソフトウェアをインストールする必要はありません。既に時刻取得のコマンドntpdateが存在します。

これを定期的に起動すればよいのですが、今回は一日一回でいいかなぁということで、

$ sudo nano /etc/cron.daily/ntpdate

で日次実行のcron配下に新規ファイルを作成します。名前は別にntpdateでなくても良いです。中身は

#!/bin/shntpdate -B ntp.nict.jp

-Bは徐々に修正するというオプションです。いきなり修正した結果、時系列が崩れて調子がおかしくなるソフトとかがあったりしたら怖いのでこのオプションを指定しています。ntp.nict.jpはPC個体から直接アクセスすることを容認してくれている貴重なNTP Serverです。ありがたく使わせていただいています。

ファイルを作成したら、実行権限を与えておいてあげましょう。

$ sudo chmod 755 /etc/cron.daily/ntpdate


DynamicDNS確認登録ソフトの設定

筆者はValueDomainのDDNSを利用していまして、ValueDomain用のIPアドレス確認&DDNS登録スクリプトを公開してくださっている方がいまして、ありがたく使わせていただいています。「ddnsc」というソフトです。perlで動作します。

これを自分の登録ドメイン用に改修して定期的に動作するようにします。

上記のNTPのような作成方法でも良いのですが、daily/hourly/monthly/weeklyしか選択肢がありません。最短でも1時間という間隔はやはりちょっと長いので、別の方法で登録します。逆に言うと上記NTPクライアントの定期起動もこちらの方法で登録しても良いです。

$ sudo crontab -e

このコマンドを実行するとどのエディタで登録するかたずねられます。デフォルトはnanoです。エディタが開いたら

3-58/5 * * *   *     /home/xxxxx/ddnsc/ddnsc > /dev/null 2>&1

あー、実行ディレクトリ等は各自の環境に合わせて記述してください。この3-58/5というのは毎時3分〜58分まで5分間隔でという意味です。つまり、0:03,0:08,……,0:58,1:03,……という具合に実行されることになります。

なぜ3からにしているのかというと0からしているところが多いだろうからずらそうという意図です。ですので、これを見て設定を真似しようとする方がもしいらしたとしたら是非3以外にしてください。時間間隔も変えてくれるとなおGoodです。

後ろの/dev/null 2>&1っていうのは、これを付けないとうまく動かないので付けています。

なお、rootで実行されることになると思いますので、ソフトへの実行権限、および、ログファイル等への書き込み権限を整備しておきましょう。

ddnscは実行するごとに現在のドメインのIPを取得して、変わってなければそこで終了、変わっていればDDNSへの登録を行なってくれる素敵なソフトウェアです。

!この文字が見える場合、コピペされています(ブラウザ非対応でも見えます)! from Gradual Improvement (dodoit.info)

[記事作成日: 2013-09-10] ※誤記訂正のみの更新等は含みません

この記事のタグ

PC

Linux/BSD

WebServer