月: 2013年9月

  • Webコンテンツのデプロイ

    デプロイといっても,crontabでgit pullするだけになります。/etc/cron.dailyの存在を知ったので,新サーバーではそこにpullするスクリプトを置くことにしました。また,DynamicDNSの設定も,/etc/cron.dailyで実施するように変更しました。

    まず,git cloneしておきます。-lを付けるものかと思いましたが,エラーが出ましたので,-l無しでgit cloneしました。gerritが管理しているgitリポジトリは,review_site/git配下にありますので,そこからcloneします。リポジトリ名はpublic_html.gitとしています。

    $ cd /var/www
    $ sudo git clone ~gerrit2/review_site/git/public_html.git

    次に,git pullするスクリプトを/etc/cron.dailyに作成します。

    $ sudo vi /etc/cron.daily/pull.sh 
    
    #!/bin/sh
    cd /var/www/public_html
    git pull
    
    $ sudo chmod +x /etc/cron.daily/pull.sh

    これで,1日に1度gitリポジトリからpullされます。

    ソースコードではないので,レビューは不要かと思います。クライアントPCからは,

    $ git push origin

    で,gerritレビューを回避して,直接リポジトリにpushします。(gerrit側パーミッションの設定が必要かもしれません)。あるいは,通常どおりgerrit上でレビューすることもできます。

    $ git push origin master:refs/for/master

    /etc/crontabの内容(dailyの部分)は,

    25 6* * *(略)

    となっているので,午前6時25分に更新がかかるものと思われます。

    /etc/apache2/sites-available/my_siteのDocumentRootとDirectoryの設定を,/var/www/public_htmlに変更しました。apache2をリスタートして,

    public_html

    とブラウザで確認OKです。

  • Gerritのリバースプロキシ動作

    review.chitora.comでアクセスすると,Gerritコードレビューにつながるようにします。

    まず,apacheのproxy_httpモジュールを有効にします。

    $ sudo a2enmod proxy_http

    my_siteにreview.chitora.comを追加します。

    $ sudo vi /etc/apache2/sites-available/my_site
    (追加部分のみ)
    <VirtualHost *:80>
            ServerName review.chitora.com
    
            ProxyRequests Off
            ProxyVia Off
            ProxyPreserveHost On
    
            <Proxy *>
                    Order deny,allow
                    Allow from all
            </Proxy>
    
            AllowEncodedSlashes On
            ProxyPass / http://127.0.0.1:8081/ nocanon
    </VirtualHost>

    apacheを再起動します。

    $ sudo /etc/init.d/apache2 restart

    Windows PCからブラウザで開いてOKです。「review.chitora.com/」と末尾にスラッシュが必要ですが,まあいいでしょう。

    gerrit2

    gerrit.confのhttpdセクションは以下のようになっていて,少しドキュメントと異なります。

    [httpd]
            listenUrl = proxy-http://127.0.0.1:8081/
    
  • Gerritの自動起動

    サーバーをリセットする度に手動でGerritを起動するのは面倒ですので,自動で起動するようにします。

    まず,/etc/init.d/に起動スクリプトを作成します。ドキュメントのようにシンボリックリンクを作成しても,自分の環境ではうまくいきませんでした。

    $ sudo vi /etc/init.d/gerrit
    
    #!/bin/sh
    su gerrit2 -c "~/review_site/bin/gerrit.sh $1"
    
    $ sudo chmod +x /etc/init.d/gerrit

    runlevelが2でしたので,rc2.dにシンボリックリンクを作成しました。

    $ cd /etc/rc2.d
    $ ln -snf ../init.d/gerrit S90gerrit

    再起動して,

    $ sudo shutdown -r now

    クライアントPCから接続確認して,OKです。

    $ ssh -p 29418 chitora@192.168.1.7 gerrit ls-projects
    7-Zip
    Bzip2
    ...
  • Gerritの移行

    WebコンテンツもGerrit配下のgitリポジトリで管理していることから,Gerritを先に移行することにしました。H2データベースを使用していることから,以下の手順ではデータベースの移行が不要となっています。MySQL / PostgreSQL では,データベースの移行が必要と思われます。

    まず,gerrit2ユーザーを追加します。

    $ sudo adduser gerrit2
    $ sudo su gerrit2
    $ cd ~

    gerrit-2.7.warを取得します。

    $ wget http://gerrit-releases.storage.googleapis.com/gerrit-2.7.war

    旧サーバーで圧縮してコピーしたreview_siteフォルダを展開します。scpを使ったことがないので,WinSCP経由でのコピーをしました(笑)。

    $ tar zxvf review_site.tar.gz

    jreをインストールします。openjdk-7でOKでした。headlessの意味はよく分かりませんが,Ubuntuにサジェストされたものを使いました。

    $ sudo apt-get install openjdk-7-jre-headless

    gerritをインストールします。対話的に設定を聞かれますが,旧設定がデフォルトになっているので,そのままEnterキーを押していきます。 Java runtime だけ /usr/lib/jvm/java-7-openjdk-amd64 に変更する必要がありました。旧サーバーの設定はopenjdk-6でした。

    $ java -jar gerrit-2.7.war init -d review_site

    gerritはポート29418を使用するので,開けます。合言葉は,「にくよいな+1」(C)みやびさん,です。

    $ sudo ufw allow 29418/tcp

    gerritを開始します。

    $ cd review_site
    $ ./bin/gerrit.sh start
    Starting Gerrit Code Review: OK

    既にgerritに公開鍵を登録してあるクライアント(Windows PC)から接続を確認します。git bashで,

    $ ssh -p 29418 chitora@192.168.1.7 gerrit ls-projects

    known hostsへの追加の後,プロジェクトのリストが表示されて接続確認OKでした。

    リバースプロキシのapache側の設定は後日にします。

     

  • apacheの設定

    apacheはUbuntu Serverのインストール時に既に入ったようでしたので,設定だけ行いました。

    $ cd /etc/apache2/sites-available
    $ sudo cp default my_site
    
    $ sudo vi my_site
    
    <VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName chitora.com
    
    DocumentRoot /var/www
    <Directory />
    Options FollowSymLinks
    AllowOverride None
    </Directory>
    <Directory /var/www/>
    Options -Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
    </Directory>
    
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options -Indexes +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
    </Directory>
    
    ErrorLog ${APACHE_LOG_DIR}/error.log
    
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    
    $ sudo a2dissite default
    $ sudo a2ensite my_site
    

    変更点は,ServerNameの設定と,-Indexesの追加です。-Indexesで,ディレクトリ内容が表示されないようにします。

    apacheを再起動します。

    $ sudo /etc/init.d/apache2 restart

    ブラウザから開けない! と思ったら,ufwの設定を忘れていました。

    $ sudo ufw allow http

    無事にブラウザから開くことができました。

    apache

  • gitのインストール

    以前のUbuntuではgit-coreをインストールする必要があったようですが,現在(13.04)ではgitでOKでした。

    $ sudo apt-get install git
    $ git --version
    git version 1.8.1.2
  • YOKOSUKA軍港めぐり

    From

    YOKOSUKA軍港めぐりに行ってきました。「西太平洋潜水艦救難訓練」が21~28日実施中とのことで,めずらしい艦が見られてよかったです。

    オーストラリア海軍のコリンズ級潜水艦「SSG 75 HMAS Waller」です。全長77.42m,水中排水量3,353トンです。オーストラリアの軍艦は,2012観艦式のシドニーを見て以来です。

    From

    韓国の清海鎮級潜水艦救難艦「ASR-21 清海鎮(チョンヘジン)」です。全長102.8m,排水量4,300トンです。韓国の軍艦は初めて見ました。

    From

    最愛の「ひゅうがたん」こと,ひゅうが型ヘリコプター搭載護衛艦「DDH-181 ひゅうが」です。全長197m,基準排水量13,950トンです。

    From

    あぶくま型護衛艦「DE-231 おおよど」です。全長109m,基準排水量2,000トンです。大湊に所属の艦なので,横須賀で見られるのは珍しいとのことでした。うらが型掃海母艦「MST-463 うらが」に横付けされています。

    From

    機雷掃海ヘリコプター「MH-53E シードラゴン」です。

    From

    あすか型試験艦「ASE-6102 あすか」(全長151m,基準排水量4,250トン)と,はつゆき型護衛艦「DD-125 さわゆき」(全長130m,基準排水量2,950トン)です。

    From

    潜水艦救難艦「ASR-403 ちはや」(全長127.5m,基準排水量5,540トン)です。

    From

    軍港めぐりの後は,一福TSUNAMI空母信濃亀松で「ホッピーしばり」で飲んできました。

     

  • ntpサーバー

    $ sudo apt-get install ntp
    $ sudo vi /etc/ntp.conf
    
    # more information.
    server ntp.nict.jp
    server ntp.nict.jp
    server ntp.nict.jp
    
    $ sudo /etc/init.d/ntp restart
    
    しばらくして,
    
    $ sudo ntpq -p
         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
    *ntp-b3.nict.go. .NICT.           1 u  119  256  377   41.039   -5.353  10.750
    +ntp-a2.nict.go. .NICT.           1 u  135  256  337   44.075   -0.237  15.912
    +europium.canoni 193.79.237.14    2 u   20  256  377  285.417   -8.406  18.196
  • ダイナミックDNSの設定

    chitora.comのドメイン名は,バリュードメインのサービスで取得しています。回線がフレッツ 光ネクストで,固定IPアドレスではありません。このため,ダイナミックDNSの設定で,一定間隔でIPアドレスをバリュードメインに知らせる必要があります。今回は,この設定を行います。

    $ crontab -e
    no crontab for tadahiko - using an empty one
    
    Select an editor.  To change later, run 'select-editor'.
      1. /bin/ed
      2. /bin/nano        <---- easiest
      3. /usr/bin/vim.basic
      4. /usr/bin/vim.tiny
    
    Choose 1-4 [2]: 3

    初回なのでエディタの選択が出ました。vim.basicを選びました。

    # m h  dom mon dow   command
    0 0 * * * wget -O - 'http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=chitora.com&p=XXXXXXX&h=*' > /dev/null 2>&1

    毎日0時0分に,wgetでダイナミックDNS設定CGIにリクエストを送ります。

    wget~以降を実行して正常動作しましたので,旧サーバーのcrontabから削除しておわりです。

     

  • Ubuntu Server 13.04へのアップグレード

    12.10からのアップグレードですが,SSH経由のまま,

    $ sudo do-release-upgrade

    でおしまい。途中,「サービスをリスタートする?」にYESで問題なかった。不要なパッケージもどんどん削除。といっても,現時点ではインストールしたままで特にサービスを追加してないのだけど。