Monthly Archives: 5月 2014

Cocos2d-jsを試してみた(秋葉原Cocos2d-html5もくもく勉強会#4 にて)

4連休の初日は、秋葉原Cocos2d-html5もくもく勉強会#4 に参加してきました。

秋葉原Cocos2d-html5もくもく勉強会#4 - connpass

参加経緯

僕はCocos2dもゲームプログラミングも業務経験がないド初心者ですが、実は、昔、学生の頃は僕もガラケー向けの落ち物パズルゲームを作ったり、ちょっと特殊なブロック崩しを作ったりしていました。せっかくだから、その頃の作品を最近のスマートフォンに移植したいと思いつつ、仕事が忙しいことを言い訳にしてなかなかできずにいました。

そんな中で、ちょうどこのイベントがGW中に開催されることを知って申し込みました。初参加です!

Cocos2d-js *1とは

Cocos2d(Cocos2d-x)主にモバイル向けのクロスプラットフォーム2Dゲーム作成ライブラリで、C++で開発することを基本としています*2。(http://www.cocos2d-x.org

Cocos2d-jsは、Cocos2d-xのJavaScriptバインディング機能を利用して、同様のコードがWebブラウザ上で動作するようにしたライブラリです。言語はJavaScript†使います。Webブラウザとエディタさえあれば開発環境はが揃うので、非常に取っ付き易いライブラリです。

しかも、Chromeなどの最近のブラウザではネイティブとも遜色ないほど軽快な動きをするらしいです。Webビューに貼付ければそのままスマホアプリにできるとか。もっとも、端末の性能を最大限に活用するなら、Cocos2d-xでネイティブにコンパイルした方が良いらしく、その方法もあるようです。*3

Cocos2d-JS | Cocos2d-xにサンプルプログラムが公開されています。

これなら、JavaScriptなどのWebの知識を活用できるので、僕でも取っ付きやすそうです!

勉強会の様子

会場は株式会社あゆたさんの開発室です。以前、お茶の水の方に開発室があったときに別の勉強会でお邪魔したことがありましたが、岩本町のビルに移転していました。きれいな会場のご提供ありがとうございます。

自分は12時15分頃到着しましたが、既に2名の方が無言でカタカタしていました。 参加者が全員集まったところで、自己紹介と今日やる内容を発表し、最後にみんなでできたことを発表するというスケジュールで、あとは皆一言もしゃべらずひたすら黙々していました。

こういう雰囲気だと、集中できて良いですね!

自分がやったこと

下記のebookがAmazonで販売されていたので、購入してひたすら頭から写経していました。(500円!安い!)

Cocos2d-html5ではじめるモバイルゲーム開発

Cocos2d-html5ではじめるモバイルゲーム開発

書いたプログラムの内容はこのebookを読めば良いわけですから、ここでは紹介しません。(笑)

本の感想

本職の方々の意見はどうなのか分かりませんが、この本は説明も易しく、ゲーム開発者の気持ちも伝わって来て、良い本だと思います。自分は少しばかりゲーム開発の素地があったからかもしれないので、全くの初心者だとどういう感想があるかは分かりませんが、少なくとも僕はこの本一冊で入門は良さそうで、あとは公式ドキュメントやWebの情報でなんとかなると思いました。

やってみた感想

学生の頃すこしDelphiやC#でゲームを作ったりしてた経験に照らし合わせると、ハード面もずいぶん進化しているのか、ライブラリが良いのか、昔「これはダメ」と言われたやり方が全然大丈夫になっていて驚きました。

例えば、Delphiでもラベル(TLabel)をフォーム(TForm)に貼り付けて、ラベルのLeft, Topプロパティをタイマー(TTimer)で動かせば文字を動かすことができますが、そんなことをするとチラつくし、滑らかじゃなかったので、そうではなくて、1フレーム1/60秒になるように処理落ちを考慮しながら計算しながら、毎フレーム画面を再描画し、それも、都度描画するとチラつくから、裏で描画させたものをまとめてコピーして。。。(ry

このebookでは、宇宙船を操作して敵から避けるゲームを作っていくのですが、いきなり、ラベルをたくさん作って配列に入れたりするんですね。敵の動きはラベルの座標を動かす感じです。あと、フレームの計算とかも自分でしないで、60fpsなら60fpsと設定するだけであとは、update関数に処理を書くだけなんですね!ゲーム作りの最初数日を消費した苦労が。。。。*4

そもそも、言語がJavaScriptってのが楽すぎます!配列は事実上、メモリの管理とかもないしいいですねえ。。。

JavaScriptを書くのに良いエディタは?

JavaScript開発の環境として、以前このブログで下記のような記事を書きました。 EclipseのJavaScript環境(JSDT)を快適に使う方法 - susumuis Info

このときは、ExtJSというRIAライブラリを使おうとして環境を構築していたのですが、ExtJSとCocos2d-jsの共通点として、非常に巨大なJavaScriptライブラリをロードするというところがあります。従って、このライブラリを開発環境のライブラリパスに含めてしまうと、コード補完に数秒という、非常に残念な環境になってしまいます。なので、今回も、Cocos2d-js関連のライブラリは外してしまいました。プロジェクトのプロパティ画面から、下記のキャプチャのようにして、Cocos2d-html5-v2.2.3.min.jsを外しています。

f:id:s-ishigami:20140504180810p:plain

これで、かろうじて開発できるようになったのですが、これはこれで、残念な開発環境でした。Cocos2d-jsのコードの特性上、ほとんど補完が利きません!例えば、次のようなコードを書くのですが

var Result = cc.Layer.extend({
    init: function() {
        this._super();
        var size = cc.Director.getInstance().getWinSize();
        // 省略
        return true;
    }
    , onTouchesBegan: function(touches, event) {}
    , onTouchesMoves: function(touches, event) {}
    , onTouchesEnded: function(touches, event) {}
    , onTouchesCancelled: function(touches, event) {}
});
var ResultScene = cc.Scene.extend({
    onEnter: function() {
        this._super();
        var layer = new Result();
        layer.init();
        this.addChild(layer);
    }
});

cc.Layer.extendみたいにして、継承を表現してしまうため、ResultSceneの定義の側でnew Result()とか、layer.init()が全く補完できません。これなら、テキストエディタによる語句補完の方がマシです。

ということで、最終的に僕が選んだのはAtomです。

Atom

別に、Web業界で大人気のSublime Textでも良かったんですが、JavaScript書くなら相性が良さそうな気もしますし、今後活用して行こうと思います。

f:id:s-ishigami:20140504181726p:plain

会場にいた人にどんなエディタ使っているのか聞いたところ、IntelliJを使っているとか。。。。それは最強ですね。w;

しょっぱなcocos2d-xサイトが落ちてたので、GitHubからライブラリをダウンロードしてサンプルを実行しました

たまたま http://www.cocos2d-x.org/ が一時的に落ちてました。(すぐに復旧しました)

早速、ライブラリをダウンロードして、サンプルを実行しようとした時にこうだったので、「僕は何をしたら良いんだ」状態になってしまったので、githubからソースを落としたりしてみました。

READMEに従って

$ git clone git://github.com/cocos2d/cocos2d-html5.git
$ cd cocos2d-html5/
$ git submodule update --init
$ python -m SimpleHTTPServer

とやりましたが、なぜか、http://localhost:8000/にアクセスしてもページがありません。 どうたら現在のdevelopブランチには、デモ用のindex.htmlとかがないようです。そこで下記のようにして、2.xブランチに切り替えたところ、サンプルのindex.htmlもダウンロードされてきました。

$ git branch -a
* develop
remotes/origin/HEAD -> origin/develop
remotes/origin/NPM
remotes/origin/develop
remotes/origin/gh-pages
remotes/origin/master
remotes/origin/v2.x
$ git checkout -b v2.x origin/v2.x
$ python -m SimpleHTTPServer

ただ、本の中で紹介されているライブラリソースを一個のjsファイルにコンパクションしたCocos2d-html5-v2.2.3.min.jsは含まれていませんでした。これは自分で生成できるのでしょうけど、そうこうするうちに、公式サイトが復活したので、普通に http://cocos2d-x.org/download から落としちゃいました。

ゲーム作ってみようかなあ

ゲームプログラミングには疎いのですが、思ったよりも短時間でゲームを作れることが分かりましたし、昔作ったブロック崩しゲームのようなゲームは簡単に実装できそうです。

昔はゲームプログラミングを勉強しようとすると、C言語でHello, Worldから入って、慣れて来たら、Windows SDKでウィンドウを作るだけのコードを書くのに何百行も書いて*5、Microsoftのヘルプファイルと格闘し、慣れて来たらDirect Xに挑戦して。。。という道を歩まなければならなかったので、今は良い時代になったなあと思います。

ゲームを作って利益を得ようとすると非常に大変な世界と聞きますが、趣味の範囲でちょっとした表現として、ゲームを作るというのは楽しいです。「なんか思いついちゃったんで、一晩でこんなクソゲー作っちゃったーwww」なんてのを繰り返してたら、思ったより楽しいゲームができてしまったとか、そういうの良いですよね!

ピアノなんかと同じです。プロになろうとすると大変ですが、趣味でゲームプログラミングをする。へたくそで良いんです。楽しめれば。

*1:先日Cocos2d-html5から名前が変わりました

*2:正確にはiPhone用のCocos2d-iPhoneってのがオリジナルで、Objective-C用みたいで、それをC++に移植してクロスプラットフォームにしたのがCocos2d-xです。その他Go言語やC#への移植版も存在するようです。

*3:後述のeBook曰く「二階から目薬(iPhone)」「三階から目薬(Android)」というようですがw

*4:当時でも僕がDelphi使いだからいいもので、C++使いの人たちはWindows SDKでまずフォームを出すところから苦労が

*5:しかも大体動かねーとかいって苦しむんですよね


Google Cloud Platform に Google Compute Engine を構築して、WordPressを動かすまで(その3 – wordpressらしきものが動いた!)

前回: Google Cloud Platform に Google Compute Engine を構築して、Wordpressを動かすまで(その2 - LAMP環境の構築) - susumuis Info

GCE上に構築したDebian LAMP環境にwordpressをインストール

さて、前回までで、wordpressをインストールする前の役者は揃ったわけですが、 wordpress自体を次のどちらから取ってくるかという問題があります。

  • Debianのpackage
  • wordpressのサイトから最新

よく、後者でインストールしている記事をよく見かけますし、その方が最新も手に入るし簡単と聞きますが、 セキュリティのパッチとかが出たら常に追いかけなければなりません。その点、package版なら、 aptでupgradeするだけで、セキュリティパッチが当たりますので、とりあえず、 今回は最新を追いかけないでセキュリティはdebianに任せる方法を採用してみます。

susumuis@instance-1:~/public_html$ sudo aptitude install wordpress
以下の新規パッケージがインストールされます:
fontconfig-config{a} javascript-common{a} libfontconfig1{a} libgd2-xpm{ab} libjs-cropper{a} libjs-prototype{a} libjs-scriptaculous{a}
libphp-phpmailer{a} libphp-snoopy{a} libx11-6{a} libx11-data{a} libxau6{a} libxcb1{a} libxdmcp6{a} libxpm4{a} php5-gd{a} tinymce{a} ttf-dejavu-core{a}
wordpress wordpress-l10n{a} wwwconfig-common{a}
更新: 0 個、新規インストール: 21 個、削除: 0 個、保留: 3 個。
11.0 M バイトのアーカイブを取得する必要があります。展開後に 53.1 M バイトのディスク領域が新たに消費されます。
以下のパッケージには満たされていない依存関係があります:
libgd2-xpm : 競合: libgd2[仮想パッケージです]
競合: libgd2-noxpm [2.0.36~rc1~dfsg-6.1 が既にインストール済みです]
libgd2-noxpm : 競合: libgd2[仮想パッケージです]
競合: libgd2-xpm [2.0.36~rc1~dfsg-6.1 がインストール予定となっています]
以下のアクションでこれらの依存関係の問題は解決されます:
以下のパッケージを削除する:
1)     libgd2-noxpm
この解決方法を受け入れますか? [Y/n/q/?]Y
以下の新規パッケージがインストールされます:
fontconfig-config{a} javascript-common{a} libfontconfig1{a} libgd2-xpm{a} libjs-cropper{a} libjs-prototype{a} libjs-scriptaculous{a}
libphp-phpmailer{a} libphp-snoopy{a} libx11-6{a} libx11-data{a} libxau6{a} libxcb1{a} libxdmcp6{a} libxpm4{a} php5-gd{a} tinymce{a} ttf-dejavu-core{a}
wordpress wordpress-l10n{a} wwwconfig-common{a}
以下のパッケージが削除されます:
libgd2-noxpm{a}
更新: 0 個、新規インストール: 21 個、削除: 1 個、保留: 3 個。
11.0 M バイトのアーカイブを取得する必要があります。展開後に 52.5 M バイトのディスク領域が新たに消費されます。
先に進みますか? [Y/n/?] Y

なんか入りました。ただ、これだけではまだwordpressは動きません。結構ここで挫折する人がいるとか。。。

まず、以下の場所にドキュメントがあるので読んでみます。

susumuis@instance-1:~/public_html$ cd /usr/share/doc/wordpress
susumuis@instance-1:/usr/share/doc/wordpress$ ls
NEWS.Debian.gz  README.Debian  TODO.Debian  changelog.Debian.gz  copyright  examples
susumuis@instance-1:/usr/share/doc/wordpress$ cat README.Debian 

うん、英語。。。僕による超要約によると

  • apacheのルートを usr/share/wordpress に向けろ (examples/apache.confを見よ!)
  • examples/setup-mysql を使えば database と filesystem のセットアップが終わるぜ。/srv/wwwにあるファイルがインストールされることに注意
  • WordPress 設定ファイルについて
  • wp-config.php は実体として /etc/wordpress/config-$HOST.php または /etc/wordpress/config-$DOMAIN.php を読み込むよ!
  • もしそれらが存在しない場合は 404 を返す
  • 複数ブログをやるときは ... (今回は読んでない)
  • もっと知りたければ /usr/share/wordpress/wp-config-sample.phphttp://codex.wordpress.org/Editing_wp-config.php を見てね!
  • プラグインとかテーマーとかの管理について

以降色々書いてあるけど、とりあえず動かすにはとにかく設定ファイルを作ってしまえば良さそう。なのでやってみます!

susumuis@instance-1:/usr/share/doc/wordpress$ cd examples
susumuis@instance-1:/usr/share/doc/wordpress/examples$ sudo gunzip setup-mysql.gz
susumuis@instance-1:/usr/share/doc/wordpress/examples$ ls -la
合計 20
drwxr-xr-x 2 root root 4096  4月 25 11:36 .
drwxr-xr-x 3 root root 4096  4月 25 11:34 ..
-rw-r--r-- 1 root root 2076  9月 13  2013 apache.conf
-rw-r--r-- 1 root root 5015  9月 13  2013 setup-mysql
susumuis@instance-1:/usr/share/doc/wordpress/examples$ sudo bash setup-mysql -n wordpress localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.029 ms
--- localhost ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.029/0.029/0.029/0.000 ms
/etc/wordpress/config-localhost.php written
Trying to create wp-content directory: /srv/www/wp-content/localhost
Setting up permissions
Goto http://localhost to setup WordPress

こんな感じでしょうか?ここまで来るのに相当エラーでまくったので、もう、当てずっぽうで、やっとコマンドが通った状態です。 いずれ本番環境作るときはこうではいけないです。

examples/apache.confを見よというので見てみます。

susumuis@instance-1:/usr/share/doc/wordpress/examples$ cat apache.conf
There are several ways to setup WordPress & Apache in Debian. However the
maintainer's recommended way with the helper script `setup-mysql` uses:
以下続く

うわあ。また英語!!>< とりあえず、setup-mysqlスクリプトは使ったので、一番簡単そうな、

## Virtual host VirtualDocumentRoot

以下の設定を参考にしてみます。 ガイドに従ってrewrite, vhost_alias もし有効にしてみます。

susumuis@instance-1:/etc/apache2/sites-enabled$ sudo a2enmod rewrite
susumuis@instance-1:/etc/apache2/sites-enabled$ sudo a2enmod vhost_alias
susumuis@instance-1:/etc/apache2/sites-enabled$ sudo /etc/init.d/apache2 restart

ハマりどころとして、ワンライナーの a2enmod rewrite && a2enmod vhost_alias && /etc/init.d/apache2 restart をそのまま貼り付けてもダメです。それぞれsudoをつけるか、suでルートになって置かなければなりません。

そして、こんな感じにしました。

susumuis@instance-1:~$ cd /etc/apache2/sites-available
susumuis@instance-1:/etc/apache2/sites-available$ sudo vi localhost
<VirtualHost *:80>
UseCanonicalName Off
ServerName 107.***.***.***
VirtualDocumentRoot /usr/share/wordpress
Options All
# wp-content in /srv/www/wp-content/$0
RewriteEngine On
RewriteRule ^/wp-content/(.*)$ /srv/www/wp-content/%{HTTP_HOST}/$1
</VirtualHost>

ServerNameのところを本当はドメインと紐付けたりしたほうがよいでしょう。 とりあえず、今は手っ取り早くIPに紐付けちゃいました。..***のところは本物のIPを入れてます。

susumuis@instance-1:/etc/apache2/sites-available$ sudo a2ensite localhost
Enabling site localhost.
To activate the new configuration, you need to run:
service apache2 reload
susumuis@instance-1:/etc/apache2/sites-available$ sudo service apache2 reload
[FAIL] Reloading web server config: apache2 failed!

あれ、リロードできなくなっちまった。ならばログをみませう。

susumuis@instance-1:/etc/apache2/sites-enabled$ vi /var/log/apache2/error.log

そしたら

PHP Warning:  require_once(/etc/wordpress/config-107.***.***.php): failed to open stream: Permission denied in /usr/share/wordpress/wp-config.php on line 22

とか

PHP Fatal error:  require_once(): Failed opening required '/etc/wordpress/config-***.***.***.php' (include_path='.:/usr/share/php:/usr/share/pear') in /usr/share/wordpress/wp-config.php on line 22

とか書いてある!それなら、(このあたりから大分適当になってきています。すみません)

susumuis@instance-1:/etc/apache2/sites-available$ cd /etc/wordpress/
susumuis@instance-1:/etc/wordpress$ sudo cp config-localhost.php config-***.***.***.php
susumuis@instance-1:/etc/wordpress$ sudo chown www-data config-***.***.***.php
susumuis@instance-1:/etc/wordpress$ cd /usr/share/wordpress/
susumuis@instance-1:/usr/share/wordpress$ sudo chown www-data . -R

これでどやー!!

f:id:s-ishigami:20140502215521p:plain

なんか動きました。うわースタイルシートとかあたってなくて全然ガタガタですね。でもこれは確かにwordpressです!

ログがここで切れてるので、ここでおしまいです。 ということで、えらいはまりながらも、なんとかGCE上にwordpressを動かすことが出来ました。手順がわかったので今度はもう少しちゃんとやり直して見たく思います。

ここまで長い間お付き合いいただき有難うございました。

蛇足、このエントリはAtomで書きました

このエントリの原稿はベータテスト中のAtomエディタでmarkdown記法を使って書いてみました。 Atomエディタはmarkdownをリアルタイムプレビューしながら記述できて便利です。 まだ日本語の扱いなど難点がありますが、エディタとしては結構使い物になるように思います。これからも使ってみようと思います。


Google Cloud Platform に Google Compute Engine を構築して、WordPressを動かすまで(その2 – LAMP環境の構築)

前回 : Google Cloud Platform に Google Compute Engine を構築して、Wordpressを動かすまで(その1 - instance に SSHで接続するまで) - susumuis Info

それでは、昨日に引き続き、ビギナーの記録的日記を書きます。

GCE上のDebianにWordPressをインストール

ところで、MacでSSH使ってると、Broken Pipeでしょっちゅう切れませんか? そんな時はSSH接続前に、Macのターミナルで、あああああ下記の設定を入れましょう。

ishigami-air:~ susumuis$ vim .ssh/config
ServerAliveInterval 15

ではDebianということで、aptを更新しましょう。

susumuis@instance-1:~$ sudo aptitude update
susumuis@instance-1:~$ sudo aptitude safe-upgrade

さて、LAMP環境をインストールしましょう。Ubuntuだったらここで、taskselで一発でしたね。 ということで、

susumuis@instance-1:~$ sudo aptitude tasksel

すると、下記の警告が。。。。

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "ja_JP.UTF-8"
are supported and installed on your system.

さきに、日本語環境をインストールしましょう。

susumuis@instance-1:~$ sudo dpkg-reconfigure locales

[*] ja_JP.UTF-8 UTF-8 を選びます。

それでは気を取り直して

susumuis@instance-1:~$ sudo aptitude tasksel

すると、期待に反して、

パッケージの設定
┌──────────────────────────────────┤ ソフトウェアの選択 ├──────────────────────────────────┐
│ 以下の定義済みソフトウェアコレクションからインストールするものを 1 つ以上選択できます。  │
│                                                                                          │
│ インストールするソフトウェアの選択:                                                      │
│                                                                                          │
│    [ ] Debian desktop environment                                                        │
│    [*] Web server                                                                        │
│    [ ] Print server                                                                      │
│    [ ] SQL database                                                                      │
│    [ ] DNS Server                                                                        │
│    [ ] File server                                                                       │
│    [ ] Mail server                                                                       │
│    [ ] SSH server                                                                        │
│    [ ] Laptop                                                                            │
│                                                                                          │
│                                                                                          │
│                                          <了解>                                          │
│                                                                                          │
└──────────────────────────────────────────────────────────────────────────────────────────┘ 

UbuntuみたいにLAMP環境みたいな便利なのは出てこないのですね。。。 SQL databaseを選んでも何が入るかわからないので、とりあえず、Web serverだけ入れて、 あとはaptから入れることにします。

<了解>を押して、しばらく待つと処理が終わったようです。本当にapacheが入ったか見てみましょう。

susumuis@instance-1:~$ ls /etc/init.d/
README       checkfs.sh              google                   hostname.sh  mountall-bootclean.sh  mountnfs.sh  rc         rsync     ssh        umountnfs.sh
acpid        checkroot-bootclean.sh  google-accounts-manager  hwclock.sh   mountall.sh            mtab.sh      rc.local   rsyslog   sudo       umountroot
apache2      checkroot.sh            google-address-manager   killprocs    mountdevsubfs.sh       networking   rcS        sendsigs  udev       urandom
bootlogs     cron                    google-startup-scripts   kmod         mountkernfs.sh         ntp          reboot     single    udev-mtab
bootmisc.sh  generate-ssh-hostkeys   halt                     motd         mountnfs-bootclean.sh  procps       rmnologin  skeleton  umountfs

3行目にapache2が入っていますね!再起動してみましょう。

susumuis@instance-1:~$ sudo service apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .

できました!アクセスしてみましょう。そのためには、GCEのfirewallの設定を変更しなければいけません。

Developers Consoleから プロジェクト > プロジェクト名 > Compute Engine > ネットワーク をクリックし、 すべてのネットワーク の下にある default リンクをクリックすると、出てくる画面で、 ファイアウォールルール新規作成 をクリックします。

名前は適当でよいですが "default-http"

ソース範囲は "0.0.0.0/0"

許可対象プロトコル/ポートは "tcp:80"

にしました。

f:id:s-ishigami:20140502215454p:plain

それでは、インスタンスのIPアドレスに対してブラウザからアクセスしてみます。 そうすると、

It works!

と表示されたと思います。ついでですので、本当に動いているか、ちょっと遊んでみましょう。

susumuis@instance-1:~$ sudo vim /var/www/index.html

ここで編集したとおりの内容が反映されると思います。

それでは引き続き、php, mysql(いわゆるLAMP環境)を入れてみます。

susumuis@instance-1:~$ sudo aptitude install mysql-server
以下の新規パッケージがインストールされます:
heirloom-mailx{a} libaio1{a} libdbd-mysql-perl{a} libdbi-perl{a} libhtml-template-perl{a} libmysqlclient18{a} libnet-daemon-perl{a} libplrpc-perl{a}
mysql-client-5.5{a} mysql-common{a} mysql-server mysql-server-5.5{a} mysql-server-core-5.5{a} psmisc{a}
更新: 0 個、新規インストール: 14 個、削除: 0 個、保留: 3 個。
10.2 M バイトのアーカイブを取得する必要があります。展開後に 98.5 M バイトのディスク領域が新たに消費されます。
先に進みますか? [Y/n/?] Y

MySQLのインストール後は、mysql_secure_installationを使うと良いようなので、やってみます。

susumuis@instance-1:~$ mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] n
... skipping.
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] Y
... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Y
... Success!
By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Y
- Dropping test database...
ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist
... Failed!  Not critical, keep moving...
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n]
... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!

こうですか?わかりません>< 本番環境構築するときはもうちょっと深くMySQL勉強したほうが良さそうですね。

次に、PHPを入れてみます。

susumuis@instance-1:~$ sudo aptitude install php5 php-pear php5-mysql
以下の新規パッケージがインストールされます:
apache2-mpm-prefork{ab} libapache2-mod-php5{a} libonig2{a} libqdbm14{a} libxml2{a} php-pear php5 php5-cli{a} php5-common{a} php5-mysql sgml-base{a}
xml-core{a}
更新: 0 個、新規インストール: 12 個、削除: 0 個、保留: 3 個。
7,506 k バイトのアーカイブを取得する必要があります。展開後に 23.4 M バイトのディスク領域が新たに消費されます。
以下のパッケージには満たされていない依存関係があります:
apache2-mpm-worker : 競合: apache2-mpm[仮想パッケージです]
apache2-mpm-prefork : 競合: apache2-mpm[仮想パッケージです]
以下のアクションでこれらの依存関係の問題は解決されます:
以下のパッケージを削除する:
1)     apache2-mpm-worker
この解決方法を受け入れますか? [Y/n/q/?]Y

こんな感じでしょうか。だんだん怪しくなってきたぞ (^^;

不要かもしれないけど、なんとなく、apacheを再起動してみます。

susumuis@instance-1:~$ sudo service apache2 restart

PHPが入ってるか、phpinfoを表示してみます。

susumuis@instance-1:~$ cd /var/www/
susumuis@instance-1:/var/www$ sudo vi test.php

test.phpには

<?php phpinfo() ?>

と書いておきます。ブラウザでhttp://IPアドレス/test.phpにアクセスすると。。。

f:id:s-ishigami:20140504203813p:plain

あ、ちゃんとphpinfoでますね!確認したらphpinfoはさっさと削除してしまいます。

susumuis@instance-1:/var/www$ sudo vi test.php

次にちゃんとmysqlが入ったかどうか遊んでみます。

susumuis@instance-1:/var/www$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 50
Server version: 5.5.35-0+wheezy1 (Debian)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
mysql> create database ishigami;
Query OK, 1 row affected (0.00 sec)
mysql> use ishigami;
Database changed
mysql> show tables;
Empty set (0.00 sec)
mysql> create table ishigami ( id integer primary key, name text );
Query OK, 0 rows affected (0.01 sec)
mysql> show tables;
+--------------------+
| Tables_in_ishigami |
+--------------------+
| ishigami           |
+--------------------+
1 row in set (0.00 sec)
mysql> select * from ishigami;
Empty set (0.00 sec)
mysql> insert into ishigami (id, name) values (1, 'susumu');
Query OK, 1 row affected (0.00 sec)
mysql> select * from ishigami;
+----+--------+
| id | name   |
+----+--------+
|  1 | susumu |
+----+--------+
1 row in set (0.00 sec)
mysql> quit;
Bye

問題なさそうです!

一度、この先も一回のエントリで書いたのですが、長くなったので分割します。 それでは次回に続きます。

次回: Google Cloud Platform に Google Compute Engine を構築して、Wordpressを動かすまで(その3 - wordpressらしきものが動いた!) - susumuis Info