Git を使えるようになるまで頑張る その 0

今日がその 0 で月曜日なので,その 6 (日曜日) まで続く予定です.予定です.

まずは How to (コマンドの実例を色々) を書き出していけるようになる前に,ある程度の前提知識は持っておかないとダメでしょう.ということで,最初から飛ばしても先が続かない (つーか今日なんかもう面倒臭い) ので,今日は参考サイトや書籍の紹介です.

Git のいろは
Pro Git

後,今後参考にする How to 的なブツは以下の通り.

15分でわかるgithub
Git Cheatsheet

とりあえず初日は GitHub のアカウントでも作ってみてはどうでしょうか?

GitHub は無料で公開リポジトリなら作れます (いくつ作れるかはよく分かりません).

非公開リポジトリは,有料プランでなければ使えないようです.アカウント作って,New Repository ボタンから作ろうとしてみると

Upgrade your plan to create more private repositories!

と言われます. 参考

DTI VPS Entry において Ubuntu を利用する際にやっておくこと

DTI の Serversman の VPS Entry において Ubuntu を使うと,何故か root ユーザが利用可能になっています.これでは Ubuntu らしくないので,ちゃんと自分でディスクからインストールしたときのように,一般ユーザで sudo を活用してサーバを利用出来るようにしましょう.

順番が大切です.特に root ユーザを利用不能にするなどは,最後にやらないと詰みますよ多分.

まずは root でログインします.

  • 一般ユーザの作成
% groupadd ka
% useradd ka -g ka -d /home/ka -s /bin/bash
% cp -r /etc/skel /home/ka
% chown -R ka:ka /home/ka
% passwd ka
> (input ka's password)

ユーザ名 ka は,適宜自分の作りたいユーザ名に読み替えて下さい.グループ名も好きに作って下さい.

  • 一般ユーザに sudo を実行する権限を与える
% adduser ka sudo

ちなみにここで,/etc/hosts に 127.0.1.1 <自分のホスト名> という行を書いておかないと sudo 時に

sudo: unable to resolve host ubuntu-10

とエラー (警告か?) が出ました.ということで /etc/hosts に

127.0.1.1 ubuntu-10

追記しておきます.これでエラー文が出なくなります.

  • root での SSH 接続禁止
% vi /etc/ssh/sshd_config

ここで

PermitRootLogin yes

という行の,yes を no に書き換える.その後 sshd (SSH 接続を受け付けるデーモン) を再起動.

% /etc/init.d/ssh restart

あとは公開鍵認証のみに切り替えるとか色々あるだろうけど,とりあえず Ubuntu のデフォルトの状態 (root ユーザが使えなくて一番最初に作ったユーザで sudo で何でもやる状態) に持っていけたはず.

後は各人が頑張ってくれたまへ.

参考サイト

ServersMan@VPS 開通後にやっておくこと Ubuntu編

.htaccess に Options +ExecCGI で 500 になったとき

とある CGI を設置しようとしたら何故か意味不明の 500 エラー.

もしかしたらその原因は今から紹介するものかも知れません.

実験環境 : さくら VPS 512,Ubuntu 10.04 amd64,Apache2

拾い物の CGI の内容物にご丁寧に用意された .htaccess ファイル.その中に,CGI プログラムを動かせるように Options +ExecCGI という記述がされていた.しかしどうやらこれが原因で 500 が返って来るらしい (ここをコメントアウトすると大丈夫).

/var/log/apache2/error.log を確認すると

(前略).htaccess: Options not allowed here

とのこと.

これでググってみると次のメーリングリストのログが見つかった.

Apache-Users 2373 .htaccessのオーバーライドでnot allowed here
Apache-Users 2374 Re: .htaccessのオーバーライドでnot allowed here

で,思い立って /etc/apache2/mod-enables/userdir.conf を見てみる.

ちなみに,userdir モジュールを有効にしていて,今その CGI はそこに設置しようとしている前提です.

手前味噌ですが,userdir モジュールの使い方説明 (本文で主に説明してるのは別のことですが…) はこちら

<IfModule mod_userdir.c>
        ...
        <Directory /home/*/public_html>
                AllowOverride FileInfo AuthConfig Limit Indexes
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                ...
        </Directory>
</IfModule>

AllowOverride に Options が無いですね.ということで,Options の設定を上書きしようとしてエラーになるわけです.

(前略)
                AllowOverride FileInfo AuthConfig Limit Indexes Options
(後略)

というように Options の上書きを許可してやると,晴れてエラーが出なくなりました.

Emacs Lisp 起動時にウィンドウ分割して eshell 起動

小人閑居して: Emacsの設定 ~eshellを起動時から便利に使うために~

を参考に.私個人が利用しているコードを以下に示します.

(add-hook 'after-init-hook (lambda()
    (setq w (selected-window))
    (setq w2 (split-window w (- (window-height w) 4)))
    (select-window w2)
    (eshell)
    (select-window w)))

これで「ウィンドウを上下に分割」し,「下ウィンドウを 4 行に」し,「下ウィンドウで eshell 起動」し,「上ウィンドウにカーソルを戻す」が起動時に実行されるようになります.

追記 [2011-06-15T20:45:00+09:00]

改造のための参考ページ
GNU Emacs Lispリファレンスマニュアル: ウィンドウ

Mechanize 1.0.0 でログインが必要なサイトの情報を取得

色々調べて回ってたんだけど Mechanize の解説が古いバージョンのばっかりで参考になるようなならないような状況なので,適当にまとめる.

実験環境は Ubuntu 11.04,Ruby 1.9.2,gem 1.6.2 です.RVM 使ってます.

まず Mechanize が無いと始まらないということで

% gem install mechanize

これがいきなりエラー.勘弁して下さい.で調べてみて以下の通り実行.
参考 : Ruby/Mechanizeをインストールするときにはまった - taoru's memo

% sudo apt-get install libxslt-dev libxml2-dev

まだ gem install してもエラー.今度は openssl が無いとか何とか.でこれが apt-get で解決しない.で調べてみて以下の通り実行.
参考 : CentOSでWWW::Mechanizeを使う - ElecNotes

% cd ~/.rvm/src/ruby-1.9.2-p180/ext/openssl # ここは環境ごとに移動する場所が違うはず!頑張って探そう!
% ruby extconf.rb
% make
% make install

そしたら晴れて gem install が通りました.mechanize (1.0.0) と nokogiri (1.4.4) がインストールされたようです.

あとはとにかく動くサンプル (最低限改変) を載せておきます.

# -*- coding: utf-8 -*-

require("mechanize")

agent = Mechanize.new
page = agent.get("LOGIN_FORM_URI") # ログインフォームのある URI
form = page.form("FORM_NAME") # ログイン情報 (ユーザ名とかパスワード) を入力させるフォームの名前
                              # <form name="****"> の部分を入力.
form.field_with(:name => "NAME1").value = "USERNAME" # ユーザ名
form.field_with(:name => "NAME2").value = "PASSWORD" # パスワード (簡単のため平文で)
                                                     # NAME1 等には <input name="****"> の部分を入力.
form.click_button()
# form.submit() かもしれない.何かここは色々複雑.

page = agent.get("URI") # ログインした状態で無ければ見えないページの URI
puts page.title
puts page.body
# これでタイトルが見れたり HTML 丸ごとが見えたりします.

form.click_button() を使うと何やら色々と幸せなようです.詳しいことは分かりません.もしかしたら submit がいいのかも知れません.どういうメソッドがあるのかを知りたければ,もしかしたらココとか見ると少しは幸せかもしれません.

Mechanize の解説サイトは大量にあるのですが,如何せん古いのが…

誰か「ここ見とけば全部解決するよ!」なサイト知りませんか?

WordPress の自動更新を SFTP で行う (on Ubuntu Server 10.04)

Ubuntu Server 10.04 で,Apache2 と PHP5 と MySQL5 がインストールされていて WordPress が使えるようになっている環境を例にして説明します.試した動作環境はさくら VPS です.

WordPress にはアップデートを自動でやってくれる機能があるのですが,これがデフォルトでは FTP を使おうとします.これを SFTP を使用するように変更するための設定メモです.*1

(余談) 書いてる私自身は WordPress では無くはてなダイアリー派なのですがw,友人の WordPress を管理しているのでこういう記事も書くわけですw 元となる記事はコチラです.丸コピですが書いてるの同一人物ですのでw

基本的にコチラ WordPress SFTP « Candied Brains! を参考に.

まず以下を実行.

% sudo aptitude install libssh2-1-dev php-pear

その後指示通りに以下を実行します.

% sudo pecl install -f ssh2

すると,phpize が無いよーと言ってエラーが出ます.

WARNING: failed to download pecl.php.net/ssh2 within preferred state "stable", will instead download version 0.11.2, stability "beta"
downloading ssh2-0.11.2.tgz ...
Starting to download ssh2-0.11.2.tgz (22,740 bytes)
........done: 22,740 bytes
5 source files, building
running: phpize
sh: phpize: not found
ERROR: `phpize' failed

で "ubuntu phpize" でググったら UbuntuでPDOを使うときには、php5-devパッケージが必要。 - SumiTomohikoの日記

しかし、上の通り、phpizeがないというエラーになります。さて、phpizeというファイルはどのパッケージに含まれるのでしょうか? 不勉強なもので私はその方法を知りません。なのでGoogleに問い合わせたところ、php5-devをインストールする、という情報を得ることができました。

とのことなので,以下を実行.

% sudo aptitude install php5-dev

そしてその後もう一度 pecl コマンドを実行します.

% sudo pecl install -f ssh2

今度は上手く進みます.途中で

libssh2 prefix? [autodetect] :

と聞かれますがそのまま Enter (autodetect) で OK.後は指示通り

/etc/php5/apache2/php.ini

を編集します.“Dynamic Extensions” セクションを探してそこの最後にでも

extension=ssh2.so

を追加して,後は Apache 再起動.

% sudo service apache2 restart

これで WordPress の自動更新機能のページに "FTP", "FTP (SSL)" という選択肢の他に "SSH2" が追加されているはずなので,それを選択してパスワード,もしくは公開鍵と秘密鍵 (設定しているならば) を入力すれば OK.

*1:Ubuntu Server 10.04 とこれ以降 (11.04 までを確認) では FTP はデフォルトで使えないようになっています (もしかしたらこれより前のものでもそうなのかも知れませんが).というのも FTP は危険だからでしょう.通信を暗号化をしないので.詳しくは FTPの危険性とSFTP/FTPSのススメ などを参照下さい.

Ubuntu Server 11.04 で desktop 環境を用意した際の注意

10.04, 10.10 のときもあったのですが,何故かショートカットキーで「ウィンドウを全部最小化してフォーカスをデスクトップに」という機能に "D" が単体でデフォルトで割り当てられています.なので,Terminal 開いて cd コマンドでも打とうものならデスクトップが表示されて「え!?」となること請け合いです.わけがわからないよ.

参考画像 : http://twitpic.com/4cgbm7

で,この設定を変えるには,System > Preferences > Keyboard Shortcuts から "Hide all normal windows and set focus to the desktop" という項目を探して,そこを Disable に変更します.その後,多分再度ログインしなければなりません.VNC なら,一度 Server を止めて,再起動.よく分かりませんが…

自分同様に困る人が検索でここに流れ付けるように,以下色々書いておきます.

Ubuntu, 10.04, 10.10, 11.04, vnc, ubuntu-desktop, D, d, D キー, d キー, 別機能, ショートカットキー, キーバインド, キーボード, デスクトップ, 表示される, ウィンドウ, 最小化される, 全ウィンドウが最小化

自分も以前にかなりこれで時間を費やしたので…