2012/04/30

ひさびさにC#

あすから一ヶ月間 C# のお仕事なので、手元の Thinkpad X200 を Ubuntu から Windows7 に設定した。
HDD 入れ替えだけだけど。

とりあえず Visual Studio 2010 C# Express だけ入れておいた。
評価版のほうがよかったかな?

2012/04/29

さくら VPS の Ubuntu Server 10.04 に Redmine を導入

サーバの準備も整ったので、いよいよ使えるようにして行きましょう。
なにはさておき Redmine は入れておきたい!!
なので今回は Redmine の導入です。
いろいろダルかった。

Redmine の取得

Redmine をダウンロードして、配置します。
バージョンは最新の 1.4.1。Ruby 1.9 に対応してくれて本当によかった。
$ wget http://rubyforge.org/frs/download.php/76033/redmine-1.4.1.tar.gz
$ tar xvf redmine-1.4.1.tar.gz 
$ mkdir /var/lib/rails
$ mv redmine-1.4.1 /var/lib/rails/redmine

依存 gem のインストール

ここがダルかった。rmagick とか、rmagick とか、rmagick とか
$ cd /var/lib/rails/redmine
$ bundle install --path vendor/bundle --without development test mysql sqlite
  〜〜 省略 〜〜
Installing rmagick (2.13.1) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /usr/local/ruby/bin/ruby extconf.rb 
checking for Ruby version >= 1.8.5... yes
extconf.rb:128: Use RbConfig instead of obsolete and deprecated Config.
checking for gcc... yes
checking for Magick-config... no
Can't install RMagick 2.13.1. Can't find Magick-config in /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  〜〜 省略 〜〜

# 失敗したので、libmagick-dev をインストールして ruby を再コンパイル
$ aptitude install libmagick-dev
$ cd ~/work/ruby-1.9.3-p194
$ ./configure --prefixe=/usr/local/ruby
$ make
$ make install

# 再トライ
$ bundle install --path vendor/bundle --without development test mysql sqlite
  〜〜 省略 〜〜
Installing rmagick (2.13.1) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /usr/local/ruby/bin/ruby extconf.rb 
checking for Ruby version >= 1.8.5... yes
extconf.rb:128: Use RbConfig instead of obsolete and deprecated Config.
checking for gcc... yes
checking for Magick-config... no
Can't install RMagick 2.13.1. Can't find Magick-config in /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  〜〜 省略 〜〜
checking for Magick-config... yes
checking for ImageMagick version >= 6.4.9... no
Can't install RMagick 2.13.1. You must have ImageMagick 6.4.9 or later.
  〜〜 省略 〜〜

# インストール済みの ImageMagic のバージョンが古いとのこと
# 仕方ないので最新をソースからインストールする
$ cd ~/work
$ wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.7.6-7.tar.gz
$ tar xvf ImageMagick-6.7.6-7.tar.gz
$ cd ImageMagick-6.7.6-7
$ ./configure --enable-lzw=yes
$ make
$ make install
# 確認
$ convert --version
Version: ImageMagick 6.7.6-7 2012-04-29 Q16 http://www.imagemagick.org

# 今度こそ
$ bundle install --path vendor/bundle --without development test mysql sqlite
  〜〜 省略 〜〜
Installing rmagick (2.13.1) with native extensions
  〜〜 省略 〜〜
Your bundle is complete! It was installed into ./vendor/bundle
結局は、ソースから ImageMagick をインストールする必要があるということですね。

データベースの設定(PostgreSQL 8.4)

# Redmine 用ユーザーを作成
$ su - postgres
$ psql
postgres=# create role redmine_user with login 'password';
postgres=# \q

# Redmine のデータベースを作成
$ createdb redmine --encoding=UTF-8 --locale=ja_JP.UTF-8
createdb: database creation failed: ERROR:  新しい照合順序(ja_JP.UTF-8)はテンプレートデータベースの照合順序(en_US.UTF-8)と互換性がありません
HINT:  テンプレートデータベースの照合順序と同じものを使うか、もしくは template0 をテンプレートとして使用してください
# 怒られたので、HINT に従う
$ createdb redmine --encoding=UTF-8 --locale=ja_JP.UTF-8 --template=template0

# root に戻る
$ exit
$ cd /var/lib/rails/redmine

# データベース接続設定ファイルを作成
$ cp config/database.yml.example config/database.yml
$ vim config/database.yml
  production:
-   adapter: mysql
+   adapter: postgresql
    database: redmine
    host: localhost
-   username: root
+   username: redmine_user
-   password:
+   password: password
    encoding: utf8

# セッションストアの生成
$ bundle exec rake -- generate_session_store
# マイグレーション実行
$ bundle exec rake db:migrate RAILS_ENV=production
# デフォルトデータ登録(言語選択あり)
$ bundle exec rake redmine:load_default_data RAILS_ENV=production
Select language: ar, bg, bs, ca, cs, da, de, el, en, en-GB, es, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ja # ←入力して Enter
====================================
Default configuration data loaded.

Apache 設定

今回はバーチャルホストでの運用にします。
DNS の設定が必要だけど。
$ cd /etc/apache2
$ vim sites-available/redimne
<VirtualHost *:80>
    ServerName xxx.mkt-sys.jp
    DocumentRoot /var/lib/rails/redmine/public
    PassengerEnabled on
</VirtualHost>

$ cd sites-enabled
$ ln - ../sites-available/redmine 001-redmine
# root だとログファイルの書き出しとかでエラーになる
$ chown -R www-data:www-data /var/lib/rails/redmine
$ service apache2 restart

ログをローテーションさせる

$ vim /etc/logrotate.d/redmine
/var/lib/rails/redmine/log/*log {
  weekly
  missingok
  notifempty
  copytruncate
}

確認

http://xxx.mkt-sys.jp にアクセス。
無事表示された。お疲れ様でした。

さくら VPS (Ubuntu Server 10.04)設定エントリ一覧

2012/04/28

さくら VPS の Ubuntu Server 10.04 にて PostgreSQL の設定

tail -f pinzo.log: ubuntu 10.04 に rails 開発環境を作る - PostgreSQL 設定編の焼き直し+α

postgres ユーザのパスワード設定

# postgres ユーザのパスワードを設定
$ passwd postgres

# postgres ユーザに su して(これ以降は、基本的に postgres ユーザで作業)
$ su - postgres

# PostgreSQL 側のパスワードを一致させる
$ psql template1
template1 =# alter user postgres with password '12345';
template1 =# \q

rails 用ユーザの作成

$ psql
postgres =# create role rails_user with login password '98765';
postgres =# \q

pg_hba.conf の編集

# root に戻る
$ exit

# pg_hba.conf を編集
$ vi /etc/postgresql/8.4/main/pg_hba.conf
- local all all ident + local all all password

日本語設定

$ vi /etc/postgresql/8.4/main/postgresql.conf
# These settings are initialized by initdb, but they can be changed. - lc_messages = 'en_US.UTF-8' # locale for system error message - lc_monetary = 'en_US.UTF-8' # locale for monetary formatting - lc_numeric = 'en_US.UTF-8' # locale for number formatting - lc_time = 'ja_JP.UTF-8' # locale for time formatting + lc_messages = 'ja_JP.UTF-8' # locale for system error message + lc_monetary = 'ja_JP.UTF-8' # locale for monetary formatting + lc_numeric = 'ja_JP.UTF-8' # locale for number formatting + lc_time = 'ja_JP.UTF-8' # locale for time formatting # default configuration for text search - default_text_search_config = 'pg_catalog.english' + default_text_search_config = 'pg_catalog.japanese'

サービス再起動

$ service postgresql-8.4 restart

さくら VPS (Ubuntu Server 10.04)設定エントリ一覧

2012/04/27

さくら VPS の Ubuntu Server 10.04 に Ruby をインストール

ここ数日体調崩して朝に活動出来なかった。
季節の変わり目は余裕ぶっこいたらダメですね。

というわけで、掲題の通りさくら VPS の Ubunt Server 10.04 に Ruby をインストールしました。
apt で入る Ruby の最新バージョンは 1.9.1 なので、最新の 1.9.3 を使用するべくソースからインストールすることに。
あと、今回から root で作業してます。sudo はいろいろとめんどくさい。環境変数とか

# 使いそうなライブラリを入れておく
$ aptitude install -y zlib1g-dev libssl-dev libreadline-dev libxslt-dev libxml2-dev libyaml-dev
# passenger 用
$ aptitude install -y libcurl4-openssl-dev apache2-prefork-dev libapr1-dev libaprutil1-dev

# Ruby (ソースから)
$ wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz
$ tar xvf ruby-1.9.3-p194.tar.gz
$ cd ruby-1.9.3-p194
$ ./configure --prefix=/usr/local/ruby
$ make
$ make install
$ ln -s /usr/local/ruby/bin/* /usr/bin/

# rubygems
$ echo "gem: --no-ri --no-rdoc" > ~/.gemrc
# rails で使用する gem は bundler で管理するので最低限だけ入れておく
$ gem install bundler
$ ln -s /usr/local/ruby/bin/bundle /usr/bin/

# passengerの導入
$ gem install passenger
$ /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.12/bin/passenger-install-apache2-module
ライブラリが足りなかったらコマンドで教えてくれるのでインストール
# passenger 読み込みファイル作成 $ vim /etc/apache2/mods-available/passenger.load
LoadModule passenger_module /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.12/ext/apache2/mod_passenger.so
# passenger 設定ファイル作成 $ vim /etc/apache2/mods-available/passenger.conf
PassengerRoot /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.12 PassengerRuby /usr/local/ruby/bin/ruby PassengerEnabled off
# passenger を有効化 $ a2enmod passenger # Apache 再起動 $ service apache2 restart

さくら VPS (Ubuntu Server 10.04)設定エントリ一覧

2012/04/19

MySQL で接続、停止、開始ができない場合

こんな場合。
$ mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
$ /etc/init.d/mysql stop
MySQL manager or server PID file could not be found!       [FAILED]
$ /etc/init.d/mysql start
MySQL,Manager of pid-file quit without updating file       [FAILED]
MySQL のプロセスが生き残っているのが原因なので、ps ax | grep mysql して kill してやればいい。

IS12S でメールの復元

IS12S に移行前にIS03 上で SD カードに全メールのバックアップをとってあったので復元した。
すんなりいかなかったので方法を残しておく。

IS12S のEメールアプリには SD カードから復元する機能があるが、これがそのままでは機能しない。
というのもこの機能では /mnt/sdcard 以下を参照するのだが、ここは内部ストレージであり、外部ストレージである SD カードは /mnt/ext_card にマウントされている。
そしてこの機能は /mnt/sdcard より上部を参照することができない。
つまりただ SD カードを挿入しただけではメールの復元機能は、バックアップデータを参照することができない。
なのでバックアップデータを内部ストレージである /mnt/sdcard 以下に移動させてやる必要がある。
今回は /mnt/ext_card/PRIVATE/SHARP/BACKUP/MAIL/INBOX にバックアップファイルが保存されていたので、SHARP ディレクトリ以下を丸ごと /mnt/sdcard/private に移動した。
これで無事にメールアプリの復元機能から vmg ファイルを参照でき、復元することができた。
しかし全部受信箱に入ってしまったので、フォルダを作って振り分け設定をやり直し。
まあ、IS12S は IS03 と違い、メールの再振り分けが簡単にできるからそんなに時間かからなかったからよかった。

しかし、メール復元機能から外部ストレージを参照できないって、メール復元させる気ゼロだよな。

Xperia acro HD (IS12S) で公式にはサポートされていないアプリをインストールして利用できる(かもしれない) 方法

先日、IS03 の調子悪さに我慢の限界が来て衝動的に Xperia acro HD (IS12S) に機種変してしまった。
IS03 で 2 年間頑張るつもりだったけど、ムリだった。
カクカク、もっさりはまだ我慢できるが、しょっちゅう SD カードを認識しなくなって一日に 2, 3 回は再起動する生活には耐えられなかった。
docomo に MNP することも考えたが、誰でも割の解約月じゃないのと、最近の docomo のニュースにはあまりいいイメージがないため見送った。

で、この IS12S だがすごいね。サクサク快適。
これまで IS03 で twicca や MT2 のページングがもたつくのは 3G 回線だしなーと思っていたんだけど、違った。単なる処理能力不足だった。
非常に満足である。
IS03 の名誉のために言うと、IS03 は名機だった。
初のおサイフスマホとして購入した価値は十二分にあった。
バッテリーの持ちや安定性への不満はあったものの、国産スマホ黎明期に十分その役割を果たしたと思う。
ありがとう IS03、IS04 にしなくて本当によかった。

さて、この IS12S にも不満はある。
メニューボタンと戻るボタンがこれまでと逆になってるとか、下にありすぎてタッチしにくいとかあるが、これは IS03 への慣れからくるものだから仕方ない。
一番の問題は、対応していないアプリが結構あることだ。

  • 楽天銀行
  • ローソンモバイルアプリ(のうちのモバイルPONTA)
  • SQUARE ENIX MARKET のゲーム全般
購入してまだ3日だが、ぶち当たっただけでもこれだけある。
どれもかなりメジャーなアプリだし、どれも Xperia acro (IS11S) には対応しているのにだ。
今回、上記のうちいくつか解決できたのでそのメモを残しておく。

au one market 経由でインストール可能な場合がある

楽天銀行はなぜか Google Play で検索しても検索結果に表示されなかった。
PC からは検索結果に表示されるのに。
で、まあ PC で確認したところ、IS12S には対応していなかったのでそのせいかな?と半分納得しておいた。
唯一持ってるネットバンクなのでどうにかならんかなーと試行錯誤してみた。
IS12S で楽天銀行のサイトにアクセスすると Google Play ではなく、au one market に誘導される。
そして au one market からだとダウンロードできるし、インストールできた。
振込はまだ試していないが、残高確認などは問題ないようだ。

IS11S を装ったら可能な場合がある

ローソンモバイルはインストールできるし、検索機能などは使用できる。
ただモバイル PONTA が対応していない。
モバイル PONTA の認証時に未対応です。とはじかれてしまうのだ。
PONTA カードを持ち歩かなくて済むから導入した俺にとってはまったく意味がないアプリになってしまう。
調べてみると、どうやらブラウザの UserAgent で機種判別しているらしく、UserAgent を偽装してしまえば認証できるとのことだった。
  1. Opera モバイルをインストールする
  2. Opera の URL 欄に opera:config と入力して、設定画面を表示させる
  3. かなり下の方に User Prefs という項目があるのでタップして詳細項目を表示させる
  4. 詳細項目の中に Custom User-Agent という項目があるので、そこに "Mozilla/5.0 (Linux; U; Android 2.3.3; ja-jp; SonyEricssonIS11S Build/3.0.1.C.0.33) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" と入力する。(コーテーションは除く)
  5. この状態の Opera でモバイル PONTA の認証を行う
これで無事、モバイル PONTA の認証ができ、実際にローソンでポイントを貯めることができた。

下記のサイトを参考にさせて頂きました。ありがとうございました。

では、SQUARE ENIX MARKET は?

SQUARE ENIX MARKET のゲームはブラウザからダウンロードするため、同じく UserAgent の偽装でいけるんじゃないか?
アクセスしてみると、偽装しないときは「未対応です」と表示されてダウンロードできないが、偽装した場合だとダウンロードボタンが表示されて、ダウンロードすることができた。
しかし、インストール時に「お使いの機種は未対応です。」と言われてしまった。
さすがにこれは現時点ではどうしようもないだろうと諦めた。
早いとこ対応お願いします。ENIX SQUARE さん

さくら VPS の Ubuntu Server 10.04 に色々導入 vol.1

iptables の設定も終わったので、そろそろ本格的にさくら VPS の環境を作っていきましょう。
とりあえず、サーバに導入するものは・・・
  • Webサーバ(済)
  • データベース
  • ソース管理
  • ファイルサーバ
  • Java
  • Ruby
ぐらいかな、現状だと。
ソース管理はこれを機に Git を導入します。
Subversion は使う要件が出てきてからでいいや。
データベースは PostgreSQL を入れる。MySQL よりも PostgreSQL 派です。
ファイルサーバは Webdav 入れるかどうか迷い中。個人で使うなら Git でいいし。
まあ、どれも今まで何度もインストールしてきているので大して問題ないはず。
# base softwares
$ sudo aptitude install -y build-essential zsh vim-nox lv

# PostgreSQL
$ sudo aptitude install -y postgresql libpq-dev

# Git
$ sudo aptitude install -y git-core

# Java
$ sudo aptitude install -y python-software-properties
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo aptitude update
$ sudo aptitude install -y sun-java6-jdk
ここで、問題発生。
なぜか sun-java6-jdk がインストールできない。
今まではこれで大丈夫だったのに。
No candidate version found for sun-java6-jdk
とか言われます。
どうやら Oracle になって、なんだかんだのためになくなったようで・・・
先日も Java API で色々あったよねぇ、そういや。
という訳で、ぐぐる。

とりあえず、すえん学録: Ubuntu 10.10(64bit版)にJDK6をインストールするを見つけた。(候補1)
できれば、aptitude 完結したいので保留。
次にsun-java6-jdk not available - CCcam Forumを見つけた。(候補2)
Debian のリポジトリを登録するのは、他に影響でないのか?怪しいので保留。
そして、Ubuntu 10.04 LTSにSun Javaをインストール - hrendohの日記こんなのもあった。(候補3)
先月末の話なので、これもダメかもしれないが前2つよりはシンプルである。
あと、これで入るのは少しバージョンが古いようだ。

とまあ、どれも一長一短ではあるがシンプルさを考慮して候補3→候補2→候補1の順で試すことにする。

$ sudo add-apt-repository ppa:sun-java-community-team/sun-java6
$ sudo aptitude update
$ sudo aptitude install -y sun-java6-jdk
なんか、依存パッケージがインストールできて肝心の Java のインストールでコケた。
もっかい、sudo aptitude install -y sun-java6-jdk したら無事インストールできた。
というわけで候補2、候補1を試すまでもなく無事に java がインストールできた。
バージョンが少し古いが、大昔ってわけじゃないのでとりあえずよしとしよう。
しかし、この先 Java のインストールでめんどくさくなるのは正直勘弁していただきたいね。
apt や yum 向けのリポジトリを Oracle で管理していただきたいものである。

さくら VPS (Ubuntu Server 10.04)設定エントリ一覧

2012/04/18

Google Apps (+α) 導入時にやったこと

Google Apps 導入時にやったことをメモしておく。
1. ここから Google Apps を mkt-sys.jp で登録
2. さくら VPS のサーバに apache を導入。コマンド一発。
$ sudo aptitude install apache2
3. さくら VPS のサーバに所有権確認用のファイルを配置。
4. お名前.com にてレンタル DNS レコードを設定。
ホスト名 TYPE VALUE 優先 備考
未入力 MX ASPMX.L.GOOGLE.COM. 10 メール用
未入力 MX ALT1.ASPMX.L.GOOGLE.COM. 20 メール用
未入力 MX ALT2.ASPMX.L.GOOGLE.COM. 20 メール用
未入力 MX ASPMX2.GOOGLEMAIL.COM. 30 メール用
未入力 MX ASPMX3.GOOGLEMAIL.COM. 30 メール用
未入力 MX ASPMX4.GOOGLEMAIL.COM. 30 メール用
未入力 MX ASPMX5.GOOGLEMAIL.COM. 30 メール用
mail CNAME ghs.google.com. メールサイトURLを http://mail.mkt-sys.jp/ にする
blog CNAME ghs.google.com. blogger をカスタムドメインにする

その結果、こうなる。(塗りつぶしはさくら VPS の固定IP)
5. Google Apps にてメールの URL を http://mail.mkt-sys.jp/ に変更する。
6. Blogger にて URL を http://blog.mkt-sys.jp/ に変更する。
今のところ Google Apps のメール以外は使う予定なしなので、ここまでやって反映されるまで放置したらおしまい。

さくら VPS (Ubuntu Server 10.04)設定エントリ一覧

独自ドメインに切り替えた

フリーランスになって一ヶ月半が過ぎた。
フリーになったので自分のドメインのメールアカウントを Google Apps で作成した。
せっかくなので、この blog もそっちのドメインで運用していこうと思います。
というわけで、今後は http://blog.mkt-sys.jp/ でよろしくお願いします。

2012/04/17

Ubuntu Server 10.04 に iptables の設定を行う

さくら VPS の Ubuntu Server 10.04 では、iptables の初期設定はオールスルーになっている。
$ sudo iptables -L
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
これはさすがにアレなので、設定しましょう。
# 設定の永続化に使用する iptables-persistent をインストール
$ sudo aptitude install iptables-persistent

# iptables 用ディレクトリの作成
$ sudo mkdir /etc/iptables

# 設定スクリプトを作成(内容は後述)
$ sudo vi /etc/iptables/iptables.sh

# 設定スクリプトの実行
$ sudo sh /etc/iptables/iptables.sh

# 正しく設定されているかを確認
$ sudo iptables -L
Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere DROP all -- 10.0.0.0/8 anywhere DROP all -- 172.16.0.0/12 anywhere DROP all -- 192.168.0.0/16 anywhere ACCEPT icmp -- anywhere anywhere icmp echo-request ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:www ACCEPT tcp -- anywhere anywhere tcp dpt:https ACCEPT tcp -- anywhere anywhere tcp dpt:ssh LOG all -- anywhere anywhere limit: avg 1/sec burst 5 LOG level warning prefix '[IPTABLES INPUT] : ' DROP all -- anywhere anywhere Chain FORWARD (policy DROP) target prot opt source destination LOG all -- anywhere anywhere limit: avg 1/sec burst 5 LOG level warning prefix '[IPTABLES FORWARD] : ' DROP all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere
# iptables.rule が作成されているかを確認 $ ls /etc/iptables
iptables.rule iptables.sh
# 現在の設定を永続化する $ sudo service iptables-persistent start
iptables.sh の中身はこんな感じ
#!/bin/sh

# テーブル初期化
/sbin/iptables -F
# 定義チェインを削除
/sbin/iptables -X

# デフォルトルールの設定(受信:破棄, 送信:許可, 通過:破棄)
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD DROP

# 自ホストからのアクセスを許可
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT

# プライベートIPアドレスからのアクセスを破棄
/sbin/iptables -A INPUT -s 10.0.0.0/8 -j DROP
/sbin/iptables -A INPUT -s 172.16.0.0/12 -j DROP
/sbin/iptables -A INPUT -s 192.168.0.0/16 -j DROP

# ping を許可
/sbin/iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# 内部から行ったアクセスに対する外部からの返答アクセスを許可
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 拒否IPからのアクセスを破棄
# 拒否IPは /etc/iptables/drop_ip に1行ごとに記述する
if [ -s /etc/iptables/drop_ip ]; then
    for ip in `cat /etc/iptables/drop_ip`
    do 
        /sbin/iptables -I INPUT -s $ip -j DROP
    done
fi

# 各サービスで使用するポートを許可
# HTTP
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# HTTPS
/sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# ssh
/sbin/iptables -A INPUT -p tcp --dport 12345 -j ACCEPT

# 上記のルールにマッチしなかったアクセスはログを記録して破棄
/sbin/iptables -A INPUT -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES INPUT] : '
/sbin/iptables -A INPUT -j DROP
/sbin/iptables -A FORWARD -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES FORWARD] : '
/sbin/iptables -A FORWARD -j DROP

# 保存
/sbin/iptables-save > /etc/iptables/iptables.rule

さくら VPS (Ubuntu Server 10.04)設定エントリ一覧

2012/04/16

お名前.comの独自ドメインをさくらVPSに割り当てる

せっかく VPS を契約したのだから独自ドメインで運用したい。
というわけで、お名前.comで取得した独自ドメインにさくらVPSを割り当てましょう。
  • お名前.comにログイン
  • ドメイン設定 → ネームサーバーの設定 → レンタル DNS レコード設定
  • 設定するドメインを選択
  • サブドメイン無しで、TYPE: A、VALUE: さくら VPS の IP アドレスを登録
  • サブドメイン www に対して、TYPE: A、VALUE: さくら VPS の IP アドレスを登録
  • ポチポチ進めれば完了
  • しばらくして、登録されていることを確認する
ここまでで、ドメイン側の設定は終わり。
次は、サーバ側を変更する。
まずは、さくらのVPSホームでホスト名を変更する。
ssh でログインし、 /etc/hostname と /etc/hosts の該当箇所を変更する。
サーバを再起動すれば設定完了。お疲れ様でした。

Ubuntu Server 10.04 の ssh ポートを変更する

前回 ssh を鍵形式ログインに変更したけど、念の為ポートも変更しましょう。
# クライアントから ssh でログイン
% ssh user@[server]

# サーバーの sshd_config を編集
$ sudo vi /etc/ssh/sshd_config
- Port 22 + Port 12345
# /etc/services も変更しておく $ sudo vi /etc/services
- ssh 22/tcp # SSH Remote Login Protocol - ssh 22/udp + ssh 12345/tcp # SSH Remote Login Protocol + ssh 12345/udp
# サービス再起動 $ sudo service ssh restart
ssh start/running, process 6331
# 一旦接続を閉じる $ exit
logout Connection to [server] closed.
# 再度ログイン % ssh user@[server]
ssh: connect to host [server] port 22: Connection refused
ポート 22 でログインできなくなりました。
ログインするにはポートを指定すればOK。
% ssh user@[server] -p 12345

2012/04/13

Ubuntu Server 10.04 に SSH を設定する

まずは、パスワードで SSH ログイン。
最初から ssh は入っているようなので、設定ファイルを書き換える。
# vim 入ってなかった
$ sudo vi /etc/ssh/sshd_config
# root でのログインを不可 - PermitRootLogin yes + PermitRootLogin no
まだカギを生成指定なので、とりあえず root でのログインだけ封じておく。
サービスを再起動
$ sudo service ssh restart
ssh start/running, process 1043
パスワードでログインだと不安なので、鍵を使ったログインにしましょう。
クライアントの Ubuntu で鍵を生成。
% ssh-keygen -t rsa
Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): # 何も入力せず Enter Enter passphrase (empty for no passphrase): # SSH用パスワードの入力 Enter same passphrase again: # パスワード確認のためもう一度入力 Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX user@host
これで $HOME/.ssh/ 以下に id_rsa, id_rsa.pub が作成された。
% ls -al ~/.ssh
合計 20 drwx------ 2 user user 4096 2012-04-13 07:14 . drwxr-xr-x 57 user user 4096 2012-04-13 07:19 .. -rw------- 1 user user 1743 2012-04-13 07:14 id_rsa -rw-r--r-- 1 user user 398 2012-04-13 07:14 id_rsa.pub -rw-r--r-- 1 user user 442 2012-04-13 06:46 known_hosts
id_rsa が秘密鍵で、id_rsa.pub が公開鍵なので id_rsa.pub を接続したい先のサーバに登録してやる。
% scp .ssh/id_rsa.pub サーバのIPアドレス:~/
id_rsa.pub 100% 398 0.4KB/s 00:00
次はサーバ側でこの鍵を登録する。
# なかったので作成
$ mkdir .ssh
# 登録。最初だから > でもいいけど、今後のことを考えて >> でやるようにしとく
$ cat id_rsa.pub >> .ssh/authorized_keys
これで今後、このクライアントからのアクセスは鍵方式での認証になる。

2012/04/12

さくらのVPS 2G に Ubuntu Server 10.04 をインストール

先日さくらのVPS 2G を契約した。
契約時点で Cent OS が自動的にインストールされているので、これを Ubuntu Server に変更しましょう。
コントロールパネルでOS再インストールを選択。
カスタムOSインストールへ。
OSを選択
実行をクリックすると QEMU が立ち上がる。
Java が実行できる必要があるので、インストールされていて、ブラウザで実行できる必要がある。
キーボードを選択。
OSの言語選択は出て来なかった。
キーボードのレイアウトを選択。
ブラウザ上に表示されているIPアドレスを入力。
ネットマスクを入力。
デフォルトとは違うこともあるので注意。
ゲートウェイを登録
パーティションの種類を選択。
ディスクを選択。
パーティションを確認される。
インストール開始。
管理者ユーザーの名前を入力。
めんどくさかったら、後で登録する管理ユーザーと同じでいい。
管理者ユーザーを登録。
管理者ユーザーのパスワードを登録。
確認のためパスワードをもっかい入力。
ホームディレクトリを暗号化するかどうか選択。
残りのインストールが行われる。
インストール完了。お疲れ様でした。
各選択肢でどれを選ぶかは用途にあわせてご自由に。
言われるままに進めるだけなので非常に簡単です。
さて、これから少しづつ環境を作っていこう。