Category Archives: インフラ技術

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

Google Cloud Platform に Google Compute Engine を構築して、WordPressを動かすまで(その1 – instance に SSHで接続するまで)

先日、GCEを使って遊んでみました。 基本的なことですが、自分用のログとして残します。

なお、事前にGoogle Cloud Platformの登録は済んでいてプロジェクト作成済みで、インスタンスも作成済み、さらにgcutilもインストール済みとします。(そこまでの記録は別エントリを書くかもしれませんが、今回は扱いません)*1

gcutil経由でSSH接続をする

まずは gcutil が使えることを確認します。

ishigami-air:Commands susumuis$ gcutil
You do not currently have an active account selected.
Please run:
$ gcloud auth login
to obtain new credentials, or if you have already logged in with a
different account:
$ gcloud config set account <account name>
to select an already authenticated account to use.

バージョンも見てみましょう。

ishigami-air:Commands susumuis$ gcloud --version
Google Cloud SDK 0.9.21
bq 2.0.18
bq-nix 2.0.18
core 2014.04.08
core-nix 2014.04.08
gcutil 1.15.0
gcutil-nix 1.13.0
gsutil 3.42
gsutil-nix 3.42
sql 2014.04.15
There are available updates for some Cloud SDK components.  To
install them, please run:
$ gcloud components update

updateできるというので、早速やってみよう。

ishigami-air:Commands susumuis$ gcloud components update
The following components will be updated:
------------------------------------------------------------------------------
| BigQuery Command Line Tool                           |     2.0.18 | < 1 MB |
| BigQuery Command Line Tool (Platform Specific)       |     2.0.18 | < 1 MB |
| Cloud SDK Core Libraries                             | 2014.04.24 | < 1 MB |
| Cloud SDK Core Libraries (Platform Specific)         | 2014.04.24 | < 1 MB |
| Cloud SQL Admin Command Line Interface               | 2014.04.24 | < 1 MB |
| Cloud Storage Command Line Tool (Platform Specific)  |       3.42 | < 1 MB |
| Compute Engine Command Line Tool (Platform Specific) |     1.15.0 | < 1 MB |
------------------------------------------------------------------------------
The following components will be installed:
----------------------------------------------------------------
| Cloud DNS Admin Command Line Interface | 2014.04.24 | < 1 MB |
----------------------------------------------------------------
Do you want to continue (Y/n)?  Y
Creating update staging area...
Uninstalling: BigQuery Command Line Tool ... Done
Uninstalling: BigQuery Command Line Tool (Platform Specific) ... Done
Uninstalling: Cloud SDK Core Libraries ... Done
Uninstalling: Cloud SDK Core Libraries (Platform Specific) ... Done
Uninstalling: Cloud SQL Admin Command Line Interface ... Done
Uninstalling: Cloud Storage Command Line Tool (Platform Specific) ... Done
Uninstalling: Compute Engine Command Line Tool (Platform Specific) ... Done
Installing: BigQuery Command Line Tool ... Done
Installing: BigQuery Command Line Tool (Platform Specific) ... Done
Installing: Cloud DNS Admin Command Line Interface ... Done
Installing: Cloud SDK Core Libraries ... Done
Installing: Cloud SDK Core Libraries (Platform Specific) ... Done
Installing: Cloud SQL Admin Command Line Interface ... Done
Installing: Cloud Storage Command Line Tool (Platform Specific) ... Done
Installing: Compute Engine Command Line Tool (Platform Specific) ... Done
Creating backup and activating new installation...
Done!

それでは、早速作ったアプリにログインします。

ishigami-air:Commands susumuis$ gcloud auth login
Your browser has been opened to visit:
https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fbigquery+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdevstorage.full_control+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fndev.cloudman+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fsqlservice.admin+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fprediction+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fprojecthosting&redirect_uri=http%3A%2F%2Flocalhost%3A8085%2F&response_type=code&client_id=***********.apps.googleusercontent.com&access_type=offline
You can view your existing projects and create new ones in the Google
Developers Console at: https://console.developers.google.com. If you
have a project ready, you can enter it now.

ここで表示されたURLをクリックするように書いてありますが、僕の環境では、そもそもブラウザが勝手に立ち上がって、認証画面が表示されました。

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

承認すると

You are now authenticated with the Google Cloud SDK.
The authentication flow has completed. You may close this window, or check out the Getting Started Guide for more information.

と表示されます。よく見ると、URLがlocalhostですね。gcutilがWebサーバーを立てているようです。

一方端末側では

Enter your Google Cloud project ID (or leave blank to not set):

と聞かれています。blankでも良いというのですが、僕はとりあえずプロジェクト名である。

API Project

と入れてみます。(これで後でハマります) すると、

You are logged in as ************@gmail.com.
There are available updates for some Cloud SDK components.  To
install them, please run:
$ gcloud components update

これでログイン状態になったようです。それでは、早速コマンドを実行してみましょう。

ishigami-air:Commands susumuis$ gcutil listregions
CommandError: Characters in project name must be lowercase: API Project.

おかしいですね。プロジェクト名は全部lowercaseにしろとか。それで色々調べた結果、"gcloud config set project "でproject IDを変更できるようです。

ishigami-air:~ susumuis$ gcloud config set project 26*********
ishigami-air:~ susumuis$ gcutil listregions
+--------------+--------+----------+----------------+------------------+
| name         | status | cpus     | disks-total-gb | static-addresses |
+--------------+--------+----------+----------------+------------------+
| asia-east1   | UP     | 1.0/24.0 | 10.0/5120.0    | 0.0/7.0          |
+--------------+--------+----------+----------------+------------------+
| europe-west1 | UP     | 0.0/24.0 | 0.0/5120.0     | 0.0/7.0          |
+--------------+--------+----------+----------------+------------------+
| us-central1  | UP     | 0.0/24.0 | 0.0/5120.0     | 0.0/7.0          |
+--------------+--------+----------+----------------+------------------+

やれやれ、やっとできました。早速instance-1にSSHで繋いでみましょう。

ishigami-air:~ susumuis$ gcutil ssh instance-1
INFO: Zone for instance-1 detected as asia-east1-b.
WARNING: You don't have an ssh key for Google Compute Engine. Creating one now...
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

初めての接続なので、SSHの鍵を作るからパスフレーズを入れてくれと言われます。鍵を持ってるクライアントでしかアクセス出来ないようです。 初期状態で鍵認証なのでセキュリティ的には安心ですね! Macだとここで、key chainのダイアログが出てきてパスワードを聞かれます。

Linux instance-1 3.13-0.bpo.1-amd64 #1 SMP Debian 3.13.7-1~bpo70+1 (2014-03-29) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

Debianにログインしていることがわかります。

一度鍵をつくれば、後は普通にssh接続することも可能です。

ssh ユーザー名@IPアドレス

上記同様のメッセージが表示され、Debianに接続されています。

それでは、色々試してみましょう。

susumuis@instance-1:~$ pwd
/home/susumuis
susumuis@instance-1:~$ whoami
susumuis
susumuis@instance-1:~$ df -h
Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                  9.8G  652M  8.6G   7% /
udev                                                     10M     0   10M   0% /dev
tmpfs                                                    60M   80K   60M   1% /run
/dev/disk/by-uuid/3816747c-4543-4118-9797-d429d1554032  9.8G  652M  8.6G   7% /
tmpfs                                                   5.0M     0  5.0M   0% /run/lock
tmpfs                                                   119M     0  119M   0% /run/shm

ルート10GBしかないですね。追加の容量はGoogle Cloud Strageを購入してマウントすると良いでしょう。 引き続き、ここにLAMP環境を構築して、Wordpressを動かした手順を紹介したいと思います。 もっとも、ここから先は、どの環境でやってもDebianなら同じになりますから、サーバーに慣れた方は、不要な情報になるでしょう。

続きはこちら:  Google Cloud Platform に Google Compute Engine を構築して、Wordpressを動かすまで(その2 - LAMP環境の構築) - susumuis Info

*1:なぜかって言うと、自分で取った手順ログがそこからだから