カテゴリー : Amazon,ubuntu

このカテゴリーの登録数:10件 表示 : 1 - 7 / 10

Jul 17, 2013

Ubuntu 13.04 (Amazon EC2) でWebDAV

ポスト @ 23:24:03 , 修正 @ Jul 17, 2013 14:24:03 | Amazon,ubuntu

 今度は、WebDAVである。一つあったら何かと便利ではないかと思って……

 まず、libapache2-mod-encodingをインストール。多分、日本語名などに対応できるようにするため。

sudo apt-get install libapache2-mod-encoding
次に、webDAV用のディレクトリを作る。目的の場所で、こんなふうに。今回は追加で作ったEBSで。
$ sudo mkdir webdav
$ sudo chown www-data:www-data webdav
$ sudo chmod 770 webdav 
/etc/apache2/conf.dにあるwebdav.confに、次のように書く。
Alias /dav /mnt/vol/dav
<Location /dav>
  DAV On
  AuthUserFile  "/etc/xxxx/.htpasswd"
  AuthName  "WebDav Server"
  AuthType  Basic
  Require valid-user
</Location>
そして、/etc/apache2/mods-available/にencoding.confという名のファイルを作成し、以下を記述。
<IfModule mod_encoding.c>
    EncodingEngine    on
    NormalizeUsername on
    SetServerEncoding     UTF-8
    DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
    AddClientEncoding "cadaver/" EUC-JP
</IfModule>
ここで、WebDAV関連のアプリケーションを動かす。
$ sudo a2enmod dav
Enabling module dav.
To activate the new configuration, you need to run:
  service apache2 restart
$ sudo a2enmod dav_fs
Considering dependency dav for dav_fs:
Module dav already enabled
Enabling module dav_fs.
To activate the new configuration, you need to run:
  service apache2 restart
$ sudo a2enmod encoding
Enabling module encoding.
To activate the new configuration, you need to run:
  service apache2 restart
何度も、service apache2 restartが必要と言われるけれども、まだしない。最後に、パスワードを作る。
$ sudo htpasswd -c .htpasswd xxxxx
New password:
Re-type new password:
Adding password for user xxxxx
これで、ようやく
$ sudo service apache2 restart
これでアクセスできるようになっているはず。次は、利用する方(クライアント)である。MacOSXの場合は、Finderから「サーバに接続」を選んで、http://xxx.xxx.xxx.xxx/dav と入力してEnterキーを叩くだけ。ユーザ名とパスワードを入れるように要求されるので上で設定したものを入力すればいい。簡単である。

 次は、Ubuntu 13.04で使えるように設定した。まず、davfs2をインストール。

$ sudo apt-get install davfs2
一般ユーザがマウントできるように、
$ sudo chmod u+s /usr/sbin/mount.davfs 
自分をdsvfs2グループに追加する
$ sudo gpasswd -a xxxx davfs2
Adding user xxxx to group davfs2
次にdavfs2の設定ファイルを置くために、ホームディレクトリに.davfs2というフォルダを作る。そして、その中に、davfs2.confというファイルを置いて、
use_locks 0
server_charset UTF-8
と書く。さらに、同じ場所にsecretsというファイルを作って、
http://xxx.xxx.xxx.xxx/dav xxxxx passwrd
と書き込み、このファイルの権限を600にする。そして、マウントするディレクトリを作る。私はホームディレクトリにMyDAVというフォルダを作った。 /etc/fstabを編集。
http://xxx.xxx.xxx.xxx/dav /home/xxxxx/MyDAV davfs user,noauto 0 0
これで、
mount ~/MyDAV
とするとマウントできる。二回目以降は、ウィンドウの左側の一覧Devicesにあるアイコンをクリックするだけで繋がる。 アンマウントはumount ~/MyDAVでいいはず。

Jul 16, 2013

Amazon EC2で、MySQLのデータをEBSに移す

ポスト @ 22:20:31 , 修正 @ Jul 16, 2013 13:20:31 | Amazon,ubuntu

 正確に云えば、このインスタンスもEBSベースなので、そもそも全部EBSなのだが、別のEBSに移すということである。ここでは、/mnt/volとしてマウントした別のEBSにMySQLのデータ・ディレクトリを移すことを考える。データのみである。Logとか、設定とかはそのままである。

 話は簡単で、/var/lib/mysqlを/mnt/vol/mysqlに移せばよい。所有権の設定なども変えないために、cp -a か何かでコピーする。そして、/etc/mysql/my.cnのデータの場所を書き換える。

datadir         = /var/lib/mysql
↓
datadir         = /mnt/vol/mysql
として、sudo service mysql restartとするだけでいいはず。ところが、エラーが出てしまう。/var/log/mysql/error.log を見てみると、ibdata1に対する権限がないという。どういうことだ? どうやら、設定を書き換えるのがmy.cnfだけでは足りないらしい。/etc/apparmor.d/usr.sbin.mysqld も書き換えなくてはならないのだ。
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
↓
/mnt/vol/mysql/ r,
/mnt/vol/mysql/** rwk,
とするのだ。そして、sudo service mysql start としてやれば、正常に動き出す。まあ、少なくとも私の場合は。やれやれ。

 この貴重な情報は、Twiwt:Blog 「EC2 で MySQL のデータの保存先を EBS ボリューム(/mnt)に変更する」で知った。

Jul 13, 2013

Amazon EC2 設定続き

ポスト @ 23:33:55 , 修正 @ Jul 13, 2013 14:33:55 | Amazon,ubuntu

 忘れていた。すっかり忘れていた。Apacheがちゃんと動いていても、80ポートが開いていなければ外からアクセスできない。当然のことながら。

 EC2のSecurity Groupsのパネルを開いて、Create a new ruleのところでhttpを選んで、そうすると自動的にPort range欄に80が入るから、そのままAddRuleをクリックし、続けてApply Rule Changesを押せばよい。

port80security.png

 これでようやく"It works!"が表示された。やれやれ。

久しぶりにAmazon EC2を使う

ポスト @ 21:00:56 , 修正 @ Jul 13, 2013 12:00:56 | Amazon,ubuntu

 暑くなってきたので自宅サーバをAmazon EC2に引っ越すことにした。久しぶりなので何もかも忘れている。

 まず、EC2 consoleのサイトにログインして、インスタンスを起動させる地域を選ぶ。今回は、US Eastにする。特に理由はない(本当はあるけど、秘密)。新規インスタンス作成を選んで、Quick Launch Wizardで進める。Key Pairは既存のものを選ぶ。"Choose a Launch Configureation:"というところで、Ubuntu Server 13.04 (64 bit) を選んだ。Typeはt1.micro。他は特に何か選ぶこともなくLaunchを押すと起動。

 インスタンス一覧に今回起動したもののPublic DNSが表示されているので、Termnal から、ssh -i keypair.pem ubuntu@ec2-000-000-000-000.compute-1.amazonaws.com というような感じでログインできることを確認。

 そして、$ df -h と打つと、

Filesystem             Size   Used  Avail Use% Mounted on
/dev/xvda1             8.0G   1.1G   6.9G  14% /
udev            286M  8.0K  286M   1% /dev
tmpfs            59M  180K   59M   1% /run
というような情報が表示される。/dev/xvda1がroot deviceとなっている。

 次に、EBSを作る。今作ったroot deviceがあるのと同じZoneで作成。30 GBまで無料期間があるから、それ以下にしろって書いてあったので30 GBで新規作成したが、これはさっきの8 GBと合わせたら越えてしまうのではないか。よく判らないが30 GBで作ってしまった。作っただけでは、まだ使えない。これは、コンソールのEBSのパネルで作ったEBSを右クリックでAttach Volumeを選んで、device nameを/dev/sdfを選んで連結させる。しばらくattachingのままで待たされる。表示がattachedになっても、/dev/sdfにディスクが見当たらない。/dev/xvdvにあるのだ。まずはフォーマット:

sudo mkfs.ext4 /dev/xvdf
 このVolumeは/mnt/mydiskにマウントしようと思うので、
sudo e2label /dev/xvdf /mnt/mydisk
とし、次に、/etc/fstabに、
LABEL=/mnt/mydisk          /mnt/mydisk                ext4    defaults 
と書いて、sudo mount -aとやって、fstabの設定でマウントするように指示。再び、df -h で、
/dev/xvdf        30G   44M   28G   1% /mnt/mydisk
となっていることも確認。今日はここまで。

Jan 20, 2010

Amazon EC2再び・続き

ポスト @ 7:54:37 , 修正 @ Jan 19, 2010 22:54:37 | Amazon,ubuntu,MacOSX

 個人的備忘録の続き。

 Apache、PHP、MySQLのインストールから。

 sudo apt-get install apache2とやってインストール。http://ec2-xxxx.compute-1.amazonaws.comをブラウザで開いて、It works! と表示されればいい。

sudo apt-get install php5-cli
sudo apt-get install libapache2-mod-php5
sudo apt-get install mysql-server
 *rootのパスワード設定を求める画面が出てくるので入力
sudo apt-get install php5-mysql
 /etc/mysql/my.cnfに以下の2行を追加。 [mysqld]
default-character-set = utf8
skip-character-set-client-handshake
 /etc/php5/apache2/php.iniを少し修正。/etc/php5/cli/php.iniも。
magic_quotes_gpc Off
default_charset = "UTF-8"
mbstring.language Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none;
 一通り設定したら、apacheの設定更新を
sudo /etc/init.d/apache2 reload
とやって反映させる。

 pythonは入っていたので、python-mySQLdb libapache2-mod-pythonだけ追加しておく。あと、phpmyadminもインストール。

 確認すると、MySQLにパスワードのないユーザは存在しなかったので、追加のみ。

sudo /etc/init.d/mysql restart
mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       | 
| character_set_connection | utf8                       | 
| character_set_database   | utf8                       | 
| character_set_filesystem | binary                     | 
| character_set_results    | utf8                       | 
| character_set_server     | utf8                       | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
となっていることを確認。

 次に、EBSにMySQLのデータベースを置くための設定。インスタンスが停止してもデータが消えないように。EBSのvolumeは前に作っておいたものを使う。まず、SSHでログインして、sfsprogsをインストール。
 次に、volumeとinstanceの対応付けを行う。

ec2-attach-volume -d /dev/sdh -i i-2exxxx vol-xxxx
次のような表示がなされる。
ATTACHMENT  vol-xxxxxx  i-2exxxxx   /dev/sdh    attaching   2010-01-19T03:18:31+0000
EC2のシステムに戻って、
sudo mkfs.xfs /dev/sdh
mkfs.xfs: /dev/sdh appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.
という表示が出たので、
sudo mkfs.xfs -f /dev/sdh
meta-data=/dev/sdh               isize=256    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=0
realtime =none                   extsz=4096   blocks=0, rtextents=0
続いて、
sudo echo "/dev/sdh /vol xfs noatime 0 0" >> /etc/fstab
-bash: /etc/fstab: Permission denied
としたら、拒否されたので、/etc/fstabを開いて書き込んだ。
echo "/dev/sdh /vol xfs noatime 0 0" | sudo tee -a /etc/fstab
とすればよかったのか。
sudo mkdir /vol
sudo mount /vol
次にMySQLをいったん止め、MySQLデータの保存場所の設定を変更する。
sudo /etc/init.d/mysql stop
sudo mkdir /vol/etc /vol/lib /vol/log
sudo mv /etc/mysql     /vol/etc/
sudo mv /var/lib/mysql /vol/lib/
sudo mv /var/log/mysql /vol/log/
sudo mkdir /etc/mysql
sudo mkdir /var/lib/mysql
sudo mkdir /var/log/mysql
echo "/vol/etc/mysql /etc/mysql     none bind" | sudo tee -a /etc/fstab
    /vol/etc/mysql /etc/mysql     none bind
sudo mount /etc/mysql
echo "/vol/lib/mysql /var/lib/mysql none bind" | sudo tee -a /etc/fstab
    /vol/lib/mysql /var/lib/mysql none bind
sudo mount /var/lib/mysql
echo "/vol/log/mysql /var/log/mysql none bind" | sudo tee -a /etc/fstab
    /vol/log/mysql /var/log/mysql none bind
sudo mount /var/log/mysql
MySQLを再起動
sudo /etc/init.d/mysql start
これでいいのだろうか。よく判らない。

 次にユーザの追加。いつもはこれはGUIでやっていたので、コマンド操作は久しぶり。Jonas Lieさんのjonasというユーザを追加するときの例。

sudo adduser jonas
Adding user `jonas' ...
Adding new group `jonas' (1002) ...
Adding new user `jonas' (1002) with group `jonas' ...
Creating home directory `/home/jonas' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for jonas
Enter the new value, or press ENTER for the default
    Full Name []: Jonas Lie
    Room Number []: 
    Work Phone []: 
    Home Phone []: 
    Other []: 
Is the information correct? [Y/n] Y
これで/homeディレクトリ下にはubuntuとjonasという二つのホームディレクトリが存在している状態になる。

Jan 19, 2010

Amazon EC2再び

ポスト @ 22:11:09 , 修正 @ Jan 19, 2010 13:11:09 | Amazon,ubuntu,MacOSX

 何度も書いているように、引っ越しである。引越しの最中は自宅サーバは動かせない。引っ越し荷物の中に入っているからだ。今回もまた、Amazon EC2で動かすことにしよう。

 前と違うのは、Ubuntu Server on Amazon EC2というのがCanonicalから正式に発表されていることである。そして、Ubuntuの解説サイトEC2StartersGuideを読めば、簡単に動かせるのだ。

 EC2のアカウント取得などは、すでにできているものとして、今回はUbuntu Server on Amazon EC2を書き留めておく。主に自分用の備忘録である。こういう最初の設定などはすぐに忘れてしまうから、手順を書き留めておかなくてはあとで困るのからだ。

 アカウントを作って、X.509 Certificateとそれのprivate keyをダウンロードしておく。private keyをなくしてしまったら、certificateを作り直さなくてはならない。後で参照することはできない仕組みになっているのだ。その辺の準備ができたらインスタンスを起動するのだが、今回は、9.10 Karmic Koala us-east ami-1515f67cを選んだ。

 まずはUbuntuで操作する場合、sudo apt-get install ec2-api-toolsとやって、ec2-api-toolsをインストール。何と便利なのだろう。
~/.bashrcに

export EC2_PRIVATE_KEY=$HOME//pk-XXX.pem
export EC2_CERT=$HOME//cert-XXX.pem
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/
 私は~/.ec2にこれらのファイルを置いたので、~/.ec2/pk-xxx.pemといった具合に記した。 次に.ec2へ移動して、
ec2-add-keypair ec2-keypair > ec2-keypair.pem
としたあと、
chmod 600 ec2-keypair.pem
とやって、このファイルを他所の人が見られないようにする。これが755だったりすると、怒られてログインできない。
ec2-run-instances ami-xxxxx -k ec2-keypair
というようにインスタンスを立ち上げて、
ssh -i /path/to/ec2-keypair.pem ubuntu@external-host-name
というようにsshでログインする。ユーザはrootで入ろうとすると、また怒られてしまってログインできない。ubuntuで入って、適宜sudoを使いなさいと言われるので、それに従う。

 MacOSXの場合は、Amazon EC2 API Toolsをダウンロードして、適当なところに配置する。その後、~/.bash_profileに

export EC2_HOME=/Users/tolleetlege/ec2-api-tools
export PATH=$PATH:$EC2_HOME/bin
export EC2_PRIVATE_KEY=/Users/tolleetlege/.ec2/pk-xxxx.pem
export EC2_CERT=/Users/tolleetlege/.ec2/cert-xxxx.pem
export JAVA_HOME=/Library/Java/Home
などと書く。あとはUbuntuとほぼ同じ。もちろん、EC2_HOMEはどこでも自分の好きなところへ。

これで最低限の準備ができたところ。続きはまた。

Mar 28, 2009

自宅サーバ復帰

ポスト @ 23:46:56 , 修正 @ Mar 28, 2009 14:46:56 | Amazon,ubuntu

 ほぼ一ヶ月半ぶりにAmazon EC2から自宅サーバに復帰しました。自宅が前の自宅ではないこと、回線がADSLから光になったこと、ヴァーチャル・ホストで二つのドメインを運用するようになったことが前とは異なるところ。

 Amazon EC2の方は、万が一再度動かさなくてはならなくなったときのために、AMIを保存する。

# ec2-bundle-vol -d /mnt --privatekey pk-xxxxxxxxxx.pem --cert cert-
xxxxxxxxxx.pem --user 0000-0000-0000
予めpemファイルを/mntに保存しておいて、上記のようにすると、
Please specify a value for arch [i386]: 
と問われるので、そのままリターン・キーを叩く。すると、
Copying / into the image file /mnt/image...
Excluding: 
     /sys
     /proc
     /sys/fs/fuse/connections
     /dev/pts
     /dev
     /media
     /mnt
     /proc
     /sys
     /mnt/image
     /mnt/img-mnt
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00267 s, 393 MB/s
mke2fs 1.41.3 (12-Oct-2008)
Bundling image file...
Splitting /mnt/image.tar.gz.enc...
Created image.part.00
Created image.part.01
という感じで処理が始まり、67まで行って終わった。随分待ったような気がする。引っ越し後の片付けをいろいろとやっていたらいつの間にか終わった。できあがったイメージを
ec2-upload-bundle --bucket ami090328 --manifest image.manifest.xml --access-key x0x0x0x0 --secret-key y0y0y0y0/xzxzxzxz
というようにして、Amazon S3に保存した。そののちSSH接続を切ってから、
ec2-register ami090328/image.manifest.xml
とイメージを登録。
ec2-terminate-instances i-xxx000y0
というようにしてインスタンスを終了。課金もここで止まるわけだ。インスタンスの起動や終了はAWS Management Consoleでも可能。使い方に慣れていないので、今回は使っていない。

 ほぼ一月半使ってきて、今月の支払いは63ドル、先月が53ドルだった。インスタンスを立ち上げる前は、一ヶ月の請求が一ドル前後だったので、この請求額のほとんどはAmazon EC2で小規模サーバを24時間連続運転したときの請求額だろう。個人の日記で使うにはちょっと割高かも。

 自宅サーバ復帰を機会に、引っ越し後処理作業にも目処がついたので、本欄もこれから更新を復活させたい。