Google Cloud Platform(GCP)はAWSのgoogle版です。ここにサービスの説明があります。
Compute Engine
まずプロジェクトを作成する。次に、Compute Engineのコンソールで、VMインスタンスを作成する。ゾーンを日本、マシンタイプをf1-micro、OSをUbuntu16.10で作成してみた。数十秒程度でインスタンスが作成完了し、ブラウザ上でssh接続、ターミナル操作がすぐ可能になった。
マシンタイプの変更方法
参考:vm instanceのMachine type変更方法 IPをスタティックにして、ディスクを削除しないようにしながら、VMインスタンスを削除して、新しくインスタンスをつくるらしい。この間サーバは止まってしまう。でもいずれにしても結構簡単に切替は可能。
ローカル環境でssh接続できるようにする
google cloud SDKをインストールする。インストール完了したら初期設定が動き出すので、ログインしたりゾーン選択したりする。 Compute EngineのVMインスタンスの画面にある、ssh接続用のgcloudコマンドを実行する。これでssh接続できた。
PHPとかNginxとかをインストールする
$ sudo apt-get update $ sudo apt-get install php $ php -v PHP 7.0.15-0ubuntu0.16.10.4 (cli) ( NTS ) $ sudo apt-get install nginx $ nginx -v nginx version: nginx/1.10.1 (Ubuntu) $ sudo apt-get install git vim composer
デフォルトでapache2が入っていて起動されているようだ。 $ sudo systemctl stop apache2 $ sudo systemctl start nginx
Cloud DNS
https://cloud.google.com/dns/quickstart 上記に従って、DNS APIを有効にして、DNSコンソールからドメインを追加する。記載されているネームサーバに合わせて、ドメインのネームサーバを変更して、必要な設定をすると反映される。
Cloud SQL
Google Cloud SQL ドキュメント Cloud DNSと同様にAPIを有効にしてインスタンスを作成する。Compute Engineから接続するには、ネットワークの承認が必要。下記にやり方が書いてあった。 MySQL クライアントを Compute Engine から接続する
Compute Engineを設定してCakephp3を動かす
$ sudo vim /etc/nginx/sites-available/default
server {
listen 80;
server_name hoge.com;
root /var/www/html/hoge.com/webroot;
index index.php;
location / {
try_files $uri $uri?$args $uri/ /index.php?$uri&$args /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}
$ sudo systemctl restart nginx $ cd /var/www/html $ sudo apt-get install php-fpm php-intl php-mbstring php-zip $ sudo composer create-project --prefer-dist cakephp/app hoge.com
Compute EngineをCloud SQLにつなぐ
phpmyadminを使う
$ sudo apt-get install mysql-client $ sudo apt-get install phpmyadmin $ sudo vim /etc/phpmyadmin/config-db.php
config-db.php
$dbname='hoge'; $dbserver='<Cloud SQLのIPアドレス>'; $dbport='3306'; $dbtype='mysql';
$dbnameがないとエラーになるけど、内容は適当でも大丈夫だった。
$ sudo echo "hoge:$(openssl passwd -apr1 hogepassword)" > /path/to/hogepath $ sudo chmod 604 /path/to/hogepath $ sudo vim /etc/nginx/sites-available/default
#Phpmyadmin server { listen 80; server_name hogehoge.com; auth_basic 'input'; auth_basic_user_file /path/to/hogepath; root /usr/share/phpmyadmin; location / { index index.php; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }
コマンドラインでmysqlにつなぐ
$ mysql --host=[INSTANCE_IP_ADDR] --user=root -p
cakephp3でmysqlにつなぐ
$ sudo vim /var/www/html/hoge.com/config/app.php hostをCloud SQLにする。
Let's EncryptでSSL取得・設定
hoge.comとphpmyadminをhttps接続のみ可能にする。hoge.comにhttpアクセスした場合はhttpsにリダイレクトさせる。
$ sudo apt-get install letsencrypt $ sudo systemctl stop nginx $ sudo letsencrypt certonly --standalone -d hoge.com $ sudo letsencrypt certonly --standalone -d hogehoge.com $ sudo systemctl start nginx $ sudo vim /etc/nginx/sites-available/default
#hoge.com cakephp3
server {
listen 80;
server_name hoge.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
ssl on;
ssl_certificate /etc/letsencrypt/live/hoge.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hoge.com/privkey.pem;
server_name hoge.com;
root /var/www/html/hoge.com/webroot;
index index.php;
location / {
try_files $uri $uri?$args $uri/ /index.php?$uri&$args /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}
#Phpmyadmin
server {
listen 443;
ssl on;
ssl_certificate /etc/letsencrypt/live/hogehoge.com/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/hogehoge.com/privkey.pem;
server_name hogehoge.com;
auth_basic 'input';
auth_basic_user_file /path/to/hogepath;
root /usr/share/phpmyadmin;
location / {
index index.php;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}
$ sudo systemctl restart nginx