カテゴリー別アーカイブ: 情報系

前回に続きhosts

前回ブログサーバーにアクセスするとき、自宅LAN内か外にいるかでhostsを書き換えることでブログを見ることができるという記事を書いたが、あまりにも面倒くさい。

自宅デスクなら持ち運ぶこともないので、一回hostsを書き換えれば良い話だが、ノートPCだとそうもいかない。家にいるときにはhostsにサーバーのローカルIPを書いて、外にいるときにはその行をコメントアウトしなければならない。。。
ブログは思い立った時にすぐ書きたい!
と言っても最近はあまり書けていないんですが、ネタはあるんだけどね。。。

ってことでhostsを自動的に書き換えるバッチファイルを作成することにした。
調べてみるとWindows8にはPowershellっていうシェル(?)があってせっかくだし、PowerShellで書こうと思ったけどPowerShellのファイルを作って実際に実行しようとクリックしてみるも、PowerShellが実行されずメモ帳で開かれる。。。なぜだ。。。
調べてみると
Windows PowerShell スクリプトを実行する
うーん、セキュリティポリシーを変更したあとにパスも変えなければならないのか、、、普通にバッチファイル作ったほうが早そう。。。

ってことでバッチファイルを作りました。初めて作ったからよくわからんけど一応できてるからおk。

以下バッチファイルソース

cd C:WindowsSystem32Driversetc
Netsh wlan show interfaces  > tmp
find "4CE6763E57E4" tmp > NUL
if errorlevel 1 (echo #192.168.10.1 kotashin.dontexist.com > hosts) else (echo 192.168.10.1 kotashin.dontexist.com > hosts)
del tmp
exit

簡単に説明すると1行目でhostsファイルのあるフォルダに移動して、
2行目で現在アクティブになっているネットワークをtmpファイルにリダイレクトする。
3行目で自宅のSSIDと一致したらNULにエラーを入れる(ここが少しややこしい、自宅にいたらNULにそのままSSIDを書き込んでエラー結果と見せかけている)。
4行目でNULに何かが書き込まれていた時にhostsに#192.168.10.1 kotashin.dontexist.comを書き込み、そうでない場合、192.168.10.1 kotashin.dontexist.comを書き込む。
最後にtmpファイルを削除して終わり。

tmpファイルを作ってHDDガリガリやってダメなプログラムな気もするけど、何回変数に入れてやろうとしても出来なかったから仕方がない。動いてるからおk。

で、このプログラムをブラウザ起動に同時起動させることにした。そのためにまたバッチファイルを作成した。

start "" "C:WindowsSystem32Driversetchost.bat"
start "" "C:Program Files (x86)GoogleChromeApplicationchrome.exe"


でこのバッチファイルのショートカットをデスクトップに作成してアイコンをクロームにすれば完璧。
ブラウザ起動時に自動的にhostsを書き換えて自分のこのブログにアクセスできるようになった。めでたしめでたし。

と思ったら、なんか変なエラーが出てる。
このコマンドを実行するための十分な記憶域がありません
ありゃりゃ。スリープ入れれば治りそうな気もするけどちゃんどコマンドを通ってるし、まぁいいか。

参考URL
nodchipの日記 hostsファイルの自動書き換え

LAN内からブログサーバーにアクセスできないあれ。hostsファイルの威力に感動。

以前のエントリーでブログサーバーにローカルからアクセスできないといった記事を書いたが、この問題が解決できた。

hostsファイルを書きなおせばよいだけだった。
hostsファイルとは、IPアドレスとホスト名の対応を記述したテキストファイルのこと。
例えば、hostファイルに

192.168.10.1 kotashin.dontexist.com

と記述したとすると、ブラウザのアドレスバーのkotashin.dontexist.comのドメイン名の部分が内部的に(OSレベルで)192.168.10.1というローカルIPに置き換えられる。
ドメイン名は基本的にグローバルIPにひも付けされているため、サーバーと同じLAN内ではブログサーバーにアクセスすることはできなかったが、hostsファイルに書き込むことでローカルIPに置き換えてアクセスすることができるようになった。

そんで hostsファイルの場所は
Windowsなら「C:WINDOWSsystem32driversetc」
Macなら「/private/etc」
Linuxなら「/etc」

にあるので、管理者権限でファイルを開き
上述したように


内部的に書き換えたいIPアドレス ドメイン名

と追記すれば、ブラウザでそのドメイン名にアクセスした場合に自動で設定したIPアドレスに飛んでくれる。

以上、問題解決。

クラウドサービスについて

授業で行ったクラウドサービスについてのメモ。
研究の題材としてすごい面白い。

●ハウジング
自社内にサーバーを貸し出す。
●レンタルサーバー
レンタルサーバーを提供する会社はサーバーを用意し、
顧客はそのサーバーに遠隔から操作する。
●IaaS
VMのような技術を用い、スパコンのリソースの一部をサーバーとして提供する。
サーバー自体の性能を提供するスケールアップは可能だが、スケールアウトは自分で設計が必要。
OSは自分で用意。パブリッククラウドとも呼ばれる。AmazonEC2
●PaaS
スケールアウトまで提供。ハードウェアからOS・ミドルウェアをセットでクラウド上で提供し、複数台のサーバーで負荷分散することでユーザー数の増加に対応。Google App Engine, Windows Azure
●BaaS
アプリだけ開発する。スマートフォンに特化しているとも言われる。サーバーはその昨日だけ提供する。
例えば、LINEやCOMMにサーバー側の処理はほとんど同じだと言える。つまりチャットや無料通話の機能まで提供し、ディベロッパーはスマフォのアプリ開発だけ行えば良い。アプリの(インターフェイス)側だけつくっていると解釈できる。フェイスブックはこのBaaSの有名な会社Parseを買収し、ファイスブックアプリ開発のフレームワークの一部をしてディベロッパーに提供することを発表した。
●SaaS
アプリまで提供する。ディベロッパー、プログラマの入る余地はない。

考えてみると世の中のほぼすべてのサービスはクラウドという技術を利用している。
そのクラウドサービスの上述した分類分けでそれらが技術的にどのような違いがあるのかを理解している人はそれほどいない気がする。(講義してくれている教授ですらあやふやだった。。。)

技術とサービスを結びつけるMOTにおいて、クラウドサービスのサービスの提供の形ごとにどれだけ効率的に収益をあげることができ、どのような一長一短があるのかを比較、評価することは価値ある研究なのでは?と思った。

参考文献
BaaSとはappires
http://www.appiaries.com/jp/baas/index.html
ハウジング・ホスティング・レンタル・VPS・クラウド違い
http://d.hatena.ne.jp/fz6/touch/20111227/1324977607
スマートデバイス向け新クラウド!BaaSとは
http://j-net21.smrj.go.jp/develop/digital/entry/001-20121128-01.html
モバイル向けBaaSベンダの「Parse」、Facebookが買収
http://www.publickey1.jp/blog/13/baasparsefacebook.html

卒論提出まであと少し

一応卒論の提出日が12月15日に決まった。それまでにある程度卒論を完成させなければならない。毎日2ページくらいのペースで書かないと間に合わない。。。

まだ全部実験も終わってない状態で書き始めてる。

これからすること。(ここから思考垂れ流し)
APIまで完成しているので、あとは最適化するだけ。ただこれが一番のメイン。どんな用途向けに最適化するか。
あくまでもだれでも簡単に使えるOpenCLが目的。ちょっと前にクロノスから発表されたCLUの考え方にに非常に近くなってしまうがしょうがない。

プロトタイプ向けに手軽にOpenCLを使えるためライブラリ開発、そして最適化は実行時間予測するために行う。これによってCPUとGPUのリソースどちらをどれだけ使ったほうがそのプログラムは高速化するかの予測ができることは実用性にもつながるはず、、、

今からやらなければならないことを整理すると、どんなプログラムも使えるような汎用的な最適化プログラムを組む。具体的には、CPUとGPUのプロセッサの特徴をブラシュアップして、この処理はCPUに、この処理はGPUというように分ける。それを.clファイルに対して考えなければならない。

ん?.clファイルに対してどのようにプログラミングすれば良いんだ?
ホストプログラムの処理はもちろんCPUが行う。この処理をGPUに回すことはない。となると最適化を考えた場合やはり.clファイルに対してリソース分配を考えなければならない。またマルチGPUについても考えなければならない。CPUとGPUの特徴の違いをまだ全部解析できていないが、例えば、CPUにはif文の処理、GPUにはfor文の処理というようにソースを読み込んだ段階でプログラムオブジェクトを分ける。そんなことをが果たして出来るのか?これは利用者がヘテロジニアスな環境を使う前提での研究だが、とりあえず家中に転がっていたCPUやらGPUを一つのパソコンに突っ込んでヘテロジニアスな環境ができたみたいな状況で、このパソコンでプログラムを動かしたい!みたいな。そのとき、「ほら、ぼくの研究役立つでしょ?」みたいな感じ。

そんでまずぼくのプログラムがするべきことっていうのは、まず環境情報をとってくる。どんなデバイスがあるのか。それがもし、CPUだけだったりしたら問題ない?いやそんなことない。OpenMPみたいにスレッドをたくさん立てて並列化するべきだ。またGPUが刺さっていたらもちろんCPUとGPUの並列化になるんだけど、一番難しいのはおそらくここのリソースの分け方。.clファイルを全部GPUに投げちゃえば楽なんだけどそれじゃ意味が無い。ここをさっき言ってたifとかforの関数ごとに分ける。本当にそんなんできんの?できて、CPUだけとGPUだけ処理してどっちが早いぐらいじゃねとも思う。もちろん変数なんて共有しているわけだからそれを別々のデバイスで計算したらわけわからんことになる気がする。そう考えると.clファイルの処理を分けるなんて無理じゃね?てか意味なくね?うーん。。。そんな複雑なプログラムなんてサンプルを考えるだけでも大変な気がする。んー例えばゲーム開発を想定して、分岐をCPU、グラフィック処理をGPUに振り分けるように、、、いやそれだったらホストプログラムの方で処理すればよいだけだ。そもそもCPUだけだったら.clファイルを作成する意味ってなくね?ホストプログラムで処理すればいいんだもん。。。先輩のCUDAでのやつもホストプログラムで処理させるようにしてるんだっけか????そうすると、ソースプログラムを読み込んだ段階でCPUとGPUで処理させてやって早く終わった方だけ結果返して表示させればいいんじゃね?でもそれってリソース分配になってない。。。

.clファイルが一つだけだと思っているからダメなのかもしれない。複数の.clファイルがあったとしてその.clファイルごとに「この.clファイルはCPUで処理するべきだ!この.clファイルはGPUで処理するべきだ!」ってなれば十分研究の価値はあるはず。.clファイルがいくつもあるプログラムってあるよね?.clファイルって結局計算してホストプログラムに結果返すんだから、.clファイルは十分機能ごとにわける可能性はあるよね。。。

今人に聞いたら単純に並列化すれば良いって話になった。適材適所って言うことを考えるんじゃなくて、少しでも高速化すれば良い。GPUがしてる処理をほんの少しでもCPUが負担してあげればそれはちゃんとした研究になる。そのためには、入力データを単純に分割する。その割合は少し考えなければいけない。ん?でもその割合って計算量によって変わる?そこらへんも考えなくちゃいけない。最初は単純にデータ量をデバイス数で割って割り当てれば良いか。

とりあえず今やらなければならないこと。CPUとGPUの並列化をできるようにする。非同期コマンドキュー。タスク並列化かデータ並列どっちが良いか考え、データの割り方を考える。色々試してみて、簡単でもいいから早いアルゴリズムを構築する。以上。

ヾ(*`Д´*)ノ”

ライブラリ作成

ライブラリ作成途中経過。とりあえずやり方だけ。

$ g++ -g -Wall -fPIC -c test.c
$ g++ -shared -o lib.so test.o
$ g++ -o main main.c ./lib.so
$ ./main

以下オプションの説明。

-Wall
すべての警告を出す

-fPIC
このオプションがターゲットマシンでサポートされていれば、位置独立なコードを出力します。このオプションはダイナミックリンクに適しており、分岐において大きなディスプレースメントを要求する場合にも適応します

-shared
他のオブジェクトとリンクして実行可能プログラムを形成し得る共有オブジェクトを生成します。ごく少数のシステムでのみ、このオプションはサポートされています。

libxxx.so(xxxがライブラリ名)
共有ファイルとは、プログラムが実行するときに呼び出す。そのため、静的ライブラリに比べ実行速度が遅くなる。しかし、その反面、以下のようなメリット、特長がある。

OpenCLで使い時は、1行目と3行目に-lOpenCLのオプションを追加する。

なんか色々書いたけど上のやり方じゃなくても、コンちゃんいわくそんな面倒いことしなくても1行でいけるらしい。。。

$ g++ test.c main.c -o main -lOpenCL
$ ./main

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
そんで、Makefileも少し勉強して簡単なやつだけど作ってみた。

main: main.cpp lib.so
      g++ -o main main.cpp ./lib.so -lOpenCL
lib.so: api.o
        g++ -shared -o lib.so api.o
api.o: api.cpp
       g++ -g -Wall -fPIC -c api.cpp -lOpenCL
clean:; rm main *.o *.lib

参考URL
http://blog.livedoor.jp/ha_yshr/archives/51793675.html
http://blog.livedoor.jp/vavacco/archives/665039.html
http://www.am.sanken.osaka-u.ac.jp/~mukaigaw/misc/Makefile.html

トリプルブート

時間がないので超速で書く。
Windows8が発売されたこともあり、自分のノートパソコンのOSを入れ替えた。

windows8とLinuxMintとCentOS。
綺麗なブーストの仕方ではない気がするけど、一応動いているのでここまでの流れの備忘録。

最初にLinuxMintをインストール
次にCentOSインストール
Windows8インストール

基本的にはそのままだが、パーティションだけ分けた。
LinuxMint 30G
CentOS 30G
Windows8 200G
ハードディスク上のパーティションもまさしくこの順番。ブートローダ系の知識が全くなく、途中MintやCentが起動できなくなったけど「grub4dos」を利用するという方法にぶつかった。

普通はWindowsを最初にインストールしてWindowsのブートローダの上にLinuxのブートローダのGRUBに書き換えるとスムーズらしいけど、

Grub4dosを使うとWindowsのブートローダにGrub4dosのブートローダを読みこませることができる。
Grub4dosのブートローダを編集してあげてLinuxを呼ぼうって話。

今の状態
Windows8ブートローダ→「Windows8」「Linux」→「Linux」選択→Grub4dos起動→Linux「LinuxMint」「CentOS」

引っかかったのは、Windows8入れたあとに
●Grub4dos入れる
●Linuxのブートローダの「Menu.lst」編集

●Grub4dosを入れる
Grub4dosの入れ方はググればいろんなとこで出てくる。
1. grub4dosをダウンロードしたら、grldrとgrldr.mbrをC:にコピー。
2. Windowsのブートメニューをいじるためにはコマンドラインからでなければならないので、管理者モードでコマンドプロンプトを開く。
3. 次のコマンドでLinuxを追加。

$ bcdesit
$ bcdedit /create /d "Linux" /application bootsector
エントリ {xxxx} は正常に作成されました。
$ bcdedit /set {xxxx} device partition=C:
$ bcdedit /set {xxxx} path grldr.mbr
$ bcdedit /displayorder {xxxx} /addlast

こんな感じ。{xxxx}はめちゃ長いけど写す。

●Linuxのブートローダの「Menu.lst」編集
ぼくの場合、CentOSをあとから入れたのでLinuxのブートローダはCentOSにある。Grub4dosでLinuxに入ったら、CentOSに入り、Menu.lstを編集する。(Mint入れたあとにCent入れたら自動的にデュアルになると思ってたんだけど結局なってなくて、ここでその設定をした。ここではまだMintはでてなかった。)
ここで入れないと少しめんどくさい。

<Grub4dosからLinuxに入れなかった場合>
Windows8のブートローダでGrub4dosに入り、そこからLinuxを選択したいわけだが、入れなかった場合、Grub4dos起動したあとすぐに矢印キー連打してCommandモード的な奴に入り、直接MintかCentを起動する。
よく分かんないけどこんな感じでLinuxMintを起動できた。

grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
 
grub> kernel /boot/vmlinuz-3.2.0-23-generic root=/dev/sda1
[Linux-bzImage, Setup=0x4200, size=0x4b81d0]

grub> initrd /boot/initrd.img-3.2.0-23-generic
[Linux-inited @ 0x7f279000, 0xd85e6b bytes]

grub> boot

変えなくちゃいけないのは、最初のroot(hd0,0)と、kernelって売った行の最後のsda1ってとこ。hd0って言うのはハードディスクの構成で一枚目だからhd0、二枚目ならhd1的な。そんで(hd0,0)の二個目の0はパーティションの順番を指している。ぼくの場合一番最初にMintを入れたから0、次に入れたCentを指定するときには(hd0,1)を指定する。
次にsda1っていうのはよくわからんけど、一番最初は1始まりだから1らしい。
ぼくの場合、Mintはsda1, Centはsda2っぽい。
こんな感じでLinuxどっちでもいいけど起動する。ここまでがLinuxに入れなかった場合。

そんで次にやっと「Menu.lst」を編集する作業に入る。
LinuxのブートローダのMenuを編集するんだが、まずそのファイルがどこにあるかを探す。
ぼくの場合、CentOSの「/boot/grub/menu.lst」にあった。これをvimで編集した奴がこれ。

[root@s-kotake]# cat menu.lst
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,1)
#          kernel /boot/vmlinuz-version ro root=/dev/sda2
#          initrd /boot/initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
hiddenmenu
title Linux Mint
        root (hd0,0)
        kernel /boot/vmlinuz-3.2.0-23-generic ro root=/dev/sda1
        initrd /boot/initrd.img-3.2.0-23-generic

title CentOS (2.6.32-279.11.1.el6.x86_64)
        root (hd0,1)
        kernel /boot/vmlinuz-2.6.32-279.11.1.el6.x86_64 ro root=UUID=79c217e1-c0f2-4d85-b942-561fd6cef379 rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=128M LANG=ja_JP.UTF-8 rd_NO_LVM rd_NO_DM rhgb
        initrd /boot/initramfs-2.6.32-279.11.1.el6.x86_64.img

title CentOS (2.6.32-279.el6.x86_64)
        root (hd0,1)
        kernel /boot/vmlinuz-2.6.32-279.el6.x86_64 ro root=UUID=79c217e1-c0f2-4d85-b942-561fd6cef379 rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=128M LANG=ja_JP.UTF-8 rd_NO_LVM rd_NO_DM rhgb
        initrd /boot/initramfs-2.6.32-279.el6.x86_64.img

って感じ。今のところこれで何とかトリプルブートができてる良い感じ良い感じ。

Windows8のブートのところがおしゃれ。

ブログサーバー構築の備忘録

前の投稿で、ブログサーバーがローカルで動くところまで行ったので、今度はそれをグローバルで公開して、インターネットを通じてどこからでもアクセスできるようにした備忘録。

自分の自宅サーバをインターネットに公開するためにはドメインとグローバルIPが必要(厳密に言うとドメインは必要ない)
マンション等でインターネット契約している場合、大元でグローバルIPを割り振ってもらえていなかったり、ポートを開放してもらえてなかったりする。如何せん、ぼくの家はマンションのため、まずはグローバルIPがとれているかとHTTPのポート80が開いているか調べる必要がある。

まずグローバルIPがとれているか調べる
ぼくの場合ルータの設定画面で確認することができた。IPアドレスが192.***.***.**的な感じで始まるものでなく、128.***.***.**的な訳のわからないIPになっていたら、そのルータにはグローバルIPが割り当てられる。もしわからなければルータを介さずに直接モデムからLANケーブルをパソコンに差し込んで、コマンドプロンプトやIPアドレスを表示してくれるサイト等で確認すれば良い。

次にポートが開いているか調べる。
まず、ポートが開いているか調べる前に、ルータを利用している場合、ルータでポートが開いているかを確かめよう。そしてもし開けていないならば、HTTPのポート80を開けるように設定する。それを行った上でポートが開いているか調べる。方法はコマンドプロンプトやポートが開いているか確かめるサイトがある。参考確認してポート80が空いていれば成功!!!インターネット公開できるぞ!ついでに外でも作業ができるようにsshのポート80も開けておけばputty等でサーバーにアクセスできる。

ここまできたらもうなんの心配もない。あとはダイナミックDNSを取得するだけ。ダイナミックDNSについても少しややこしいかも知れないが、簡単に説明すると、グローバルIPっていうのインターネットに接続する際、毎回変わってしまうものだから、サーバーみたいなIP変わって困る場合に役に立つ。仕組みはサーバーはいつもIPが違うのでドメインと毎回変わるIPを紐付けて定期的に更新すれば、ドメインにアクセスするだけで自動的に今サーバーに割り当てられているIPを取得することができるって感じ。それがダイナミックDNSってやつ。ダイナミック=動的ってこと。

ダイナミックDNSを利用するためには、どっかのサービスに登録しなければならない。このサービスをやってるところはいろいろあるから「ダイナミックDNS」で調べてみるといい。無料で使えるところもあるみたい。ぼくはDynDNSってところ。年2000円くらい。登録したら、ドメインを作成する。好きなドメイン名をつけれる。そしていまのIPアドレスを入力する。それでダイナミックDNSの設定は終了。今度はルータの設定にはいる。ルータの設定を開いてDDNSってところを探す。するとルータによってはDynDNSが簡単に使えるようになっているので、これを利用する。アカウント名とパスワードを入力して更新頻度を指定すれば、簡単に設定できる。もしルータにそーいう機能がなかったらサーバ側にドメイン名とIPアドレスを自動的に定期的に更新するように設定しなければならない。

一応これでグローバル公開は完了。おつかれっしたー。

ローカルからアクセスできない原因

自宅にサーバーを立てて、このブログを公開しているわけであるが、使っていて1つ問題が、、、

ローカルネットワークからアクセス出来ない。。。
外からならアクセスできるのに、中からだとアクセス出来ない。

具体的には、ローカル内のパソコンからローカルIPを指定すればつながるが、グローバルIPまたドメインを指定するとつながらない。
ただローカルIPを指定して繋がった場合もブログ内の画像ファイルやサーバー内のリンク等にはアクセス出来ないため、ブログの投稿すらできないのだ!!!!これは面倒!サーバーを立てている自宅からはブログの投稿ができない!くそっくそ!

ローカルからアクセス出来ないのは、当たり前のことだったっぽい。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=23242&forum=10

NATの原理を理解していれば分かるらしいが、よくわからん。まだまだ勉強が必要。

なんだかんだで公開プロキシをかましたらできた。プロキシも学校のクソなイメージがあったけど、プロキシっていうのは本来おれも思っていたものとは違うっぽい。今日はこれまで。

ブログサーバー構築の備忘録

勉強がてらブログサーバーを立ち上げることにした。まだローカルでしか動かないけど、近いうちに自分でサーバーを公開できるようにしたいと思っている。

日経Linux2012.7月号を参考に作成。
とりあえず、ローカルで動かすまでの備忘録。

1.まずパソコンにubuntusever12.04LSTをインストール
ここは普通にEnter連打でOK

2.文字化けを治す
インストールが終わったらアカウントにログインする。文字化けをしてるから

$ LANG=C nano ~/.bashrc

と実行。そしてファイルの一番最後に

case $TERM in
linux)LANG=C ;;
*)LANG=ja_JP.utf8 ;;
esac

と入力保存。ログインし直すと文字化けが治っているはず。

3.ネットワークの設定
無線LAN設定はできなかったorz
プロキシを通している場合、さっきのバッシュファイルを開き

export http_proxy="アドレス:ポート番号"

と入力する。その後設定を更新するために$ source ~/.bashrcを実行。
またサーバーを構築する前にはファイアウォールを切っておいたほうが良いらしい。

$ sudo ufw disable

でファイアウォール設定をOFFに。ちなみに

$ sudo ufw status

で設定を確認できる。

4.最新状態に更新
ネットワーク設定が終わりインターネットに繋がったら、OSのアップデートをする。

$sudo apt-get update
$sudo apt-get upgrade

これで完了。

5.apacheとSQLをインストール

$sudo apt-get install apache2
$sudo apt-get install mysql-server

wordpressはphpで動くためphpとその関連モジュールもインストール

$sudo apt-get install php5 php5-mysql php5-gd

6.apacheとSQLの設定
●apache
/etc/apache2/apache2.conf

73行目 Keepalive On

に変更。
/etc/apache2/sites-available/default

2行目 ServerAdmin メールアドレス
3行目 ServerName webサーバーのホスト名:サービスポート番号

に変更。
●MySQL

44行目 skip-external-locking
45行目 skip-name-resolve
46行目 log

を追記。
☆2つのサービスを起動する。

$ apachectl configtest
$ service apache2 start
$ service mysql start
$ mysqladmin -u root password 新しいパスワード

7.Wordpressのインストール

$ sudo apt-get install unzip wget
$ wget http://ja.wordpress.org/wordpress-3.4.1-ja.zip
$ unzip -d /var/www/ wordpress-3.4.1-ja.zip

オーナーの変更

$ sudo chown apache2 /var/www/wordpress
$ sudo chown -R apache2 /var/www/wordpress/wp-content

8.データベースの用意

$ sudo mysql -uroot -p
mysql> CREATE DATABASE wordpress CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO username@localhost IDENTIFIED BY 'パスワード';
mysql> FLUSH PRIVILEGES;
mysql> quit;

9.アクセス権の設定

$ chown apache2 /var/www/wordpress
$ chmod 775 /var/www/wordpress

10.wordpress初期設定
他のパソコンから「http://サーバのアドレス/wordpress」にアクセスする。
このとき注意することがローカルでアクセスしてしまうとwordpressが自動でそのローカルアドレスに設定しまうので、必ずグローバルなアドレスでアクセスする。

ユーザー名はおそらくroot、パスワードは8.で設定したパスワード。

以上でサーバー構築は完了。

ここからはAmebloからWordpressへ記事を移行する手続き。
方法はいくつかあるらしいが、ここではFC2ブログを利用して記事を移行する

11.FC2ブログに登録
サイトに行って普通に登録する

12.ログインしてブログ開設するときにAmebloからの移行を選択する
ブログの詳細情報を決める初期設定みたいなところで以前のブログを引きつぐってやつAmebloからの引越しツールが使える。

13.amebloのユーザ名とパスワードを入力し引越し完了メールを待つ。
僕の場合は、2時間くらいでした。

14.引越し完了したら、FC2ブログにログインしてバックアップファイルをダウンロードする。

15.インポート・プラグインを導入しようとしたら、FTP接続情報を求められてしまった
wp-config.phpにつぎの記述をする。

define(‘FS_METHOD’, ‘direct’);

そしてつぎに更新用(?)のディレクトリが必要になるので「wp-content/upgrade」を作成、パーミッションを書き込み可に変更。
同様に「wp-content/themes」と「wp-content/plugins」にも書き込み許可を与える。

$ mkdir wp-content/upgrade
$ chmod 0707 wp-content/upgrade
$ chmod 0707 wp-content/themes
$ chmod 0707 wp-content/plugins

参考http://xoops123.com/modules/wordpress/?p=215