サーバ構築



目次
  1. Redmine
    1. 参照
    2. 2017/05〜
      1. 〜2017/05
        1. H/W
          1. OS install
            1. ruby install
              1. DNS 設定
                1. ルータ設定
                  1. トラブルシュート
                    1. 現象
                      1. 対応
                        1. 余談
                        2. TODO
                        3. Apache
                          1. 固定IP化
                            1. 旧情報
                              1. http://グローバルIP するとルータ画面が表示される
                                1. DNSを LAN 内に立てる
                                  1. 旧情報
                                  2. つながらない
                                    1. 旧情報
                                  3. メール
                                    1. 送信
                                    2. UPS
                                      1. SimpleShutdownSoftware v2.20 Linux版のインストール
                                        1. 設定
                                          1. 動作テスト
                                            1. Files
                                              1. TODO
                                                1. 旧情報
                                                2. TODO

                                                最近の更新
                                                太陽光発電_奮闘記
                                                2018/02/11
                                                車と税金
                                                2018/01/27
                                                ブロックチェーン
                                                2018/01/08
                                                盛和塾で学びたいこと
                                                2018/01/07
                                                伊勢雅臣
                                                2018/01/04
                                                作業場
                                                2017/11/30
                                                稲盛和夫
                                                2017/11/07
                                                第05期決算報告
                                                2017/10/28
                                                サーバ構築
                                                2017/10/07
                                                日本年金機構に呼び出されました
                                                2017/09/17
                                                放浪職人
                                                2017/09/15
                                                マネジメント
                                                2017/09/09
                                                サーバ運用
                                                2017/08/25
                                                資金調達
                                                2017/05/07
                                                ヤバい経営学
                                                2017/02/12
                                                理想の組織が失敗する時
                                                2017/02/12
                                                シーラカンス社員
                                                2017/02/11
                                                牧野正幸
                                                2017/02/11
                                                index
                                                2017/02/11
                                                開業に向けて
                                                2017/02/11


                                                [-] 1. Redmine

                                                [-] 1.1. 参照

                                                [-] 2. 2017/05〜

                                                Ubuntu 12.04 のサポート終了に伴い OS をアップグレード しようとしたのが悲劇の始まりだったw

                                                1. Ubuntu 12.04 のサポート終了に伴い OS をアップグレードしようとしたところ 失敗に終わる。 種々の設定(/etc/*)辺りをいろいろ変えていたからと予想。 ま、ここまでは想定内。
                                                2. コールドインストールを試みるもここで何と Disk I/O エラー。
                                                3. 新しく HDD を買い、再びコールドインストールを試みる。 OSインストールまでは問題ないのだけど、そこからの boot で なぜか画面が真っ黒に。 色々(BIOSアップグレード, (32bit, 64bit) x (12.04, 14.04, 16.04, 17.04), Debian, Debian GUI)試すも、現象は同じ。 ここまでで1週間w。 結論から言うと、HDD・グラフィックボード・LAN辺りのトラブルだったかと。
                                                4. 諦めて新ハード購入。
                                                  Shuttle XS36V5 (Celeron N3050):¥18,981
                                                  メモリ 8G(SODIMM DDR3L-1600):¥ 6,769
                                                  HDD TOSHIBA 2.5" SATA 9.5mm-height 1TB(MQ01ABD100):¥ 5,980
                                                  ここに Ubuntu 16.04 をインストールするとサクッと動作。 先週一週間の苦労が無駄に…orz

                                                [-] 3. 〜2017/05

                                                [-] 3.1. H/W

                                                当面はこれで十分だろう:

                                                [-] 3.2. OS install

                                                Ubuntu server 12.04 LTS 32bit を入れる。

                                                1. http://www.ubuntu.com/ から Ubuntu server 12.04 LTS 32bit をダウンロード。 (32bit なのは、H/W が 32bit しか対応してないため)。
                                                2. USBメモリにコピー
                                                3. USBメモリを挿して起動
                                                4. 原則、画面に沿って進める。
                                                  • "インターフェイスが検出されませんでした" と出る。 1時間ほどハマったが、結論としては、このまま進め、 後で再設定すれば ok だった(後述)。
                                                5. ソフトウェアの選択。とりあえず選んだのは以下:
                                                  • Open SSH Server
                                                6. keyboard 変更
                                                  1. /etc/default/keyboard: #XKBMODEL="a4techhKB21"
                                                    XKBMODEL="pc105"
                                                    #XKBLAYOUT="jp"
                                                    XKBLAYOUT="us"
                                                  2. コマンド実行:
                                                    $ sudo dpkg-reconfigure console-setup
                                                7. インストール後、下記でネットワーク動いた:
                                                  1. /etc/network/interfaces に下記を追加:
                                                    auto eth0
                                                    iface eth0 inet dhcp
                                                  2. 再起動
                                                    $ sudo /etc/init.d/networking restart
                                                8. 追加パッケージ
                                                  1. apt-get install の前に以下をしないと始まらない:
                                                    $ suto apt-get update
                                                    $ suto apt-get upgrade
                                                    /etc/apt/sources.list は既に jp が指定されていた。
                                                  2. 追加パッケージ:
                                                    lv
                                                9. /etc を git で管理
                                                10. sshd のセキュリティ強化
                                                  PermitRootLogin:no
                                                  PasswordAuthentication:no
                                                11. /etc/default/bootlogd の BOOTLOGD_ENABLE を Yes にする。 /var/log/boot に残るようになる。

                                                [-] 3.3. ruby install

                                                [-] 3.4. DNS 設定

                                                1. ドメイン設定 > ネームサーバの設定 > レンタルDNSレコード設定
                                                  • wellstech.jp TYPE A

                                                [-] 3.5. ルータ設定

                                                グローバルIP からのアクセスを、サーバに転送するよう、ルータの設定を行う。 サーバはローカルの固定IP 192.168.1.200 とする。

                                                IPport
                                                192.168.1.20022(ssh)
                                                192.168.1.20080(http)
                                                192.168.1.200443(https)

                                                1. http://ntt.setup/ (http://192.168.1.1)にアクセス。
                                                2. 認証。パスワード入力。
                                                3. 詳細設定 > 静的NAT設定
                                                  エントリ番号:1
                                                  優先順位:1
                                                  接続インタフェース名:セッション2(i-revo)
                                                  宛先IPアドレス:192.168.1.200
                                                  変換対象IPアドレス:自分のWAN側IPアドレス
                                                  変換対象プロトコル:TCPとUDP両方
                                                  変換対象ポート:80-80
                                                  エントリ番号:2
                                                  優先順位:2
                                                  接続インタフェース名:セッション2(i-revo)
                                                  宛先IPアドレス:192.168.1.200
                                                  変換対象IPアドレス:自分のWAN側IPアドレス
                                                  変換対象プロトコル:TCPとUDP両方
                                                  変換対象ポート:443-443
                                                  エントリ番号:3
                                                  優先順位:3
                                                  接続インタフェース名:セッション2(i-revo)
                                                  宛先IPアドレス:192.168.1.200
                                                  変換対象IPアドレス:自分のWAN側IPアドレス
                                                  変換対象プロトコル:TCPとUDP両方
                                                  変換対象ポート:22-22
                                                  エントリ番号:4
                                                  優先順位:4
                                                  接続インタフェース名:メインセッション(ISP1)
                                                  宛先IPアドレス:192.168.1.200
                                                  変換対象IPアドレス:自分のWAN側IPアドレス
                                                  変換対象プロトコル:TCPとUDP両方
                                                  変換対象ポート:22-22
                                                  エントリ番号:5
                                                  優先順位:5
                                                  接続インタフェース名:セッション2(i-revo)
                                                  宛先IPアドレス:192.168.1.200
                                                  変換対象IPアドレス:自分のWAN側IPアドレス
                                                  変換対象プロトコル:TCP
                                                  変換対象ポート:25(smtp)

                                                [-] 3.5.1. トラブルシュート

                                                [-] 3.5.1.1. 現象

                                                (2012/07/12) 突然 LAN内でネットが使えなくなる現象がだいたい1回/日の割合で4回発生した。 時間は不定期。サーバにもルータにもログは残っていない。

                                                [-] 3.5.1.2. 対応

                                                マルチセッションにしてからおかしくなったと思う。 取り急ぎ、固定IP側のセッション1つにして運用してみる。

                                                [-] 3.5.1.3. 余談
                                                • ルータ PR-S300SE の PPPランプが橙色から緑に戻った。
                                                  • これはルータの仕様。マルチセッションの場合橙色になる。
                                                • 従来のセッションを削除する際、パスワードを残しておきたかった。 管理画面のソースを見ても、tcpdump してもパスワードが分からない。 どうやっているのか、分からなかった…。

                                                [-] 3.5.2. TODO

                                                • ルータの DHCP で 200 をリース対象としないよう設定する必要があるが まだやってない。

                                                [-] 3.6. Apache

                                                1. SSI
                                                  $ sudo a2enmod include
                                                  $ sudo service apache2 restart
                                                2. Juli setup /etc/apache2/sites-available に下記を追加:
                                                  #--------------------------------------------------------
                                                  # juli setup
                                                  #--------------------------------------------------------
                                                  
                                                    Options +Includes -Indexes -FollowSymLinks
                                                    DirectoryIndex index.html index.shtml
                                                  

                                                [-] 3.7. 固定IP化

                                                やはり固定IPが良いと判断した。理由は、

                                                1. i-revo に契約
                                                2. 与えられたアカウントをルータに登録
                                                  • http://ntt.setup でルータに新しいセッションとして i-revo を設定。
                                                3. /etc/network/interfaces の eth0 の項を下記とする (LAN内 192.168.1.200 に固定としている):
                                                  auto eth0
                                                  iface eth0 inet static
                                                  address  192.168.1.200
                                                  netmask  255.255.255.0
                                                  gateway  192.168.1.1
                                                  dns-nameservers 192.168.1.1
                                                  注: 'dns-nameservers' のエントリーがないと、reboot時に /etc/resolv.conf が空になり、dns が引けなくなっていた。

                                                [-] 3.7.1. 旧情報

                                                (この節古い) /etc/resolv.conf が動的 (/var/resolvconf/resolv.conf への symlink)なので 変更。

                                                $ sudo apt-get remove isc-dhcp-client

                                                [-] 3.7.2. http://グローバルIP するとルータ画面が表示される

                                                LAN内部から http://グローバルIP にアクセスすると、なぜかルータ管理画面が 表示される。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1350231438 によると、ルータの機種によるようだ。 今使用しているのは PR-S300SE (住友電工製?)

                                                [-] 3.7.2.1. DNSを LAN 内に立てる

                                                LAN内に DNS を立て、LAN内ではサーバはローカルIP 192.168.1.200 となるようにすることで対応してみる。

                                                1. bind9 のインストール&設定
                                                  1. install
                                                    $ sudo apt-get install bind9
                                                  2. /etc/bind/named.conf.local
                                                    zone "wellstech.jp"         { type master; file "/etc/bind/wellstech.jp.zone"; };
                                                    zone "168.192.in-addr.arpa" { type master; file "/etc/bind/wellstech.jp.rev";  };
                                                  3. 正引き /etc/bind/wellstech.jp.zone
                                                    $TTL    604800
                                                    @       IN      SOA     wellstech.jp. root.wellstech.jp. (
                                                                                  2         ; Serial
                                                                             604800         ; Refresh
                                                                              86400         ; Retry
                                                                            2419200         ; Expire
                                                                             604800 )       ; Negative Cache TTL
                                                    ;
                                                    @       IN      NS      wellstech.jp.
                                                    @       IN      A       192.168.1.200
                                                  4. 逆引き /etc/bind/wellstech.jp.rev
                                                    $TTL    604800
                                                    @       IN      SOA     wellstech.jp. root.wellstech.jp. (
                                                                                  2         ; Serial
                                                                             604800         ; Refresh
                                                                              86400         ; Retry
                                                                            2419200         ; Expire
                                                                             604800 )       ; Negative Cache TTL
                                                    ;
                                                    @       IN      NS      wellstech.jp.
                                                    200 IN PTR wellstech.jp.
                                                  5. 検証
                                                    $ cd /etc/bind/
                                                    $ sudo named-checkzone wellstech.jp wellstech.jp.zone
                                                    zone wellstech.jp/IN: loaded serial 2
                                                    OK
                                                2. 自前の DNS を優先するように /etc/resolv.conf に指定したいが、 Ubuntu では resolvconf(8) 経由でこの設定ファイルが上書きされる。 そのソースとなるのが /etc/network/interfaces の dns-nameservers エントリ。ここに複数の IP を空白区切りで指定できるので、 /etc/init.d/networking restart 後は /etc/resolv.conf に2行の nameserver が並ぶはず…がそうならない。reboot してみても駄目。 ググッても分からないので、とりあえず /etc/resolvconf/resolv.conf.d/head を下記のようにして、自前 DNS を優先するようにする:
                                                  # Dynamic resolv.conf(5) file for glibc resolver(3) generated by
                                                  # resolvconf(8)
                                                  #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
                                                  nameserver 127.0.0.1
                                                  これで /etc/init.d/networking restart すると、/etc/resolv.conf は意図したようになった:
                                                  nameserver 127.0.0.1
                                                  nameserver 192.168.1.1
                                                3. 検証
                                                  1. LAN内ではサーバはローカルアドレスとなる:
                                                    $ nslookup wellstech.jp
                                                      :
                                                    Name:   wellstech.jp
                                                    Address: 192.168.1.200
                                                  2. LAN内からグローバルIPも引ける:
                                                    $ nslookup www.yahoo.co.jp
                                                      :
                                                  3. LAN外からはグローバルIPが引ける:
                                                    $ nslookup wellstech.jp
                                                      :
                                                    Name:   wellstech.jp
                                                    Address: 124.41.84.125

                                                参考:

                                                [-] 3.7.2.2. 旧情報

                                                /etc/hosts に書き込み、LAN 内・外に移動のたびに編集することで 逃げることにしていた時期もあった…。

                                                [-] 3.7.3. つながらない

                                                外部から wget http://wellstech.jp してもアクセスできない。

                                                1時間ほどハマっていたが、結論としては、 ルータ管理画面の 基本設定 > 接続先設定 > 接続ルール設定 > セッション2(i-revo用)に、下記をセットすることでアクセスできるようになった:

                                                接続先選択:セッション2(i-revo)
                                                宛先ドメイン名:(空欄)
                                                宛先IPアドレス:*
                                                送信元IPアドレス:*
                                                プロトコル:*

                                                つまり、管理画面の説明にもあるように、「条件」(「接続ルール設定」 を指すようだ)で任意のIPからのアクセスに対してセッション2(i-revo)を 優先するようにしたわけだ。

                                                なお、宛先IPアドレスを 192.168.1.200(LAN内サーバIPアドレス)や 124.41.84.125(i-revoで取得した固定IP)にするとアクセスできない(why?)。

                                                [-] 3.7.3.1. 旧情報

                                                (試行錯誤中のメモ。今となっては不要。)

                                                外部から wget http://wellstech.jp すると、ルータ管理画面の 情報 > セキュリティログ に、以下のように破棄されている:

                                                2012/07/04 00:13:12   124.255.167.***/36390   192.168.1.200/80    TCP 廃棄[SPI]

                                                124.255.167.*** は送信元のIP

                                                [-] 3.8. メール

                                                1. "sudo apt-get install postfix"
                                                  • "インターネットサイト" を選択
                                                  • システムメール名:: wellstech.jp

                                                [-] 3.8.1. 送信

                                                mailutils をインストール。mysql-common に依存しているのが気に入らない。

                                                [-] 3.9. UPS

                                                ノートPCで無停電サーバ運用、というのは甘いことが分かった ( http://mzex.wordpress.com/2008/05/16/%E3%83%8E%E3%83%BC%E3%83%88pc%E3%82%92%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AB%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%82%88%E3%81%8F%E3%81%AA%E3%81%84%E7%90%86%E7%94%B1/ ) やや辛口^_^;

                                                とは言え、UPS(というか鉛バッテリ)のメリットが分かったので、 ノート + 予備のリチウムバッテリ、という案はやめて UPS を導入することにしたのだった。

                                                ざっと調べて、以下にしてみた:

                                                [-] 3.9.0.1. SimpleShutdownSoftware v2.20 Linux版のインストール

                                                Ubuntu用バイナリパッケージは提供されてないようだが、 ソースが提供されているため、再コンパイルすれば良い、と思っていたが これが甘かった。まず、コンパイルが通らない。

                                                逆に、バイナリがそのままインストールできるのでそちらを使用する:

                                                $ umask 002
                                                $ cd Release
                                                $ sudo bash ./install.sh
                                                  :
                                                (ライセンス条項が表示)
                                                  :
                                                Do you agree this license? [ y/n ] y
                                                $ sudo /usr/lib/ssd/master/config.sh
                                                [-] 3.9.0.2. 設定
                                                1. 通信ポートの指定:: Auto
                                                  • default のまま
                                                2. USB通信モードの選択:: Libusb
                                                  • default のまま
                                                3. 待機時間:: 60[sec]
                                                  • default のまま
                                                4. 外部コマンドライン:: /opt/nike/sbin/ups_shutdown.sh
                                                  • これは、管理者に通知メールを出し、シャットダウンするスクリプト。例:
                                                    #!/bin/sh
                                                    mail -s 'HOSTNAME UPS down' MY@MAIL.ADDRESS <<EOM
                                                    HOSTNAME UPS down now...
                                                    EOM
                                                    sleep 5
                                                    /sbin/shutdown -h 0
                                                    (HOSTNAME, MY@MAIL.ADDRESS は適宜変える)
                                                  • 外部コマンドで shutdown している理由: Omron提供の SimpleShutdown は、最後に /sbin/halt を呼んでいるが、 これだと poweroff とならず電源ランプが点いたままで、あまりうれしくない。 そこで、この段階で shutdown させている。
                                                5. 外部コマンド実行時間:: 60[sec]
                                                  • default の 0 だとすぐに halt に移ってしまうため、1分の余裕を持たせている。
                                                6. シャットダウンに必要な時間:: 60[sec]
                                                  • default は 180[sec]
                                                  • この時間を過ぎて UPS が停止するようだ。
                                                  • あまり長いのも何なのと、Ubuntu サーバの shutdown は今のところ割と早い (10秒以下)ので、60秒としている。60秒刻みなのでこれ以下は指定できない^^;
                                                7. メッセージの表示:: Disable
                                                  • default のまま
                                                8. システム終了モードの選択:: 1(Shutdown)
                                                  • default のまま

                                                設定後、自動的にエージェントは起動しているようだ。 コマンドでのエージェントの起動/停止は以下:

                                                $ sudo /usr/lib/ssd/master/AgentManager
                                                [-] 3.9.0.3. 動作テスト
                                                1. 瞬断
                                                  1. UPSのACプラグを抜き、また挿す(瞬断を模倣)
                                                  2. UPSは瞬断を検知し警告音が鳴る。
                                                  3. サーバは何事もなかったように稼働を続ける。
                                                  4. /var/log/syslog には以下のようなログが:
                                                    Jul  6 07:33:40 wtech SimpleShutdown[1606]: AC line failure!
                                                    Jul  6 07:33:45 wtech SimpleShutdown[1606]: AC line failure recover.
                                                  5. 時系列:
                                                    Server: ---------------->
                                                    UPS:    -- (瞬断) ------>
                                                    
                                                      _n
                                                     ( l    _、_
                                                      \ \ ( <_,` )
                                                       ヽ___ ̄ ̄  )   グッジョブ!!
                                                         /    /
                                                2. 停電
                                                  1. UPSのACプラグを抜く(停電を模倣)
                                                  2. UPSは停電を検知し警告音が鳴り続ける。
                                                  3. 待機時間(前述)後に ups_shutdown.sh(前述)動作。 メール通知され、シャットダウン。
                                                  4. 注意!
                                                    • この後ですぐ UPS の電源を入れても、UPS停止プロセスは電源を 抜いた時からまだ続いているようで、「設定」節の「6. シャットダウンに必要な時間」 で設定した時間の後に一旦自動で UPS自体が停止される。
                                                    • なので、サーバが無事シャットダウンされたからと言ってこの段階で サーバと UPS の電源を入れると、UPS停止でサーバまで電源断されるので要注意。
                                                    • なお、UPS は停止後、その後自動的に インジケータ [--] → [FU] → [On] を経て UPS 稼動状態にはなる。
                                                    • 時系列:
                                                      Server: -----(shutdown)->  -ON-----------------------> サーバ停止
                                                                         ↑                                     ↑
                                                      UPS:    -->(停電)-->       -ON-----------------------> UPS停止
                                                                          <---- シャットダウンに必要な時間 ---->
                                                    • 要は、Server, UPS 共に、UPS停止後に ON する、ということ。
                                                [-] 3.9.0.4. Files
                                                /usr/lib/ssd/master/AgentManager:コマンドラインでの daemon の管理
                                                /usr/lib/ssd/master/Shutdown.cfg:設定情報の格納場所
                                                [-] 3.9.0.5. TODO

                                                http://bibo-log.blog.so-net.ne.jp/2012-03-13 によると、 Ubuntu でも Network UPS Tools を使うことで監視などできるようだ。

                                                [-] 3.9.0.6. 旧情報

                                                (この節、試行錯誤中の旧い情報)

                                                取説とソースは、検索すればオムロンのサイトがヒットする: http://www.omron.co.jp/ese/ups/download/sss/sss.htm

                                                2012/07/04 時点では v2.20 Linux版をソースからコンパイルして入れる。

                                                ソースからコンパイルしようとしたが、以下のエラーが:

                                                /usr/bin/ld: cannot find -lusb

                                                どうやら、usb 通信部分のようだが、ソースには含まれてないようで…。

                                                いや、

                                                $ sudo apt-get install libusb-dev

                                                …でコンパイル通ったが、だめ。 コンパイルしたものを入れても以下となるだけ:

                                                $ tail -f /var/log/kern.log
                                                Jul  5 00:04:15 wtech kernel: [ 7731.320390] ssdDaemon[3086]: segfault at
                                                28aa010 ip 028aa010 sp bfb0268c error 14 in ssdDaemon[8048000+9000]

                                                [-] 3.10. TODO






                                                Generated by juli 2.0.4