TECH
[CloudGarage]

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

インスタンスのスペックを変えてみよう。スケールアップ/ダウン機能の使い方

TECH
中津川 篤司

CloudGarageではリソース(CPU/メモリ/ストレージ)を動的に変更できる機能があります。あらかじめ割り当てられているリソースを自由に配分できるのがCloudGarageの特徴ですが、もし運用している中でスペック不足を感じたりしたら、さらに追加できます(スケールダウンもできます)。 今回はスケールアップ、スケールダウンを行う方法を紹介します。 スケールアップ前 今回、最初のスペックは 1CPU / 2GB / 50GB となっています。コマンドレベルで確認します。 CPU数 # grep cpu.cores /proc/cpuinfo | sort -u cpu cores : 1 メモリ # free total used free shared buff/cache available Mem: 2041340 118100 1518084 644 405156 1772616 Swap: 2097148 0 2097148 ストレージ # df -BM Filesystem 1M-blocks Used Available Use% Mounted on udev 985M 0M 985M 0% /dev tmpfs 200M 1M 199M 1% /run /dev/vda1 49447M 1663M 47768M 4% / tmpfs 997M 0M 997M 0% /dev/shm tmpfs 5M 0M 5M 0% /run/lock tmpfs 997M 0M 997M 0% /sys/fs/cgroup /dev/vda15 105M 4M 102M 4% /boot/efi tmpfs 200M 0M 200M 0% /run/user/0 スケールアップ ではこのインスタンスをスケールアップします。スケールアップはインスタンス詳細画面から行います。スケールアップ・ダウンボタンをクリックします。 出てきたダイアログを使って、新しい設定を入力します。今回は2CPU / 4GB / 100GBにします。 最後に確認が出て、実行となります。 スペックの変更が終わって、再度同じコマンドを実行します。 CPU # grep cpu.cores /proc/cpuinfo | sort -u cpu cores : 2 メモリ # free total used free shared buff/cache available Mem: 4039588 90072 3744240 640 205276 3726616 Swap: 2097148 0 2097148 ストレージ # df -BM Filesystem 1M-blocks Used Available Use% Mounted on udev 1960M 0M 1960M 0% /dev tmpfs 395M 1M 394M 1% /run /dev/vda1 99068M 1725M 97328M 2% / tmpfs 1973M 0M 1973M 0% /dev/shm tmpfs 5M 0M 5M 0% /run/lock tmpfs 1973M 0M 1973M 0% /sys/fs/cgroup /dev/vda15 105M 4M 102M 4% /boot/efi tmpfs 395M 0M 395M 0% /run/user/0 ちゃんと変更されているのが分かります。 スペックアップ・ダウンの利点・欠点 インスタンス自体は同じものになるので、SSHなどはそのまま使えます。なお、スペック変更は一度インスタンスを停止しなければいけません。そのため、運用中のサーバで行うのは難しいでしょう。また、ストレージはスペックアップできますが、スペックダウンできませんので注意してください。 スペックアップ、ダウンともに大体5分程度で終わります。ただし、ストレージは新しいストレージ容量1GBにつき1分程度かかるので注意してください。例えば今回のように100GBにした場合100分程度かかることになります。 まとめ インスタンスを使っている中でスペックの不足感を感じた時に、新しいインスタンスを立てたりせずに今あるインスタンスがそのまま使えるので便利です。ストレージ以外は元に戻すことも可能なので、ぜひ活用してください。

2018年振り返り_広告おじさんがバナナおじさんになるまで。

TECH
バナナ かじる

#CloudGarage Advent Calendar 2018 12/13更新です。 こたつとホットカーペットの隙間から出られません。どうも、バナナです。 2018年も残りわずか、「師走」と書いて師を走らせる12月、自分はこたつに還りつつ2018年を振り返ってみます。 広告おじさんから、ディレクションおじさんへ・・・ 2018年1月、Web広告担当として「昨日読んだマンガの感想を社内slackにアップする」業務に勤しんでいたところ、CloudGarageチームからお声がけをいただきました。会社的なほにゃららがあったため事実上NHN JAPANへの移籍となります。レアル・マドリードにでも所属しない限り移籍なんて経験すること無いと思ってたので、せっかくなので初めての移籍をキメることにしました。 ディレクションおじさんから、出張おじさんへ・・・ CloudGarageチームではWebディレクションを担当しました。社内調整がメイン業務ですが、Webディレクター関連のイベントに参加する機会もいただけました。北は北海道から南は山口県まで(あまり南行かなかった)、全国津々浦々を行脚し、大変貴重な体験をさせていただきました。。。 貴重なとんぺい焼き。。。 https://twitter.com/supo48000/status/1004662702059368448 貴重な海鮮丼。。。 (世界中の北海道出張を命じられた海鮮好きよ...聞こえますか...あなたの心に直接語りかけてます...新千歳空港内の「ふく亭」に行くのです...新鮮なウニイクラカニを味わいなさい...時間がなくてもすぐ行けます...""'お茶漬け"""もできます...むしゃしゃうめええええ... pic.twitter.com/xE5iwkKdCP— supo.from賛否両論 (@supo48000) 2018年10月14日 貴重なジンギスカン。。。 松尾...ありがとう...それ以外の言葉が見つからない...#mtddc pic.twitter.com/fPHi6MBFtF— supo.from賛否両論 (@supo48000) 2018年6月9日 とても貴重でした。うまぁ。 特にフロントエンドに携わる方々や、ディレクターの皆さんが集まるイベントに参加させていただき、いくつかセッションの機会もいただきました。WordBench山口、札幌ひよこ会のみなさま、楽しいお時間をありがとうございました。 北海道では↓のセッションをさせていただきました。飛行機の中でスライドつくってました(酔 この時は何も考えずつくってましたが、ここから私のバナナ街道は始まってたようです。。。(後述 出張おじさんから、バナナおじさんへ・・・ 出張おじさんを経て、ユーザーの皆様と接点を持つ機会をいただけるようになり、嬉しいことにイベントなどでお会いするたびに声をかけていただけるようになりました。社内でディレクションするか家でゲームするか、圧倒的ひきこもりインドア派の自分にとってはこの上ない喜びでした。ちょうど同タイミングでLIG様への掲載もあり、多くの方とお話ができるようになりました。 速くて安いって…最高やな!アメ横で、超高速で有名なサーバーを秒速でベロベロに酔ってPRした話。 イベントにお越しいただく皆様が、私の顔を見るなり「おっすバナナ。」「今日はNOバナナ?」などと声をかけてくれるようになったのもこの頃です。こちらの記事のせいおかげですね。ありがたいことです。 そして伝説へ・・・ 振り返ってみると色々と新しい経験ができた1年でした。あとメシばっかくってました。 チームに加入して右も左もわからない状態の自分から、皆さまのご厚意により「なんか知らん人が来た」から「人畜無害のおじさんが来た」を経て、「とりあえずあのバナナに聞いてみよう」にまで至れたので、自分としては有意義な一年になりました、感謝ですm(_ _)m CloudGarageチームは、これからも皆様との交流を大切にしていければと考えています。全国各地どこでもお伺いします、お気兼ねなくお声掛けください。沖縄まだ行ったことないです(緩募 来年もよろしくお願いいたします。

CloudGarage Public API の提供を開始しました!

CloudGarage
CloudGarage開発チーム

こんにちは。CloudGarage 開発チームです。 本記事はCloudGarage Advent Calendar 2018の6日目の記事です。 昨日はryosms さんの「DAPを利用してCockroachDBのクラスタを作ってみてる話」でした。 DAP のご利用ありがとうございます! DAP についての詳細はこちらをご覧ください(宣伝です)。 明日はCloudGarageセッションチームよりベンチマークテストの結果を掲載いたします。乞うご期待! 本日、ユーザーの皆様から熱くご要望をいただいていたPublic API の公開を開始しました! そこで、本記事では提供しているAPI の一つ、「インスタンス作成API」(以下、本API)について解説したいと思います。 本API を利用することでコントロールパネルを経由せずにインスタンスの作成が可能になります!便利!!! はじめに はじめに、Public API のご利用方法についてはFAQ を参照ください。 提供しているAPI の一覧はCloudGarage API リファレンスを参照ください。 本API について 本API のアクセスURI や指定できるパラメータについてはCloudGarage API リファレンスを参照ください。 CloudGarage API リファレンスにサラっと書いてありますが、 コントロールパネル経由でのインスタンス作成とは多少仕様が異なっている部分があります。 - 契約ID を指定しないでインスタンス作成が出来る この点が一番大きい違いではないでしょうか。 CloudGarage プランを契約しているユーザーさんは本API 呼び出し時に契約ID(contract_id)をリクエストに含める必要はありません。 contract_id を省略した場合、指定したspec のインスタンスが作成可能な契約を自動的に検出してインスタンス作成を行います。 CloudGarage プランを持っていない、あるいは、インスタンスが作成できるリソースの容量が残っていない場合は400 Bad Request を返却します。 BOX プラン、WPH プランの契約を利用したい場合はcontract_id の指定は必須です。 - BOX プラン、WPH プランの契約を利用した場合はスペックは自動で決定する BOX プラン、WPH プランの契約を使用する場合は自動的に商品に基づいたスペックの値を利用します。 そのため、本API 呼び出し時にスペック(spec)をリクエストに含める必要はありません。リクエストにspec オブジェクトを含めている場合は無視されます。 たとえば、本API 実行時に「BOX5/4GB プラン」の契約を利用した場合は「CPU 3 Core / Memory 4GB / Disk 150GB」のインスタンスが作成されます。 - WPH プラン、Welcart 専用プランの契約を利用した場合は専用のイメージを自動で使用する WPH プラン、Welcart 専用プランの契約を使用する場合は自動的に専用のイメージを利用します。 そのため、本API 呼び出し時にイメージのUUID(image_id)をリクエストに含める必要はありません。リクエストにimage_id を含めている場合は無視されます。 - ユーザがアップロードしたISO イメージではインスタンス作成は出来ない 本API で指定できるイメージはCloudGarage で提供しているイメージ、あるいは、インスタンスのバックアップイメージのみとなります。 VNC コンソールでのインストール作業が必要となる理由から、アップロードしたISO イメージはご利用いただけません。 ご不便をおかけしますが、ISO イメージを利用したインスタンス作成に限っては従来どおりコントロールパネル経由での操作をお願いいたします。 - その他 リクエストパラメータのcontract_id とspec オブジェクトの両方が指定されていない場合は400 Bad Request を返却します。 使ってみる では、実際に本API を利用してインスタンスの作成にチャレンジしたいと思います! まずはToken を発行します。 インスタンス作成に利用するイメージのUUID をhttps://api.cloudgarage.jp/images を呼び出して取得します。 今回はCentOS 7.5 64bit のイメージを利用します。 - CloudGarage プランを利用してインスタンスの作成を試す まずはシンプルにcontract_id を指定せずにスペックを指定してインスタンス作成を行ってみます。 本API が正常に完了すると作成したインスタンスのUUID がレスポンスとして返ってきます。 インスタンス情報も併せて確認してみると無事に作成が出来ました! 念のためコントロールパネルも確認すると、きちんとCloudGarage プランとしてインスタンスが作成されています。 - BOX プランを利用してインスタンスの作成を試す もう一つ、今度はBOX プランを利用してのインスタンス作成を行ってみます。 先ほど作成した一つ目のインスタンス作成時のリクエストとの違いは、spec オブジェクトを指定せずにcontract_id を指定しています。 コントロールパネルを確認すると、BOX プランの契約でインスタンスが作成されています。 インスタンスのスペックはプランのサイズに準拠しています。 - 接続許可設定を指定してインスタンスの作成を試す 最後に、接続許可設定も指定してインスタンスを作成してみたいと思います。 リクエスト用に以下の内容でjson ファイルを用意し、そのファイルを利用してインスタンス作成を行ってみます。 コントロールパネル経由でインスタンスの情報を確認すると、リクエストのports オブジェクトに指定した内容に基づいてインスタンスに接続許可設定がされています。 おわりに いかがでしたでしょうか? 本API を利用する事でこれまでよりも気軽にインスタンスを作成出来るようになったのでは無いでしょうか? 特に、一度に同じようなスペックのインスタンスを複数台調達したい!というシーンに遭遇した方にとっては「もっと早く提供してくれれば良かったのに・・・」と思われる機能かもしれません。 今後の展望として、Public API 経由でのスケールアップ・ダウンや、インスタンス設定の更新などの操作もできるように機能拡充をしていく予定です。 この機能をPublic API 化して欲しい!という要望がございましたら気軽に「#cloudgarage」タグを付けてツイートしていただいたり、公式Twitter アカウントまでご意見を頂戴できればと思います! また、Public API を利用していただいた感想もどしどしお待ちしております! 今後ともCloudGarage をよろしくお願い申し上げます。 CloudGarage 開発チームでした。

安全にサーバを運用するために。ポート番号を正しく開放しよう

TECH
中津川 篤司

サーバはポートを開放して外部からの接続を許可します。ポートを全く開放しなければ一番安全ですが、外部から接続できないのではサーバとしての役割が果たせないでしょう。 そこで必要なポートだけを許可して、安全に運用する必要があります。CloudGarageでは先日、接続許可設定を細かく設定できる機能を提供開始しました。今回はその使い方を解説します。 接続許可設定は3パターン 接続許可設定は大きく分けて3パターンの設定が用意されています。 かんたん設定 詳細設定 全開放 最後の全開放はすべてのポート番号への接続を許可するもので、OS側のファイアウォール設定で制御します。より玄人であったり、自動化を行っている方向けでしょう。かんたん設定はよく使われるポート番号に対する接続許可を設定できます。 SSH 22 HTTP 80 HTTPS 443 Tomcat 8080 Rails 3000 FTP 20/21/990 SMTP 25/465/587 POP 110/995 IMAP 143/993 MySQL 3306 PostgreSQL 5432 DNS 53 簡単設定はチェックするだけでポート番号を開放できる手軽さの一方、接続元が指定できません。そのため、インターネット公開が前提になるであろうSSH/HTTP/HTTPS/FTP/SMPT/POP/IMAP/DNSなどは良いのですが、データベースやTomcat/Railsなどがインターネットから接続されるのは好まれません。 そこで使いたいのが詳細設定です。 詳細設定の使い方 詳細設定では3つのパラメータで設定します。 プロトコル ポート 送信元IPアドレス プロトコルはTCP/UDP/ICMP/ANYがあります。多くの場合はTCPですが、これは接続を許可したいアプリケーションによって変わるでしょう。 ポート番号は数字や範囲で指定します。例えば 8080 または 8080-8081 といった具合です。 IPアドレスはアドレス範囲で指定します。123.123.123.0/24といった具合です。なお、接続を許可しない場合には 0.0.0.0 を指定すれば良いですが、これは元々設定しなければいいだけなので意味がありません。 注意点 詳細設定は許可する条件だけを設定します。拒否設定のDENYはありませんので注意してください。そのため、あるIPアドレスからのアクセスだけを拒否したい場合には、アプリケーション側の設定や、ファイアウォールで設定する必要があります。 HTTP/HTTPSを除けば、アクセス先のポート番号はデフォルトから変えておいた方が安全とされています。外部からハッキングする人たちはデフォルトのポート番号(または類似番号)へのアタックを自動で行っています。そうした悪意を持った人たちにサーバを乗っ取られたりしないよう、ポート番号と接続許可に関する設定を正しく行いましょう。

サーバを安全に使い続けるために自動バックアップを設定しよう

TECH
中津川 篤司

サーバはまったく問題が発生しない訳ではありません。突然のハード障害があったり、データを間違って削除してしまうことだってあります。そのため、バックアップは定期的に取得しておく必要があります。 CloudGarageでは自動バックアップ機能によって、定期的にバックアップを保存できます。設定もとても簡単なので、ぜひ設定しておいてください。 インスタンス詳細より設定する インスタンスの詳細情報を確認する画面で、一番下に自動バックアップが用意されています。このブロックの右上にある鉛筆マーク(編集)をクリックします。 そして表示されたモーダルウィンドウで、自動バックアップを有効にします。自動バックアップは日次または週次、月次で指定できます。時間も指定できますので、夜中であったり日中など自由に指定してください。 後は指定した期間ごとに自動的にバックアップイメージが保存されます。 バックアップの個数には限度があります バックアップは登録ISOイメージと合わせて最大10個まで登録できます。保存数を越えると一番古いバックアップが自動で削除されますので注意してください。 バックアップイメージから復旧する バックアップから復旧する場合は、新しいインスタンスを作成します。そのため、CloudGarageプランなどでリソースに余裕がないと作成できませんので注意してください。 バックアップが必要になるのは大抵1〜2日前くらいだと思います。復旧時にインスタンスが必要になるので、アプリケーションデータやデータベースについては別途バックアップを用意しておく方が復旧は簡単かも知れません。ただしイメージファイルベースのバックアップがあれば、いざという時に必ず役立つはずです。 自動バックアップ機能

各種プログラミング言語のプレイグラウンド、Nodebookを試す

TECH
中津川 篤司

プログラミング言語をこれから覚えていきたいという人は多いでしょう。一つのプログラミング言語を習得したプログラマであっても、新しい言語を覚えたり、複数の言語を組み合わせたりする機会は少なくありません。しかし、各プログラミング言語の環境設定は面倒なものです。 そこで使ってみたいのがNodebookです。執筆現在(2018年11月)で18種類ものプログラミング言語に対応したプログラミング実行環境となっています。 今回はそんなNodebookのセットアップ法、試し方を紹介します。ローカルでも動かせますが、今回はCloudGarage上で実行します。 環境について 今回はUbuntu16.04を使っています。 Node.jsをセットアップする まずNode.jsをインストールします。aptでインストールされるものは古いので、Ubuntuに最新のNode.jsを難なくインストールする - Qiitaを参考に最新版をインストールします。 $ sudo apt-get install -y nodejs npm $ sudo npm install n -g $ sudo n stable $ sudo apt-get purge -y nodejs npm これで最新版のnode.jsがインストールされます。 $ node --version v11.0.0 Nodebookをインストールする Nodebookのインストールはnpmコマンドでできます。 $ sudo npm install nodebook -g Dockerをインストールする 実行環境として、各言語をセットアップする方法もありますがとても大変です。そこでDockerを使って安全に実行できるようにします。こちらはUbuntuにdockerをインストールする - Qiitaを参考にインストールします。 $ curl -fsSL get.docker.com -o get-docker.sh $ sudo sh get-docker.sh nginxをインストールする Nodebookは通常、ローカルでしか動かせないようになっています。そこでnginxをリバースプロキシとして利用します。 $ sudo apt-get install nginx -y 設定ファイルを編集する インストールされたら /etc/nginx/sites-enabled/default を編集します。変更点は以下になります。 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. # try_files $uri $uri/ =404; proxy_pass http://127.0.0.1:8000/; } これで完了です。nginxを再起動します。 $ sudo service nginx restart Nodebookを起動する ではNodebookを起動します。 $ mkdir nodebooks $ sudo nbk --docker ./nodebooks/ これで http://127.0.0.1:8000/ で立ち上がります。 使ってみる http://(IPアドレス) にアクセスします。以下のような表示になればOKです。+Notebookをクリックするとプログラミング言語を選ぶメニューが出ます。 例えばRubyを選びました。 最初の実行時はDockerでRubyイメージをダウンロードするので若干時間がかかったり、すぐに実行されない可能性があります。実行されると右側に実行結果が表示されます。 Rubyだけでなく、Node.jsやPHP、Rust、Goなど様々な言語を試せます。 まとめ Dockerで実行されているのでプログラミング言語のセットアップは不要ですし、権限上も安全に実行できます。誰でも自由に実行できるのは若干怖いですが、コードのスニペットを試したり、プログラミング言語の学習として使ってみるのは面白そうです。 netgusto/nodebook: Nodebook - Multi-Lang Web REPL + CLI Code runner

新機能グローバルIPアドレス付け替え機能を試す

CloudGarage
中津川 篤司

CloudGarageの新機能として、グローバルIPアドレス付け替え機能が追加されました。これまでインスタンスを立ち上げるたびにグローバルIPアドレスが変わってしまっていたのですが、インスタンスとIPアドレスを切り離すことで別なインスタンスに付け替えられるようになります。 操作が若干特殊な気もしますので、この記事では概念と使い方について解説します。 インスタンスとグローバルIPアドレスは1対1 まず知っておきたいのがインスタンスとグローバルIPアドレスの関係です。これは1インスタンスに一つIPアドレスが割り当てられます。つまりインスタンスとIPアドレスは常に1対1の関係にあります。 これを切り離し、インスタンスとIPアドレスを別々にできるのが付け替え機能の基本になります。 操作としては、インスタンス詳細画面でIPアドレスが書かれているところにある鉛筆マークをクリックします。 そしてIPアドレスを使用しないとします。つまりIPアドレスの割り当てがなくなりますので、外部からアクセスする手段がなくなります。 IPアドレスを変更する 次に別なインスタンスでも同様にIPアドレス編集ダイアログを表示します。そうすると、先ほど切り離したIPアドレスが確認できます。 これで別なIPアドレスを割り当てられます。 インスタンスを削除した場合 インスタンスを削除すると、IPアドレスも自動的にインスタンスと切り離されます。そのため、残ったインスタンスのIPアドレス編集ダイアログに削除したインスタンスのIPアドレスが表示されます。 解放されたIPアドレスは自由に割り当てられます。 使いどころ IPアドレスは一つのインスタンスに一つしか割り当てられません。IPアドレスを外すとインターネットからはアクセスできなくなりますので、別なインスタンスを経由してLANを通してアクセスすることになります。データベースサーバのように、別なサーバからの利用が想定されている場合はグローバルIPアドレスがない方がセキュアといえるでしょう。 逆にインスタンスを頻繁に立ち上げ、削除している場合にはIPアドレスを割り当て直したいケースもあるはずです。そうした時にはインスタンス同士のIPアドレスを変更することができます。 まとめ CloudGarageでは月額固定料金を掲げており、追加料金を払ってIPアドレスを自由に払い出すという形ではありません。あくまでも契約の範囲内で、立ち上げたインスタンスに割り当てられたIPアドレスを変更できる仕組みになります。 とはいえ、不要な時には落としておくようなインスタンスにおいても、立ち上げた際には同じIPアドレスが使えるといったメリットはあるでしょう。皆さんの開発に役立ててください。

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

管理画面でIPアドレスのコピーができます

TECH
中津川 篤司

CloudGarageユーザの方にお会いした時、必ず言われるのがインスタンス一覧でのIPアドレスコピーでした。選択状態にできないためにコピーできないという話です。 個人的にもこれはとても不便に感じていたのですが、実はすでに解決手段が用意されていました。 セルをクリックしてコピー その方法ですが、一覧の状態でIPアドレスが書かれた部分をクリックします。 特に無反応ですが、そのままコピーのショートカットキーを押します。WindowsであればCtrl + C、macOSであればコマンドキー + Cになります。マウスではできないので注意してください。そうするとIPアドレスがコピーされているはずです。 他の情報もコピー可能 これはIPアドレスに限らず、インスタンス名などでも利用できます。クリップボードを操作するJavaScriptライブラリを使っており、見た目は選択状態ではないものの、コピーされる仕組みです。 クリックした時の反応がないので、この機能に気付く人はほとんどいなかったでしょう。近く修正は行われるはずですが、現状についてはセルをクリックしてコピーという操作を行ってください。

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を組み合わせたいと思います。

ページトップへ