アーカイブ 作成者



2012 4月5日

ようやくgitを少しずつ使い出してみたもののデプロイするにはどうすればいいのか分からなかったのでとりあえず作業内容をメモしておく。

ローカル環境とリモート環境の準備

公開鍵方式でSSHにログイン出来るようにする

ローカル:mac OSX 10.6
リモートサーバ:CentOS 5.5

ローカル環境での操作

ターミナルでログインし、ホームディレクトリで秘密鍵と公開鍵のペアを作成する。RSA方式でよいと思われる。

Selec All Code:
MacBook:~ clicktx$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/clicktx/.ssh/id_rsa): [enter]
Enter passphrase (empty for no passphrase): [enter]
Enter same passphrase again: [enter]
Your identification has been saved in /Users/clicktx/.ssh/id_rsa.
Your public key has been saved in /Users/clicktx/.ssh/id_rsa.pub.
The key fingerprint is:
01:0a:3b:c1:1c:7f:2e:1c:5d:ae:1b:16:59:70:ef:fd clicktx@MacBook.local
The key's randomart image is:
+--[ RSA 2048]----+
| o+.  o.+        |
|  o= o B .       |
|  o + = o .      |
|   o + o o .     |
|    o = S . .    |
|     o o     .   |
|      .       E  |
|                 |
|                 |
+-----------------+

id_rsa … 秘密鍵
id_rsa.pub … 公開鍵

秘密鍵と公開鍵のペアがホームディレクトリの.ssh/以下に作成される。

公開鍵である id_rsa.pub をリモートサーバのホームディレクトリに転送する。
個人的にリモートサーバのSSHはポート番号を変更しているため以下のような[-P ポート番号]オプションをつけている。

Selec All Code:
MacBook:~ clicktx$ cd ~/.ssh
MacBook:.ssh clicktx$ scp -P ポート番号 id_rsa.pub clicktx@domain.com:~/
clicktx@domain.com's password: 
id_rsa.pub                                    100%  405     0.4KB/s   00:00

リモートサーバでの操作

ホームディレクトリに.sshディレクトリが無ければ作成する。

Selec All Code:
$ mkdir ~/ .ssh
$ chmod 700 .ssh/ (自分だけ読み書き出来る)

id_rsa.pubの内容を.ssh/authorized_keysに追加する

Selec All Code:
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
$ cd .ssh/
$ chmod 600 authorized_keys (自分だけ読み書き出来る)
$ rm ~/id_rsa.pub (不要になったid_rsa.pubを削除しておく)

新しいターミナルからログインしてみる。

Selec All Code:
MacBook:~ clicktx$ ssh -p ポート番号 clicktx@domain.com
Last login: Thu Nov 24 10:12:16 2011 from xxxxxx.xxx.xxx.xx.jp

公開鍵作成時にパスフレーズは設定していないので、何も聞かれずにログイン出来れば成功。

リモートサーバにgitをインストール

CentOSのデフォルトリポジトリではgitが提供されていない。
rpmforgeリポジトリを導入していればyumで一発でインストールできる。

Selec All Code:
$ sudo yum install git

gitの環境設定

ユーザー名とメールアドレスを設定。

Selec All Code:
$ git config --global user.name "clicktx"
$ git config --global user.email clicktx@domain.com

git pushした時にデプロイされるようにする

ローカルで開発した内容をデプロイする時にgit pushで済むようにする。

仕組み的には

bareリポジトリにpush
↓
デプロイ先のリポジトリがbareリポジトリからpull
↓
ワークツリーに反映される

こんな感じみたい。なるほど。

作業自体はこんな感じ

リモートでの作業
・リモートサーバにbareリポジトリを作る(push先)
・フックを仕掛ける
・デプロイ先(公開ディレクトリ)にgitリポジトリを作る

ローカルでの作業
・リモートリポジトリの登録
リモートでの作業

リモートサーバにbareリポジトリを作る

Selec All Code:
$ mkdir ~/repos
$ cd ~/repos
$ mkdir mysite.git
$ cd mysite.git
$ git init --bare

フックを仕掛ける
post-receive.sampleのシェルスクリプトをコピーしてpost-receiveを作成する。実行権を与える。

Selec All Code:
$ cd ~/repos/mysite.git
$ cp hooks/post-receive.sample hooks/post-receive
$ vi hooks/post-receive
 
(cd /home/clicktx/www/mysite; git --git-dir=.git pull)  # 最終行に追記する
 
$ chmod +x ~/repos/mysite.git/hooks/post-receive

デプロイ先(公開ディレクトリ)にgitリポジトリを作る
ここでは ~/www/mysite

Selec All Code:
$ mkdir ~/www
$ mkdir ~/www/mysite
$ cd ~/www/mysite
$ git init
ローカルでの作業

すでにgitリポジトリがあるものとする。

リモートリポジトリの登録

Selec All Code:
$ cd ~/Work/mysite
$ git remote add origin ssh://clicktx@domain.com:ポート番号/~/repos/mysite.git

pushしてみる。2回目からはgit pushのみで行える。

Selec All Code:
$ git push origin master
 
...色々変更
git commit -a
git push

これでおれおれバージョン管理システムとはお別れ…かな?

参考:

  • gitのリモートリポジトリ作成メモ|Spark-Lab Engineer’s Blog
  • Pro Git – Pro Git 4.4 Git サーバー サーバーのセットアップ
  • git pushでdeployな生活をつくる方法 – コードで気楽な日々を
  • git push + さくらのレンタルサーバーで github pages ライクにデプロイする方法 – punitan (a.k.a. punytan) のメモ






  • 2012 4月4日

    Bundle::CPAN をインストールすれば良いらしいけど、makeが必要だったりするので注意。
    makeを使うにはXcodeをインストールする必要があります。

    makeへのシンボリックリンク作成

    Selec All Code:
    sudo ln -s /Developer/usr/bin/make /usr/bin/make

    Bundle::CPAN をインストール

    Selec All Code:
    cpan
    cpan[1]>install Bundle::CPAN

    ※cpanのところは sudo cpan だったかも。

    cpan起動して上カーソルの時に ^[[A とかでなければがインストール成功。
    これでカーソル移動とか履歴とか使える!







    2012 3月6日

    今回は初LTさせて頂いたGunma.web #8 のレポ。
    いつもレポート書こうとして旬を逃すのでちょっと早めに書くことに。
    と、思いつつ、緊張しててメモどころではなかったり。。。

    発表一覧

    「Ribbon Spread」 @ivoryworks さん
    Canvasを使った画像処理のお話。相変わらずの着眼点の素晴らしさは感激。資料作成時の時間の使い方が変態的。キチンと仕上げてくると逆に外野からドヤされるというなんだかやっぱり変態的です。大儲けできたら生中飲ませて下さい。待ってます。

    「Web Creed」 @kanayannet さん
    バグの確率に対するツッコミが厳しかったようですが、ボクには分かります。「すべてのユーザーに影響が出るわけではない」ってバグがある事が。違うかな??ボクも保守的な考えを捨て、新しいものにチャレンジしていきたいと思います。

    「モダンでオサレなwebサイト」@clicktx
    稚拙なLTさせて頂きました。

    「offensive Gunma」@yterajima さん
    グンマーで攻めて行こうというお話。東京と群馬の環境の違い。抜けるカフェが必要、と。そういえばWifi提供しているカフェなんてうちのそばにあるのかしら?裏話とても聞きたかったです。あと、いつ寝ているのでしょうか?心配です。体に気をつけて(母より)

    「始めて良かった!iOS Developer Program!」troisvierges さん
    やっとこiPhoneにしたボクにはタイムリーな情報が得られました。早速cocoa&Objective-Cの本借りちゃいました。いや、時間なくて読めるか分からんですけど。あと、自前のiPhone(いっぱい)の写真だと気づかなくてゴメンナサイ。

    「プログラミング言語Gunma」 @parrot_studio さん
    新たな使い方も発見されるというプログラミング言語Gunmaのお話。Youma、Windstorm=空っ風とThe Gunmaerワールド満載で素敵です。しかも出来上がるコードは変態的。しかし、ボクには内容が理解出来ないという悲しさ満点なのですが、得意の分かってる風オーラで切り抜けました。バレてはいないはずです。

    「景表法とwebサービス 的な内容」 某女子さん
    プロジェクターもスクリーンも片付け、PC使わずのLTという荒業は健在。タイムリーな話題のステルスマーケティングに関する法的見解でした。普段法的な事はなかなか接しないので真剣に聞いてしまいました。あと、髪型素敵でした。似合ってます。あ、キャラ的には癒し系では無いですg(ry

    総括

    全体的に見てやっぱり変態さんが多いんだな、って印象です。
    スリリングで刺激的!
    やっぱり楽しいよ!Gunma.Web!
    刺激を受けることで新たなチャレンジに向かう気力が湧いてきます。

    補足

    他の方のレポートです。

  • http://d.hatena.ne.jp/parrot_studio/20120306/1331041813
  • http://www.ivoryworks.com/blog/2012/03/1829
  • http://blog.brightstar.jp/archives/1552






  • 2012 3月5日

    #2から参加させて頂いている Gunma.web #8 へ行って来ました。

    Gunma.web( web勉強会 in 群馬 )

    WEBサイト作成に関わる人が集まる勉強・研究・交流の地域コミュニティです。
    WEBサイト作成に関わる プログラマー、SE、HTMLコーダー、WEBデザイナー さんなどが集まります。

    参加数、発表数共に過去最高となった今回。
    なぜ今回を選んでしまったのか…。
    ひな祭りということもあり(?)、女子参加率が激増!
    ボク以外はみんな鼻の下が長かったです。ホント。

    よりによって過去最高の参加人数なので緊張もMAX。鼻下伸ばしている場合ではありません。
    前回のGunma.webでLTしようと思っていたネタでしたので、若干”旬”を逃した感が歪めませんが強行してしまいました。
    皆さん生暖かく見守ってくださったのでとても感謝。

    LTしたスライドはこんなの。発表したものよりちょっぴり枚数多いです。

    感想

  • 5分ムズイ。
  • 緊張する・手に汗かく・久しぶり
  • 前に出ると酸素薄い
  • なにせプレゼントか無縁の人間なので、とにかくチャレンジのつもりでスライドを作成しました。諸先輩方のスライドを参考に、なんとか形に出来たかな?、と。
    5分という短い時間の中でモダンな部分にもまったく触れられず、タイトルに偽りあり!でしたが、そこは大目に見て下さい。

    当日出かける間際までスライド完成してないとか、シャベルこと決まってないとか、モニター接続端子が無くて行きながら買っていくとかいろいろあったけど、すごくいい勉強になりました。
    次回LTする時は酸素ボンベ持っていったほうがいいかな。
    最近はコンビニでも売ってるしね。

    あ、スライドのネタはまんま載せてます。
    問題がある場合は報告受けたら消します。それ以外は消しませんのであしからず。







    2012 3月4日

    [Postfix] 自宅メールサーバが迷惑メールサーバと思われているので、プロバイダ経由でメール配信する設定 でプロバイダ経由で送信するのはいいけど、メーリングリストのように一度に大量の相手にメールを送るときにサーバビジーとなり、メールキューが貯まる。

    Mar 2 07:12:45 mail postfix/smtp[2760]: 23AAD323853: to=, relay=smtp.hoge.com[xxx.xxx.xxx.xx]:587, delay=4343, delays=4281/31/0.12/30, dsn=4.0.0, status=deferred (host smtp.hoge.com[xxx.xxx.xxx.xx] said: 421 Server Busy, Please Try Later (in reply to MAIL FROM command))

    時間が経てば再配送してくれるのだけれど、随分時間がかかる。
    調べてみるとPostfixのデフォルトだとお人好しな設定の様子。

    参考ブログ [Postfix] 再送設定 – abs(life) によると

    失敗から再送までのpostfixの動きは、
    送信失敗
    deferredに入れる
    queue_run_delay(1000秒)毎にdeferredをチェック
    minimal_backoff_time(1000秒)を超えるメールがあれば送信
    また失敗したらminimal_backoff_timeの倍(2000秒)の時間後に再送
    またまた失敗したらminimal_backoff_timeの倍の倍(4000秒)の時間後に再送
    maximal_backoff_time(4000秒)を超えるまでこれを繰り返し
    maximal_backoff_timeを超えてしまったら、maximal_backoff_time間隔で再送
    maximal_queue_lifetime(5日)を超えてしまったら再送をあきらめる
    bounce_queue_lifetime(5日)を超えたら送信もとにエラーメール送信

    とのことで、もうちょっと早めに再送して欲しい感じ。

    Selec All Code:
    $ sudo vi /etc/postfix/main.cf
    ### 設定ファイルの最後の方に追記
     
    minimal_backoff_time = 100s
    maximal_backoff_time = 600s
    maximal_queue_lifetime = 24h
    bounce_queue_lifetime = 24h
    queue_run_delay = 100s

    こんな設定に。

    Postfixをリロードして設定を反映。

    Selec All Code:
    $ sudo /etc/init.d/postfix reload