TECH
[CloudGarage]

CloudGarageのインフラ・開発エンジニアやサポートメンバーによる技術記事

PHP-FPMの設定はUNIX socketとポート番号、どちらが良いのか

TECH
中津川 篤司

nginxでPHPを使えるように設定する場合、PHP-FPMを使います。そして連携させる際の設定として、UNIX socketとポート番号設定のどちらかが指定できます。今回はそのどちらがベストなのか検証してみました。 実行結果 まずは実行結果です。以下はポート番号での設定です。 Concurrency Level: 5 Time taken for tests: 3.905 seconds Complete requests: 50 Failed requests: 40 (Connect: 0, Receive: 0, Length: 40, Exceptions: 0) Total transferred: 3988340 bytes HTML transferred: 3981490 bytes Requests per second: 12.81 [#/sec] (mean) Time per request: 390.455 [ms] (mean) Time per request: 78.091 [ms] (mean, across all concurrent requests) Transfer rate: 997.52 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 91 214 226.8 146 984 Processing: 66 140 125.0 122 973 Waiting: 31 81 121.6 62 895 Total: 208 354 249.9 268 1087 以下はUNIX socketの場合です。 Concurrency Level: 5 Time taken for tests: 3.802 seconds Complete requests: 50 Failed requests: 37 (Connect: 0, Receive: 0, Length: 37, Exceptions: 0) Total transferred: 3988335 bytes HTML transferred: 3981485 bytes Requests per second: 13.15 [#/sec] (mean) Time per request: 380.218 [ms] (mean) Time per request: 76.044 [ms] (mean, across all concurrent requests) Transfer rate: 1024.37 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 107 204 38.2 208 286 Processing: 70 147 40.0 140 241 Waiting: 49 85 21.8 86 127 Total: 269 351 47.5 340 525 実行したのが簡単なスクリプトなのでほとんど違いは出ていませんが、それでもUNIX socketの方が高速に処理されています。 向き不向き UNIX socketの方が処理速度は高速ですが、同じサーバ上で処理されている場合に限ります。リモートの場合はポート番号での接続になります。つまりHTTPサーバとアプリケーションサーバを分離し、スケーリングさせる際にはポート番号での利用になるでしょう。 設定の違い UNIX socketかポート番号かは設定に違いがあります。具体的にはnginxの /etc/nginx/conf.d/default.conf と PHP-FPMの /etc/php/7.0/fpm/pool.d/www.conf です。 /etc/nginx/conf.d/default.conf の違いです。 # UNIX socketの場合 fastcgi_pass unix:/run/php/php7.0-fpm.sock; # ポート番号の場合 fastcgi_pass 127.0.0.1:9000; /etc/php/7.0/fpm/pool.d/www.conf の違いは以下です。 # UNIX socketの場合 listen = /run/php/php7.0-fpm.sock # ポート番号の場合 listen = 127.0.0.1:9000 この設定によって、動作を変えられます。 まとめ 一台のサーバでnginxとPHP-FPMを運用する際にはUNIX socketを使いましょう。複数台構成になったらポート番号を使いましょう。実行速度に大きな差がある訳ではありませんが、パフォーマンスはUNIX socketの方が良いようです。

Dokkuを使ってインスタンスをHerokuのように運用する

TECH
中津川 篤司

CloudGarageはあらかじめリソースを契約し、その範囲内で自分の好きな形でインスタンスを立ち上げられます。インスタンスの割り当てはCPU1つ、ストレージ50GBといった単位になりますが、もっと細かくても良いと考える人もいるでしょう。 そういった目的においてぴったりなのがDockerです。そしてDockerをHeroku風に、サブドメイン化でアプリケーションを運用できるのがDokkuになります。今回はこのDokkuの使い方を解説します。今回はUbuntu 16.04 LTSを対象としています。 dokku/dokku: A docker-powered PaaS that helps you build and manage the lifecycle of applications ドメインを割り当てる DokkuはIPアドレスベースでも運用できるようですが、サブドメインを使った方が分かりやすいでしょう。ドメイン事業者のDNS設定で、ネイキッドドメイン(example.comのような形)とすべてのサブドメイン(www.example.com や sub.example.comなど)が同じIPアドレス(CloudGarageのIPアドレス)を向くように設定します。 サーバのhostnameを変更する Dokkuのインストール時にはドメイン名をhostnameとして設定しておく必要があります。Ubuntu 16.04 LTSのhostname変更は以下のコマンドになります。example.comはあなたのドメインに読み替えてください。 sudo hostnamectl set-hostname example.com そして/etc/hostsにドメインを追加します。 127.0.0.1 localhost 127.0.0.1 example.com インストールする Dokkuのインストールは公式に用意されているコマンドを実行するだけです。 wget https://raw.githubusercontent.com/dokku/dokku/v0.12.12/bootstrap.sh; sudo DOKKU_TAG=v0.12.12 bash bootstrap.sh 時間はかかりますが、待っていれば完了します。 設定する 設定はWebブラウザで行います。 http://example.com:2000/ のように2000番ポートでサーバが立ち上がります。そのため、ファイアウォールの設定を変更する必要があります。例えば ufw を使っている場合には以下のコマンドを実行します。 sudo ufw allow 2000 こちらがインストール設定画面です。公開鍵の設定と、サブドメインでの運用を有効にします。 試す では試してみます。まずDokku側でアプリケーションが必要です。 サーバ側 dokku apps:create ruby-rails-sample さらにデータベースを使いますのでPostgreSQLをインストールします。 sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git そして作成したアプリケーション用にデータベースを作成します。 dokku postgres:create rails-database この作成したデータベースとアプリケーションをリンクさせます。 dokku postgres:link rails-database ruby-rails-sample ローカルコンピュータ側 では次にローカルコンピュータでの操作です。ローカルコンピュータでは、ベースになるRailsアプリケーションをクローンします。 git clone git@github.com:heroku/ruby-rails-sample.git そしてremoteを追加します。example.comはあなたのドメインに読み替えてください。 cd ruby-rails-sample git remote add dokku dokku@example.com:ruby-rails-sample そしてpushします。 git push dokku master デプロイ デプロイはDockerのビルドやRubygemsのインストールなどもあって、時間がかかります。 $ git push dokku master Counting objects: 9, done. Delta compression using up to 8 threads. Compressing objects: 100% (8/8), done. Writing objects: 100% (9/9), 1015 bytes | 1015.00 KiB/s, done. Total 9 (delta 4), reused 0 (delta 0) -----> Cleaning up... : -----> Installing dependencies using bundler 1.15.2 Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment Fetching gem metadata from https://rubygems.org/.......... Fetching version metadata from https://rubygems.org/.. Fetching dependency metadata from https://rubygems.org/. Using rake 10.4.2 : Using turbolinks 2.5.3 Bundle complete! 13 Gemfile dependencies, 53 gems now installed. : =====> Application deployed: http://ruby-rails-sample.example.com To ssh://example.com/ruby-rails-sample aef96a0..29aeb60 master -> master アプリケーション名がサブドメインになり、アプリケーションが立ち上がります。 サブドメインを使ってアプリケーションが立ち上げられる手軽さと、Dockerによる自由度の高さが魅力となっています。一度Dokkuを立ち上げてしまえば、簡単に作ったり捨てたりできる便利な開発環境が手に入るでしょう。 CloudGarageの場合、途中からリソースを変更することもできます。大きなリソースを一台に割り当てて、Dokkuで分割、運用するというのも良さそうです。 Dokku - The smallest PaaS implementation you've ever seen

スマートフォン、タブレットから接続できるMinecraft PEサーバを立てる

TECH
中津川 篤司

大人はもちろん、子供向けのプログラミング教育でも使われているMinecraft。CoderDojoでもMinecraftを導入しているケースがよくあります。そんなMinecraftではサーバを立てて、みんなでワールドを共有できます。 今回はスマートフォンやタブレットで使われているMinecraft Pocket Edition用のMinecraftサーバを立てる方法を紹介します。 利用するOS 今回はUbuntu 16.04 LTSを使っています。他のOSでもやり方は変わらないはずです。 利用するソフトウェア 今回はPocketMine-MPを使っています。これはPHPで作られたMinecraft Pocket Edition用のサーバです。 コマンドだけでインストールできる Ubuntuのサーバが立ち上がったら、SSHでログインします。 ssh root@(あなたのサーバのIPアドレス) そしてユーザを作成します。今回は mcpe というユーザ名にしていますが、任意の名前で大丈夫です。 # adduser mcpe Adding user `mcpe' ... Adding new group `mcpe' (1000) ... Adding new user `mcpe' (1000) with group `mcpe' ... Creating home directory `/home/mcpe' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for mcpe Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] そしてそのユーザになります。 # su - mcpe 後はコマンド一つです。 $ curl -sL https://get.pmmp.io | bash -s - これで start.sh というファイルができあがるので、それを起動します。 $ ./start.sh [*] PocketMine-MP set-up wizard [*] Please select a language : 日本語 => jpn [?] Language (eng): jpn [*] 日本語に設定されました [*] PocketMine-MPをインストールして頂きありがとうございます!サーバのセットアップを開始するにはライセンスに同意する必要があります。PocketMine-MPはLGPLライセンスに基づいて認可されており、これについてはこのフォルダ内のLICENSEファイルから確認することができます。 This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. [?] ライセンスに同意しますか? (y/N): y [?] セットアップウィザードをスキップしますか? (y/N): y [13:44:53] [Server thread/INFO]: Loading pocketmine.yml... : [13:44:54] [Server thread/WARNING]: ----- PocketMine-MP Auto Updater ----- [13:44:54] [Server thread/WARNING]: Your version of PocketMine-MP is out of date. Version 3.2.4 was released on Mon Oct 8 03:33:13 2018 [13:44:54] [Server thread/WARNING]: Details: https://jenkins.pmmp.io/job/PocketMine-MP/1544/ [13:44:54] [Server thread/WARNING]: Download: https://jenkins.pmmp.io/job/PocketMine-MP/1544//artifact/PocketMine-MP.phar セキュリティ設定 PocketMine-MPではデフォルトで19132番ポートを使います。そこで、ufwで利用を許可します。 $ sudo ufw allow 19132/tcp $ sudo ufw enable 接続してみる 後はスマートフォンやタブレットのMinecraft Pocket Editionを起動します。 サーバの追加をクリックして、サーバのIPアドレスとポート番号(19132)、名称を決めます。名称は自由に設定します。 そして接続すればMinecraftが楽しめるはずです。 Minecraft Pocket Editionは通常の(デスクトップ版の)Minecraftとは仕組みが異なるようで、通常のサーバが利用できませんでした。専用のサーバを利用するよう注意してください。 Minecraftはゲームとしてはもちろん、プログラミング教育の中でも活躍しています。ぜひサーバを立てて、みんなで情報を共有してみましょう。 PocketMine-MP

CloudGarageでサーバセットアップ【その5:WordPressをインストールする】

TECH
中津川 篤司

インスタンスを簡単に立ち上げられるCloudGarageですが、立ち上げただけでは意味がありません。このインスタンスを使って開発を行っていかなければなりません。とは言え、自分の作りたいものはあるのに、セットアップで色々と時間が取られるのは面倒なはずです。 慣れてきたらKUSANAGI/CentOS-7.3-64bitなどのイメージから選択しても良いですが、まずは自分でイチから作業してみると何かトラブルがあってもリカバリーできるようになります。サーバの動きを掴んでおくと、後々役立つことも多いでしょう。 前回はデータベースサーバを立ち上げて、アプリケーションサーバ(nginx + PHP-FPM)と連携できるところまで進めました。今回はPHPアプリケーションの代表例とも言える、WordPressをインストールします。 WordPressはイメージもあります CloudGarageでWordPressを使う方法は3パターンあります。 WordPressホスティングプランを使う インストール済みイメージを使う 自分で構築する WordPressホスティングプランを使う場合、運用代行なども可能です。構成としてはnginx + HHVMとなっています。インストール済みイメージを使う場合、Apache + mod_phpという組み合わせになります。自分で構築する(今回のパターンです)は構成を自由に選べるのが特徴です。 すでにWordPressに慣れていて、特に問題がない場合はインストール済みイメージを使っても良いでしょう。しかし何かトラブルがあったり、細かくカスタマイズしたいと思った時には一度構築を経験しておくと何かと役立つはずです。 WordPressをダウンロード、解凍する まずアプリケーションサーバにSSHでログインします。 ssh -p 22022 (アプリケーションサーバのIPアドレス)そしてnginxのルートディレクトリに移動します。 $ cd /usr/share/nginx/html/ここにWordPressのファイルをダウンロードします。執筆時点での最新バージョンは4.9.8ですが、変わっている可能性があります。日本語 — WordPressにて確認してください。 wget https://ja.wordpress.org/wordpress-4.9.8-ja.tar.gzダウンロードしたら、ファイルを解凍します。 tar xfz wordpress-4.9.8-ja.tar.gz元ファイルは不要なので削除します。 rm wordpress-4.9.8-ja.tar.gz今回はwordpressというディレクトリにインストールしています。ディレクトリは必要に応じて変更してください。また、ディレクトリをnginxのユーザと合わせておきます。 sudo chown -R www-data:www-data wordpressWebブラウザからアクセス 設置が終わったら、Webブラウザからアクセスします。 http://(アプリケーションサーバのIPアドレス)/wordpress になります。 インストール時にデータベース設定が聞かれます。データベースはあらかじめ作成しておきましょう。また、ポート番号を変更している場合には (データベースサーバのIPアドレス):33060 のようにコロンに続けてポート番号を指定します。後は通常のセットアップと変わりません。 問題なく完了したらログインして管理画面に入れるのを確認しましょう。 画像のアップロードもできれば、ファイルの書き込み権限も正しく与えられているのが確認できます。 まとめ ここまででCloudGarageの二つのインスタンス(アプリケーションサーバとデータベースサーバ)を使って、nginx + PHP-FPMの組み合わせでPHPアプリケーションをインストールする流れが完成しました。 より複雑なシステム構築になると、Gitを使ったり、CI(継続的インテグレーション)による自動化なども考えるようになるでしょう。ともあれ、システム構築の基本は変わりませんので、ここまでの流れを覚えておくと様々に応用が効くはずです。

CloudGarageでサーバセットアップ【その4:アプリケーションサーバとデータベースサーバを連携する】

TECH
中津川 篤司

インスタンスを簡単に立ち上げられるCloudGarageですが、立ち上げただけでは意味がありません。このインスタンスを使って開発を行っていかなければなりません。とは言え、自分の作りたいものはあるのに、セットアップで色々と時間が取られるのは面倒なはずです。 慣れてきたらKUSANAGI/CentOS-7.3-64bitなどのイメージから選択しても良いですが、まずは自分でイチから作業してみると何かトラブルがあってもリカバリーできるようになります。サーバの動きを掴んでおくと、後々役立つことも多いでしょう。 前回はnginxとPHP-FPMをインストールするところまでいきました。今回はより本格的に開発できるようにデータベースサーバを立てて、連携できるようにします。 アプリケーションサーバとデータベースサーバ ごくごく小さなWebアプリケーションの場合、一台のサーバ内にすべての機能を追加します。サーバの役割は様々にありますが、ちょっとしたものであれば「HTTP」「アプリケーション」「データベース」という三層に分かれると思います。さらに大きくなると「キャッシュ」や「API」などの役割も出てくるでしょう。 今回の構成では nginx をHTTPサーバとして、PHP-FPMをアプリケーション、MySQLをデータベースとして構築します。前回、nginxとPHP-FPMを一つのインスタンスにインストールしましたので、「HTTP」「アプリケーション」の役割は一つのインスタンスが担っています。データベースは負荷が高くてボトルネックになりやすいので別なインスタンスとしても分離させます。 データベースインスタンスのセットアップ まずデータベースサーバになるインスタンスを立てます。CloudGarageではあらかじめリソースを確保して利用します。例えばCPUを2コアで購入していれば、「HTTP」と「アプリケーション」サーバを1コア、データベースを1コアと割り当てられます。 今回はデータベースインスタンスをUbuntu 16.04 LTSで立てています。ポートは全開放しています。 セキュリティ上の設定 ライブラリの更新、ユーザの作成、sudo設定はHTTPサーバで行った時と変わりません。ポートは22022でSSHを利用できるだけとして、他はすべて無効としています。 MySQLサーバのセットアップ MySQLのインストール aptを使ってMySQLをインストールします。 sudo apt-get install mysql-server MySQLの設定を変更 デフォルトのポートは 3306 で、ローカルからしか接続を許可しないようになっています。この設定を変更します。ファイルは /etc/mysql/mysql.conf.d/mysqld.cnf になります。変更点は以下の2行です。 [mysqld] port=33060 # 元は3306 # bind-address = 127.0.0.1 # コメントアウトする これでMySQLを再起動します。 service mysql restart データベース接続用ポートを公開する 次にHTTPサーバからデータベースに接続できるようにポートを公開するのですが、単純にufwを使うとインターネット全体に渡って公開されてしまいます。それはセキュリティ上好ましくないので、ローカルネットワークからしか接続できないようにします。 CloudGarageでは自分の契約したインスタンス同士がローカルネットワークで接続されており、 192.168.0.* (*は任意の数字)でアクセスできます。そこで、このアドレス範囲においてデータベースに接続できるようにします。 sudo ufw allow from 192.168.0.1/24 to any port 33060 これで完了です。設定が終わると次のようになっているはずです。 sudo ufw status numbered Status: active To Action From -- ------ ---- [ 1] 22022/tcp ALLOW IN Anywhere [ 3] 33060 ALLOW IN 192.168.0.0/24 データベースのユーザを作成する MySQLをインストールする際に root のパスワードを設定しているはずです。それを使ってMySQLに接続します。ポート番号が変わっているので注意してください。 mysql -uroot -p -P 33060 接続したらデータベースを作成します。今回は mydb として作成します。 CREATE DATABASE mydb DEFAULT CHARACTER SET utf8; そして作成したDBに対して操作権限を持つユーザを作成します。 GRANT ALL PRIVILEGES ON mydb.* TO app@'(HTTPサーバのIPアドレス)' IDENTIFIED BY '(パスワード)'; これでHTTPサーバからアクセスできるユーザが作成できました。 PHPから接続する ではHTTPサーバからPHPで接続してみましょう。まず必要なライブラリをインストールします。 sudo apt-get install php7.0-mysql -y これでMySQLiがインストールされます。最後にPHP-FPMを再起動します。 sudo service php7.0-fpm restart コードを書く 例えば以下のようなコードを書きます( /usr/share/nginx/html/mysql.php などとします)。接続先情報はそれぞれ書き換えてください。 <?php $mysqli = new mysqli('(DBのIPアドレス):(DBのポート番号)', '(ユーザ名)', '(パスワード)', '(データベース名)'); if ($mysqli->connect_error) { echo $mysqli->connect_error; exit(); } else { echo "MySQL接続成功"; $mysqli->set_charset("utf8"); } ?> もしファイルが書き込めない場合には /usr/share/nginx/html/ のアクセス権限を変えてください。 chmod -R 777 /usr/share/nginx/html/ そしてWebブラウザからアクセスします。MySQL接続成功、と出れば接続が無事行われています。 Linux + Apache + PHP + MySQLはLAMP環境と呼ばれて人気の技術スタックでしたが、今はApacheに変わってnginxを使うことが増えています。とは言えPHPとMySQLの組み合わせは今なおWeb開発のデファクトとも言えるくらい有名な組み合わせです。皆さんもぜひPHPとMySQLを組み合わせてWeb開発をはじめてみてください!

CloudGarageでサーバセットアップ【その3:nginxとPHP-FPMを連携させる】

TECH
中津川 篤司

インスタンスを簡単に立ち上げられるCloudGarageですが、立ち上げただけでは意味がありません。このインスタンスを使って開発を行っていかなければなりません。とは言え、自分の作りたいものはあるのに、セットアップで色々と時間が取られるのは面倒なはずです。 慣れてきたらKUSANAGI/CentOS-7.3-64bitなどのイメージから選択しても良いですが、まずは自分でイチから作業してみると何かトラブルがあってもリカバリーできるようになります。サーバの動きを掴んでおくと、後々役立つことも多いでしょう。 前回はHTTPサーバを立ち上げるところまでいきましたので、今回はPHPを使えるようにします。 nginxとPHPの組み合わせについて PHPを手軽に使おうと思うとApache + mod_phpという組み合わせが一番簡単でしょう。しかし最近ではHTTPサーバとしてより高速なnginxとPHP-FPMを組み合わせるケースが増えています。FPMとはFastCGI Process Managerの略です。FastCGIは実行プロセスを常時立ち上げておくことで実行速度を高速化する技術です。PHP-FPMを用いることで、nginx上でも高速なPHP実行環境が手に入ります。 PHP-FPMをインストールする インストールはaptで行えます。 sudo sudo apt-get install -y php php-fpm そして起動します。 sudo service php7.0-fpm start これでPHP側の準備は完了です。設定ファイルである /etc/php/7.0/fpm/pool.d/www.conf を見ると、次のように書かれています。 user = www-data listen = /run/php/php7.0-fpm.sock この二つの情報を覚えておきます。 nginxの設定 nginxの設定ファイルを編集します。ファイルは /etc/nginx/conf.d/default.conf です。 〜.php というアクセスがあると location ~ [^/]\.php(/|$) { 以下の設定が適用されます。ファイル名を取得して $document_root$fastcgi_script_name というPHPファイルを実行します。 $document_root は root で定義されている /usr/share/nginx/html/ です。 server { listen 80; # 省略 # root を移動(全体に関係するので) root /usr/share/nginx/html/; location / { # / へのアクセスを index.php へのアクセスとしたい場合は追加 if (!-e $request_filename) { rewrite ^/(.+)# /index.php?q=$1 last; break; } index index.php index.html index.htm; } # PHP FPMの設定 location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+\.php)(/.+)$; if (!-f $document_root$fastcgi_script_name) { return 404; } fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; } # 省略 } さらにPHPが www-data というユーザで実行されていますので、nginxも合わせておきます。これは /etc/nginx/nginx.conf です。 # 変更前 user nginx; # 変更後 user www-data; /usr/share/nginx/html/ も www-data 向けにします。 sudo chown -R www-data:www-data /usr/share/nginx/html/ 実行してみる では /usr/share/nginx/html/index.php というファイルを作成して、以下の内容を記述します。 <?php phpinfo(); ?> これでサーバにアクセスしてみます。URLは https://ドメイン名/index.php になります。 PHP Infoが表示されればPHPは正しく動作しています。後はWordPressをはじめとして好きなPHPソフトウェアをインストールしたり、Webアプリケーションの開発が行えるでしょう。 PHPはWeb開発で最も人気のあるプログラミング言語でしょう。実際に使っている方も多いはずです。CloudGarageを使って素早くPHP開発環境を整えてみてください! 次回は別インスタンスでデータベースを立ち上げてPHPから接続してみます。

CloudGarageでサーバセットアップ【その2:ドメインの割り当てとSSL/TLS対応】

TECH
中津川 篤司

インスタンスを簡単に立ち上げられるCloudGarageですが、立ち上げただけでは意味がありません。このインスタンスを使って開発を行っていかなければなりません。とは言え、自分の作りたいものはあるのに、セットアップで色々と時間が取られるのは面倒なはずです。 慣れてきたらKUSANAGI/CentOS-7.3-64bitなどのイメージから選択しても良いですが、まずは自分でイチから作業してみると何かトラブルがあってもリカバリーできるようになります。サーバの動きを掴んでおくと、後々役立つことも多いでしょう。 前回のインスタンス設定に続いて、今回はHTTPサーバを立ち上げるところまで進めます。 使うもの 今回利用するソフトウェア、サービスは以下の通りです。 nginx HTTPサーバです Let's Encript 無料のSSL/TLSサービスです nginxの立ち上げ nginxはaptでインストールできます。 sudo apt-get install nginx 恐らくこれで立ち上がっているはずですが、もし立ち上がっていなかったら以下のコマンドを入力します。 sudo service nginx start HTTPサーバが立ち上がっていれば、 http://222.222.222.222 (IPアドレスは自分のものと置き換えてください)でnginxのデフォルトページが表示されるはずです。 ドメインの割り当て ドメイン業者は色々あるのですが、今回は個人的にドメインを持っていたValue Domainのものを使っています。レコードは二つ追加しています。 a @ 222.222.222.222 a * 222.222.222.222 上は http://example.com/ でアクセスできるようにする設定、下は http://www.example.com/ や http://aaa.example.com/ でもアクセスできるようにする設定です(example.comはあなたのドメインに置き換えてください)。 設定が終わってからDNSに反映されるまではしばらくかかります。 http://(ドメイン名) でアクセスできるようなってから次のステップに進んでください。 SSL/TLS証明書の取得 まずLet's Encriptのライブラリをインストールします。 sudo apt-get install letsencrypt 一旦nginxを終了します。 sudo service nginx stop Let's Encryptを実行します。 sudo letsencrypt certonly --standalone -d (あなたのドメイン名) これでメールアドレスを入力したり、規約に同意すると証明書が取得できます。 nginxの設定を変更 nginxの設定ファイルを編集します。 sudo vi /etc/nginx/conf.d/default.conf 追加するのはポート番号とSSL証明書のパスです。(ドメイン名)はあなたのドメイン名と置き換えてください。 listen 80; # 以下を追加(ここから) listen 443 ssl; ssl_certificate /etc/letsencrypt/live/(ドメイン名)/cert.pem; ssl_certificate_key /etc/letsencrypt/live/(ドメイン名)/privkey.pem; # 以下を追加(ここまで) server_name localhost; 確認する ではnginxを起動しましょう。 sudo service nginx start これで http://(ドメイン名) と https://(ドメイン名) でアクセスできれば成功です。 HTTPSはかつては高価で、個人サイトではなかなか持てるものではありませんでした。しかし低価格が進み、さらにLet's Encryptのように無料でSSLが使えるサービスが登場したことによって、誰でも手軽に使えるようになりました。さらに現在ではGoogle Chromeでアクセスした時にHTTPサイトは安全ではないと表示されるなど、SSL/TLS化が当たり前になっています。 ぜひ皆さんのサイトもセキュアにしてください。次回はnginxとPHPを組み合わせたいと思います。

CloudGarageでサーバセットアップ【その1:サーバの基本的セットアップ】

TECH
中津川 篤司

インスタントを簡単に立ち上げられるCloudGarageですが、立ち上げただけでは意味がありません。このインスタンスを使って開発を行っていかなければなりません。とは言え、自分の作りたいものはあるのに、セットアップで色々と時間が取られるのは面倒なはずです。 慣れてきたらKUSANAGI/CentOS-7.3-64bitなどのイメージから選択しても良いですが、まずは自分でイチから作業してみると何かトラブルがあってもリカバリーできるようになります。サーバの動きを掴んでおくと、後々役立つことも多いでしょう。 そこで今回から何回かのシリーズに渡ってステップバイステップでサーバのセットアップを行っていきます。まず初回はインスタンスの立ち上げとセキュリティ上の設定です。 インスタンスの立ち上げ CloudGarageにおいてインスタンスの立ち上げはそれほど困らないかと思います。今回はUbuntu 16.04 LTSを選んでいます。また、ポートを全開放としています。 ポート番号は絞り込んだ方が良いですが、執筆時点(2018年09月)において、任意の番号でポート開放ができないので全開放を選択しています。 これでインスタンスを立ち上げます。 サーバにログイン SSHでサーバにログインします。この時点ではIPアドレスで指定します。IPアドレスは自分のインスタンスのものと置き換えてください。 ssh root@222.222.222.222 サーバのIPアドレスはインスタンス一覧で確認できます。 ライブラリのアップデート すでにライブラリにアップデートが出ている可能性がありますので、それを適用します。 apt-get update apt-get upgrade ufwによるポート設定 ufwはファイアウォールソフトウェアで、任意のポートをアクセス可能にしたり、逆に弾くのに使います。サーバの役割によって開放するポートは違いますが、今回はWebサーバとして80と443、そして22022をSSH接続用のポートとして開放します。 まずufwをインストールします。 apt-get install ufw そしてまずすべてのポートを通信不可にします。 ufw default DENY そして必要なポートを順番に開放します。 ufw allow 80/tcp ufw allow 443/tcp ufw allow 22022/tcp この時点ではまだ ufw は有効になっていません。有効にして万が一SSHの接続を切ってしまうとログインできなくなるので注意しましょう。 SSHの接続ポート番号変更 /etc/ssh/sshd_config を修正します。 Port 22022 # 元は22 そして SSHD を再起動します。 service sshd restart ここまで終わったらufwを有効にします。 ufw enable そして、念のため現在のSSHセッションは残したまま、別なウィンドウでSSH接続できるか確認します。 ssh -p 22022 root@222.222.222.222 これで接続できれば ufw が正しく有効になっています。 ユーザの作成 最初はユーザがおらず、rootだけで作業することになりますが、セキュリティ上よくありませんのでユーザを作成します。 adduser goofmint #自分のユーザ名に書き換えてください パスワードは任意で設定してください。 SSHログインの設定 ローカルマシンにある ~/.ssh/id_rsa.pub の内容を先ほど作成したユーザの ~/.ssh/authorized_keys にコピーします。さらにこのファイルは自分だけが読み書きできるようにします。 chmod 600 .ssh/authorized_keys これでパスワードなしでサーバにログインできるか確認してください。 ssh -p 22022 goofmint@222.222.222.222 Sudoの設定 ソフトウェアをインストールしたりする際にはroot権限が必要になりますが、毎回rootになって作業するのは面倒です。そこでsudoを設定します。最初はroot権限で実行します。 admin グループに追加されたユーザはsudoが使えるようになります。 usermod -G admin nakatsugawa これで次回にログインした時から sudo su - と入力して自分のパスワードを入力したらrootになれます。 SSHでrootのログインを禁止する 最後にSSHでrootがログインできないようにします。/etc/ssh/sshd_config を修正します。 # 変更前 PermitRootLogin yes # 変更後 PermitRootLogin no そして SSHD を再起動します。 service sshd restart これで root アカウントでSSHログインできないのを確認してください。 ここまでの手順で最低限、セキュアになったと言えます。次回はHTTPサーバの設定を行います。

CloudGarageの良いところ

TECH
中津川 篤司

CloudGarageは仮想のサーバを立てる、いわゆるIaaSとしては後進のサービスになります。すでに世の中には多数のIaaSが存在する中、特徴がなければ生き残ることはできません。ということで、今回はCloudGarageならではの特徴を開発者目線で紹介します。 ストレージが高速 これが最大のポイントと言えるかも知れません。ストレージを仮想化して使えるようにしていたり、上位プランにしないと使えないと言ったことはありません。デフォルトで物理的にサーバにつながったSSDが利用できます。 速いのは正義です。ボトルネックになりがちなファイルIOが苦になりません。 リソースを購入して実際の構成は自由に CloudGarageではまずリソース(CPU、メモリ、ストレージ)を購入します。後はその購入した内容に応じて自由にインスタンスを立ち上げられます。例えば16コア分購入して、16台立ち上げるのか、2コアずつ8台立ち上げるのかも自由です。もちろん8コア + 4コア×2なんて構成もできます。 これが嬉しいのは、企業内の開発部隊の人たちが月額費用などを気にせずにインスタンスの増減ができるということです。一つのインスタンスを立ち上げると料金が変わるので予算が…などといった面倒さはありません。 運用で使う場合においてもWebサーバ、アプリケーションサーバ、DBサーバなど求めるスペックはそれぞれ異なるでしょう。そういった構成も柔軟に設定可能です。 料金が分かりやすい グローバルスタンダードな流れとしては従量課金制が多いのは確かですが、それだと仕事上(特にクライアントワーク)において面倒なことが多々あります。突発的なアクセス増に対して費用が急激に増したり、新規開発でどれくらいの流入が見込めるか分からない状態だと見積もりも困難です。 国産のIaaSだと月額固定が多いですが、CloudGarageもまた月額費用は固定となっています。ただし前述の通り、インスタンス構成は自由に変更できるというものです。 ロードバランサ付き デフォルトでロードバランサが付いています。アプリケーションサーバを追加した際などに利用できます。これはプランに関係なく利用でき、異なるプラン同士でもスケーリングなどに役立てられます。 用意されているOS、ソフトウェアがちょうどいい デフォルトで用意されているOSイメージは以下の6パターンです。Windowsのような特殊なものはありませんが、Webシステム向けであれば十分ではないでしょうか。 CentOS (32/64 bit) Ubuntu (32/64 bit) Debian (64bit) Fedora (64bit) openSUSE (64bit) RancherOS (64bit) さらに独自のディスクイメージをアップロードすることもできます。 あらかじめインストールできるソフトウェアは以下の通りで、こちらは開発者目線のものが多くなっています。 Apache2.4/PHP7/MySQL5.7 Apache2.4/Tomcat8.5/JDK8/MySQL5.7 Ruby on Rails GitLab WordPress Redmine KUSANAGI KUSANAGI + Welcart nginx がないのが残念ですが、さくっと開発をはじめるのであればApacheの方が楽なのかも知れません。 まとめ IaaSの多くは機能を細かく分けて、それらを組み合わせて自分の作りたいものを開発すると言った形になっています。それはそれで良いのですが、初見の人からすると分かりづらく、どこを変更したらどうなるのかという繋がりも見えづらくなっています。 CloudGarageはシンプルで十分な機能を備えたIaaSと言えます。とりあえずさくっと使ってみるというのにぴったりでしょう。現在、無料お試しプラン(2コア、メモリ4GB、ストレージ100GB)も用意しています。ぜひ試してみてください! CloudGarage - クラウドガレージ | 定額型パブリッククラウド

CloudGarageの始め方

TECH
中津川 篤司

皆さん、はじめまして。今月(2018年09月)からCloudGarageのエバンジェリストになりましたMOONGIFTの中津川と言います。普段はオープンソース・ソフトウェアを紹介するブログを運営していたり、他の開発者向けサービスの広報支援、DevRel MeetupやMonaca UGといったコミュニティの運営を行っています。 今回はまず初回ということもありますので、CloudGarageに実際に登録してインスタンスを立ち上げるまでの流れを紹介します。 アカウント登録する まず最初はトップページに移動します。右上にアカウント登録がありますので、それをクリックします。 そうするとメールアドレス入力欄が表示されますので、メールアドレスを入力します。 指定したメールアドレス宛に、確認メールが送られてきます。メールボックスをチェックしましょう。 メールの内容は以下のようになっています。アカウント登録用のURLが記載されていますので、クリックします。 表示されたフォームでアカウント情報を入力していきます。 次に進むと決済情報の入力になります。 次に進んだところでアカウント登録完了になります。 コントロールパネルの紹介 こちらがアカウント登録直後のコントロールパネルです。 まず最初に行うのはインスタンスの作成です。この時、二つのプランが用意されています。一つがリソースプール、もう一つがWordPressホスティングプランです。WordPressを立ち上げる場合には後者で、それ以外の場合は前者にするのが良いでしょう。今回はリソースプールプランを選択します。 リソースはCPU、メモリ、ストレージによって7パターンあります。無料お試しプランもあります。 ちなみにこちらはWordPressプランです。こちらは4パターン用意されています。 リソースプールプランでプランを選択すると、月額料金が表示されます。 リソースを購入しました。 インスタンスを追加する 続いてインスタンスを購入します。最初はリソースを購入しただけで、このリソースをどう割り当てるかは開発者自身が自由に選べます。すべてのコアを一台に入れて強力なインスタンスを立てることも、1コアずつ並列化させるのも自由です。 インスタンスは購入したリソースプランに応じて選べます。 今回は2コアのリソースだったので、1コアずつ2台立ててみたいと思います。 OSやアプリケーションを選べます。 今回はUbuntu 16.04 64bitを選んでいます。 そしてインスタンスを立てる時点で開放するポート番号を指定できます。Webサーバであれば SSH / HTTP / HTTPS あたりが無難でしょう。 さらに公開鍵もアップロードできます。この公開鍵は名前を付けておいて、別なインスタンスを立てる際にも利用できます。 最後にインスタンス名やrootアカウントのパスワードを設定します。 インスタンスが作成されました。 二台目のインスタンスも立ち上げ中。 各サーバはグローバルIPアドレスとプライベートIPアドレス、両方を持っています。 まとめ いかがでしょうか。CloudGarageでインスタンスを立てるまでの流れが分かったかと思います。現在、無料お試しプラン(2コア、メモリ4GB、ストレージ100GB)も用意しています。ぜひ試してみてください! CloudGarage - クラウドガレージ | 定額型パブリッククラウド

Deep Meetup in Sendai @ お洒落コワーキングスペース by enspace

TECH
バナナ かじる

毎日暑いですね、高野です。 これは、遥か古の、まだ地球が暑くない7月18日、CloudGarage Deep Meetup in Sendaiが催された、昔々のお話です(要約:ブログ書くの遅くなってすみませんでした)。 「コワーキングスペース」って単語がもうお洒落 今回のCloudGarage Deep Meetupは、enspace様で開催させていただきました。設立間もないコワーキングスペースとのことで、一張羅のCloudGarageポロシャツの襟を正して行ってまいりました(普段着)。 青葉通一番町駅下車、初夏の緑に包まれた青葉通りを抜けると。。。 enspace様オフィスにてMeetup準備中!オシャレすぎて、ポロシャツ着てきた自分がやるせないです…#cloudgarage pic.twitter.com/uj3PHIl3Nn— CloudGarage (@CloudGarage_PR) 2018年7月18日 オシャレーーーーーー なんか窓きれいーーーーーー 俺のポロシャツ地味ぃーーーーーー 準備の間、オシャレソファーで作業させていただきました。 enspace様オフィス、オシャレすぎて自分の着てる服が縄文時代の服に見えてきたし自宅は竪穴式住居だったかもしれない。 pic.twitter.com/RRMLnYg9CM— JAPANO (@JAPANO8) July 18, 2018 東北最大級のシェアオフィス・コワーキングスペースとのことで、勉強会や、交流会を始めとする様々なセミナーやイベントが企画出来るフリースペースを提供されています。ご利用をご検討の方は公式ページをご確認ください。 新たなビジネスの創造を目指す人たちのシェアオフィス・コワーキングスペース「enspace」 さて会場設営が完了。角ハイボールもきりっと冷えてスタンバイOK。満を持してスタートです! CloudGarage Deep Meetup in Sendai はーじまーるよー。#CloudGarage pic.twitter.com/rKE6Je1dmz— CloudGarage (@CloudGarage_PR) 2018年7月18日 開会のあいさつと乾杯│中村 哲也 まずは弊社中村から、い つ も の でごあいさつ。 い つ も ので、中村より開演のごあいさつ。#CloudGarage #売りに来たんじゃない #会いに来たんだ #武者ガンダム pic.twitter.com/cLFZzjt4rn— CloudGarage (@CloudGarage_PR) 2018年7月18日 CloudGarageのサービス紹介│小柳津 純 CloudGarage DeepMeetUp in 仙台 from jun oyaizu 続いて小柳津からCloudGarageを説明させていただきました。ありがたいことに、ご来場いただいた方の多くがCloudGarageを既にご利用いただいており、普段お伝えしきれてない商品の魅力から、今後の展望まで広くお話しさせていただきました。 https://twitter.com/CloudGarage_PR/status/1019533864576806913 enspace│伊藤 小百合さま CloudGarageスタッフのセッションが続きましたが、今回のスペースをご提供いただいたenspace様からもご紹介のセッションをいただきました。 #enspace #CloudGarageenspace様から、ご紹介のmovie!縁のエン、宴のエン、ビジネスの¥(エン)、エンジニアのエン、応援のエン\オーサーレー/ pic.twitter.com/FyKtj1ztIf— CloudGarage (@CloudGarage_PR) 2018年7月18日 このenspaceの「en」には、私たちが大切にしてきた5つの想いが込められています。お客さまに価値を提供し、「ありがとう」を“対価(円=en)”でお預かりすること。ベンチャーとして実績が少ない中でも“応援(en)”してくれた方々との“ご縁(en)”。起業当初から“エン(en)ジニア”の力を活用し、可能性を最大限に高めてきたこと。どうせやるなら、楽しく、仲間とともに宴(en)をするように進めていきたい。 かっこいいいいいい!!!(・∀・) 語彙力不足でオシャレしか言ってませんが、洗練されたスペース設備のみならず、スタッフの皆様からもフレンドリーかつ細やかなご配慮をいただき、素晴らしいサポートをご提供いただきました。仙台エリアでコワーキングスペース、イベント会場をお探しの方はぜひ! インクレイブ株式会社│笠原 有史さま ここで真打、インクレイブ株式会社 笠原さまのセッション。 https://twitter.com/CloudGarage_PR/status/1019552584481173511 弊社製品を長らくご愛用いただいているユーザー様で、今回は実際にCloudGarageを導入してみた工程をご説明いただきました!感謝! 同時に、開発されたインクレイブ社のxmaps+とzipserverをご紹介いただきました。便利すぎてヨダレ出ました。うちのフォームにもzipserver導入しませんか上司ぃ?? IT業界のトラブルを乗り越える│平賀 真琴 平賀のセッションは、IT業界のトラブルを乗り越える話。 支離滅裂な発言テンプレが光ってました。 0717cloudgaragemeetup sendai from 真琴 平賀 今回のイベントはご歓談がいつも以上に盛り上がった印象でした。 日頃お使いいただいてるユーザー様から、率直なご意見を生で聞くことができましたし、皆様のビジネスのお話しをうかがうこともできました。CloudGarageがその一助を担えればと思い、邁進するモチベーションをいただけてありがたい限りです。その感謝の一端を、わかばちゃんと武者ガンダムMK-Ⅱに代えさせていただきました。お納めください。 プレゼント抽選会!Get わかばちゃん!enspace様の本棚が充実する結果になりました()おめでとうございます!#CloudGarage #わかばちゃん pic.twitter.com/woLPqC6oFQ— CloudGarage (@CloudGarage_PR) 2018年7月18日 Get GUNDAMおめでとうございます! pic.twitter.com/2o4AprT3LC— CloudGarage (@CloudGarage_PR) 2018年7月18日 とても楽しい時間をありがとうございました!ユーザー皆様とたくさんお話しする機会を持て、大変有意義な時間をすごさせていただきました、日頃より誠にありがとうございます!&これからも何卒よろしくお願いいたします! 【CloudGarageからのお礼】先日、CloudGarage Deep Meetup in Sendaiを開催しました。 ご参加いただいた皆さま、誠にありがとうございました。また仙台の皆さまに会いに行きます。 pic.twitter.com/WwHrpSk7l5— CloudGarage (@CloudGarage_PR) 2018年7月20日 いただいた貴重なご意見と、楽しい思い出を胸に秘め、すぐさま東京に戻って改善・検討をする決意を固める私でした。 ホテルで朝食。牛タン味噌焼きをはじめとした仙台名物が総出で4の字固めしてきて東京に帰る気が0になった。 pic.twitter.com/mr8RSTZ5jU— JAPANO (@JAPANO8) July 19, 2018 それではまた!

【新機能追加】スケールアップ・ダウンが可能に。

CloudGarage
セッションチーム

いつもCloudGarageをご利用いただきありがとうございます。 この度、多数のご要望にお応えして、「スケールアップ・ダウン機能」を追加いたしました。 スケールアップ・ダウン機能 CloudGarageでは、作成済みのインスタンスをコピーして処理するインスタンス数を増やす「スケールアウト」を従来よりご利用いただけますが、今回のアップデートにより、インスタンス数を増やすのではなく、インスタンス自体のリソース(メモリ・CPU・SSD)を拡張、縮小することができるスケールアップ・ダウン機能が追加されました。コントロールパネルからの操作で簡単にインスタンスのスペック(メモリ・CPU・SSD)を個別に変更することが可能です。 ※仕様上、SSDはスケールアップのみご利用可能です。スケールダウンはできませんのでご注意ください。 ※ISOイメージから作成したインスタンスではスケールアップ・ダウンはご利用いただけません。(2018/8/2現在) スケールアップ・ダウン機能の利点としては、例えばデータベースを利用したウェブサービス構築する場合に、初期は最小スペックのインスタンスで利用を開始して、アクセスが増えた際に後からメモリスペックを増強することで、インスタンスが逼迫する度により大きな別のインスタンスにデータの引越しをする必要がない点があげられます。これにより、サービス運用の工数を大幅に削減することができます。また、キャンペーンなどで一時的なインスタンスのリソース不足の際に、CPUだけスペックをアップしたりメモリだけスペックをアップすることもできますので、お客様の用途にあわせてより柔軟なクラウド利用ができるようになります。 4月にリリースされたプラン変更と今回のスケールアップ・ダウン機能の2つにより、インスタンス導入時のサイジングで悩む必要はありません。導入後のインスタンス稼働状況に応じてクラウドを自由に必要なサイズに変更することができますので、ぜひご活用ください。 以上、機能追加について簡単に説明させていただきました。 コントロールパネル操作手順 スケールアップ・ダウン機能 操作手順 1.「インスタンス」ページから対象の「インスタンス名」をクリックしてください。 2.「インスタンス情報」内の「スケールアップ・ダウン」をクリックしてください。 3. パネル上でご希望のスペックを選択し、「変更する」をクリックしてください。 4. 内容をご確認のうえ「変更する」で完了です。 以上となります。 今後とも、CloudGarageをよろしくお願いいたします。

【新機能追加】ご利用中プランの無停止変更が可能に。

CloudGarage
セッションチーム

いつもCloudGarageをご利用いただきありがとうございます。 この度、多数のご要望にお応えして、リソースプールプランに「ご利用中プラン無停止変更機能」を追加いたしました。   ご利用中プラン無停止変更機能 これまでのCloudGargeでは、一度使い始めたプランのリソースが不足しそうな場合、上位プランをご購入いただき、インスタンスデータをお客様ご自身の操作で新たなプランに移設する必要がありました。 今回追加されたプラン変更機能により、お客様は4GBプランから64GBプランまで、インスタンス無停止で必要なサイズのプランに変更することができます。 当初は小さいプランで契約して後で大きなプランに無停止で変更できるため、導入時のプラン選定についてのストレス軽減につながります。今回のプラン変更機能の追加により、より自由度の高いサービスとなりました。ぜひご活用ください。 ※皆様からご質問いただいた点につきまして、公式サイトFAQに追記いたしました。貴重なご意見ありがとうございます。 CloudGarage┃FAQ - サービスと契約について コントロールパネル操作手順 コントロールパネルから簡単に変更できます。 ご利用中プラン変更 操作手順 1.「インスタンス」ページから対象の「プランID」をクリックしてください。 2.プランの利用状況が表示されます。ご確認のうえ「プラン変更」をクリックしてください。 3. 変更先プランをご選択のうえ「購入する」で完了です。 今後とも、CloudGarageをよろしくお願いいたします。

CloudGarage開発担当が執筆する「ゼロからはじめるDocker」のご紹介

TECH
セッションチーム

2017年10月12日(木)から隔週でCloudGarage開発担当が執筆するDocker初心者に向けた記事がマイナビニュースにて連載しています。今回はそれらの連載記事をまとめてご紹介いたします。※2018/01/15更新

CloudGarageでファイルサーバ(VPN + Samba)を使ってみる

TECH
犬飼 大貴

#CloudGarage Advent Calendar 2017 24日目の記事です。CloudGarageのDAPプランを使ってVPNとファイルサーバ(Samba)をCentOSに構築・利用してみたので記事にしてみました。

ページトップへ