Quantcast
Channel: レンタルサーバーのCPIスタッフブログ
Viewing all 131 articles
Browse latest View live

Navbarクリック時にメニューを閉じる方法:Bootstrap 4

$
0
0

 

Bootstrap4のNavbar(ナビゲーションメニュー)は、デフォルトのままですと、クリック時にメニューが閉じません。
シングルページなどの場合で、1つのページ内でリンクする場合は、Navbarクリック時にメニューを閉じたいですよね。

今回の記事では、Dropdownメニュー以外のリンクがクリックされた時に、メニューが閉じるようにします。

完成版のサンプル

 

メニューを閉じる

下記のJavaScriptをjQuery読み込みの後ろに追記します。

<script>
$('.navbar-nav>li>a , .dropdown-menu>a').on('click', function(){
    if(this.id != 'navbarDropdown'){
      $('.navbar-collapse').collapse('hide');
    }
});</script>

2行目:「.navbar-nav>li>a , .dropdown-menu>a」は、Navbarのリンクと、ドロップダウンのリンクのクリックイベントを取得しています。

3行目:「if(this.id != 'navbarDropdown'){」は、ドロップダウンメニューの開閉時にメニューが閉じないようにしています。

4行目:「$('.navbar-collapse').collapse('hide');」で、メニューを閉じています。

 

アイコン変更

ハンバーガーメニューがクリックされた時に、アイコンを変更します。

button[aria-expanded="true"] > span {
  position: relative;
  display: none;
}

button[aria-expanded="true"]::after {
  position: absolute;
  top: 20px;
  right: 20px;
  font-size: 28px;
  content: "X";
}

Button属性の、aria-expanded が、trueの場合はメニューが閉じているとき、falseが開いているときです。
今回は単純にメニューが開いたときに「content: "X"」で、「X」に切り替えています。

Navbarがデフォルトで閉じないのは少し不思議な気もしますが、JavaScriptを少し追加することで実装可能です。

 


Bootstrap4のNavbarお手軽カスタマイズ方法

$
0
0

Bootstrap4の特設サイトにNavbar(ナビゲーションメニュー)のカスタマイズに関する記事を4点追加しました。

追加記事

Bootstrap 4のNavbarクリック時にメニューを閉じる方法

Bootstrap 4のNavbarの高さを調整する方法

Bootstrap 4のNavbarをフルスクリーンにする方法

Bootstrap 4のバーガーメニューアイコンを変更・調整する方法
 

 

Bootstrap 4のNavbar(ナビゲーションメニュー)は、とても便利ですが、デフォルトのままですと、少しだけカッコ悪いですよね。

私がBootstrapを使い、サイト構築するときに、よく改修する点にを主にピックアップしました。

 

 

httpからhttpsリダイレクト時のFacebook、はてブの引き継ぎ方法

$
0
0

常時SSL導入時に、httpから、httpsへのリダイレクトを行うと、Facebookのいいねや、はてなのブックマークは、URL変更にともないゼロに戻ってしまいます。
これを引き継ぐ方法をご紹介します。

 

Facebook

Facebookの公式サイトにも掲載がありますが、og:urlを「http://~」に変更し、 http:// から、https:// のリダイレクトをFacebookクローラーの場合のみ、除外します。

HTMLのog:urlを http://~ にする

<meta property="og:url" content="http://example.com/">

 

.htaccessを編集

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTP_USER_AGENT} !(Facebot|facebookexternalhit/1.1) [NC]
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*$) https://shared-blog.kddi-web.com/$1 [R=301,L]
  </IfModule>

3行目が、Facebookのクローラーを除外する記述で、それ以外はhttp://~ を https://~ にリダイレクトする方法です。

 

確認方法

Facebook Debugerを使い、デバッグをしてください。
下記の通り、Input URLが「https」、og:urlが「http」になっていれば設定完了です。

変更されない場合は、「Scrape Again」ボタンをクリックしてください。

 

はてなブックマーク

はてなブックマークの場合は、ボタン作成用のページから、保存するURLを「http://」のアドレスにし、サイトに設置してください。

 

以上で、Facebookのいいねや、はてなのブックマークを引き継ぐことができます。

 

 

 

WordPressのマルウェアを削除する方法

$
0
0

WordPressは利用者数が多いことから、WordPressを狙った攻撃が多く、ハッキングされる件数も多いのが現状です。
WordPressセキュリティ対策強化の基本にWordPressのハッキング件数や、対策方法を掲載していますので、合わせてお読みください。

ですので、WordPressを使っている場合は、定期的なマルウェアのスキャンや、脆弱性診断を行うと良いでしょう。
自社サイト経由から被害が出ないか、不安に思っているサイトオーナーや、制作者は一度お試しください。

 

目次

 

 

WordPressのスキャン

 

Securiのサイトチェックにアクセスし、WordPressサイトのスキャンをしてください、

スキャンが完了すると、下記の通りメッセージが出力されます。
少し分かりにくいですが「Our scanner did'nt detect any malware」が表記されていれば、マルウェアーは検出されませんでした。

 

マルウェアが検出されると下記の通り警告が出ますので、指示に従いマルウェアーを削除してください。

引用:https://sucuri.net/guides/how-to-clean-hacked-wordpress

 

Google セーフブラウジングのサイト

https://transparencyreport.google.com/safe-browsing/search」からサイトをスキャンし確認、サイトをチェックしてください。

 

マルウェアを削除する

 

SmartReleaseのバックアップから戻す

まずは最も簡単な方法で、SmartReleaseのバックアップから過去の状態に戻す方法です。

(ご注意)この操作を行うとサイト全体が過去の状態に全て戻ります。

  1. SmartReleaseのコントロールパネルにログインし、バックアップを開きます。
     
  2. 公開サイトタブから、ウェブデータをリストアし、データベースタブ(MySQL5.5や、5.6)から、データベースをリストアします。

    ファイルやフォルダが全て削除されます。とメッセージが表示されていますが、マルウェアも同時に削除されます。

 

手動で削除

  1. まずはSmartReleaseからバックアップを取得してください。
  2. SSHを利用して、サーバーのコンソールにログインします。
    SSHの利用方法はCPIのオンラインヘルプを参照ください。

    下記のコマンドを実行し、最近書き換えられたファイルが無いかを確認します。
    下記では過去15日以内に更新されたファイルを抽出します。

    find ./ -type f -mtime -15


     

  3. 抽出されたファイルに心当たりが無い場合は、ファイルを削除するか、ファイルを確認します。
    ファイルの確認はWordPressのコアファイルと、diffを実行し、どの行が書き換わっているかを確認すると良いでしょう。

    疑わしいファイルが見つかれば、そのファイルをWordPressの公式からダウンロードした、ファイルで上書きを行います。
     

  4. ファイル修正後、サイトの動作確認を行います。

 

WordPreesのユーザー

WordPressの管理画面にログインし、疑わしいユーザーが登録されていないか確認をしてください。
確認し、登録した覚えが無い場合は削除を行い、WordPressの管理者パスワードを念のため変更をしてください。

 

 

さいごに

 

WordPressのマルゥエアを削除するには、バックアップから戻すのが一番手取り早いです。
何か更新する前にバックアップを取得する、更新後にバックアップを取得することで、すぐに戻すことができます。

また、マルウェアが入ってこないための対策も重要ですので、合わせて「WordPressセキュリティ対策強化の基本」を参照ください。

 

なぜバックアップが必要?~レンタルサーバー上の大事なデータを守る方法~

$
0
0

 


レンタルサーバーを利用している上で、バックアップをとっていないのは大変危険です。ちょっとしたトラブルで大事なデータを破損・消失する可能性もあるからです。
そのため、レンタルサーバーを利用する際は、バックアップの取得や、バックアップ自動化を検討しましょう。
今回は、サーバーのデータバックアップの重要性やバックアップの種類、そしてCPIのバックアップサービスをご紹介します。

1.なぜサーバーのバックアップが必要?

データの破損・消失などデータ事故はいつどのような形で起こるか分かりませんので、バックアップは必須です。
なお、事故例には以下のようなケースが考えられます。

・上書きや削除などの誤操作
・マルウェア等によるデータ改ざん
・地震、洪水、火事等災害による物理的なサーバーの故障

このような事態が起きても、業務を早急に復旧するためにはバックアップが必須です。
また、データのバックアップには、以下のようなメリットもあります。

・データ事故が起きても復旧できる
・バックアップがあるので安心して業務を進められる
・データの世代管理が可能

中には、「バックアップは面倒な作業」と思われる方もいらっしゃるかもしれません。
しかし、バックアップはユーザー自身でHDDやSSDなどストレージを用意しなくても、レンタルサーバー管理会社のオプションや標準搭載機能で提供されています。また、自動バックアップ・手動バックアップはサーバー管理画面から簡単に行うこともできます。ですから、ただ「面倒だから」という理由だけで、バックアップを怠ってしまわないようにしましょう。

2.バックアップの方法

データのバックアップ方法は大きくわけて4種類あります。

1.外部バックアップ
レンタルサーバー管理会社が、物理的に別のサーバーにデータを転送してデータを保存する方法です。
外部バックアップは物理的に別のサーバーにデータが保管されているため、レンタルサーバーに万が一、事故が発生しても、別サーバーに保管したバックアップデータからデータ復旧が可能です。なお、CPIは外部バックアップサービスを提供しています。

2.内部バックアップ
外部バックアップが物理的に別のサーバーに転送することに対して、内部バックアップは同一のサーバー内でバックアップを取る方法です。
この場合、転送速度などを考える必要がなく、復旧も外部バックアップと比べて速いですが、その反面、ハード障害時にはバックアップデータにアクセスできない、などのデメリットも存在します。

3.ローカルバックアップ
ユーザーのパソコンや社内サーバーのHDD、SSDなどにバックアップをとる方法です。
ローカルバックアップは、ユーザーの判断で手元にデータを置いておきたい場合などに用いられます。

4.クラウドバックアップ
クラウド上にデータを保存する方法です。
外部、内部バックアップのような、レンタルサーバーのデータをバックアップするというよりは、ローカルのデータを保存する場合などに多く用いられます。

クラウドバックアップは、万が一、災害などが起きてローカルのデータが被害に遭ったとしても、クラウドからデータ復旧が可能なため、企業の重要データのバックアップなどでも用いられている方法です。

またバックアップには、全データイメージをバックアップする完全(フル)バックアップと、データの書き換え内容を保存する方法があります。データの書き換え内容を保存する場合は、保存する書き換え内容によって、差分バックアップまたは増分バックアップと呼びます。

差分、増分バックアップは完全バックアップと比べてデータ容量が小さいため、バックアップ時間の短縮に繋がります。しかし、復旧する際はデータをつなぎ合わせる必要があるため、完全バックアップと比べて時間がかかるなどのデメリットもあります。

データのバックアップ方法として4つを紹介しましたが、例えばレンタルサーバーでは外部バックアップを使用したり、社内のデータであればクラウドバックアップを使用したりと、用途によって選べるものが変わってきます。
バックアップしたいデータを確認して、適切なバックアップ方法を選びましょう。

3.レンタルサーバーのバックアップの方法

ほとんどのレンタルサーバー管理会社は、バックアップサービスを提供しており、管理画面から簡単にバックアップすることができます。
費用面から見ても、月額で数百円〜数千円程度と比較的安価でできるため、万が一のデータ消失による被害を考えれば高いコストではありません。

なお、CPIには「SmartRelease」という無料のサーバーツールに自動・手動バックアップ機能が搭載されています。
このSmartReleaseは、以下のタイミングで自動バックアップを取得しています。
・毎日深夜帯
・サイト公開時
・公開サイトからテストサイトにファイル転送時
そのため、手間をかけずにバックアップが可能です。

また、オプションで提供されている外部バックアップサービスでは、最大9日前までのデータが復旧可能です。外部サーバーのFTPアカウントで、バックアップデータのダウンロードがいつでもできるため、迅速な復旧作業を実現します。

4.専用サーバーでのバックアップ方法

CPIの専用サーバーサービスでは、外部バックアップサービスを標準機能として提供しています。レンタルサーバーと同じく、9日前までのデータをFTP転送でダウンロードできるため、万が一事故が起きても復旧作業時間が大幅に短縮されます。

また、自動かつ管理画面から簡単にバックアップできるため、運用コスト削減にも貢献するでしょう。

まとめ

バックアップは、大事なデータを守るために、必ず行うべき作業といえます。
バックアップサービスは、安価で手軽に利用することができますので、ぜひこの機会に検討してみてはいかがでしょうか。
 

 

 

 

レンタルサーバーを乗り換えよう!トラブルなく移転するためのポイントをご紹介

$
0
0


レンタルサーバーを現在とは違うレンタルサーバー管理会社に乗り換えるには、メールやWebサーバー、Webサイトの移行など、さまざまな作業が発生します。万が一のミスは業務に甚大な被害を及ぼしかねないため、移行手順と内容をしっかりと理解しておかなくてはなりません。

今回は、サーバー移転作業をステップごとに解説していきます。サーバー移転をスムーズに行う上で必須の知識ですので、ぜひ参考にしてみてください。

1.サーバーの移転のステップ

サーバー移転とは、現在利用しているレンタルサーバー管理会社を他会社のレンタルサーバーに乗り換える(移行する)ことです。サーバー移転をスムーズに進めるためにも、しっかりステップを把握して移転計画を立てることをおすすめします。
サーバー移転のステップは、大きく分けて5つあります。
事前確認、移転先サーバーのお申込み、サーバーの環境構築、DNSの切り替え、最後に旧サーバーの解約になります。

これらのステップを順序よく的確に行うことで、トラブルなくサーバーを移転できます。順番に見ていきましょう。
◇事前確認
移転先サーバーの管理会社とサーバーレンタル契約を結ぶ際、必ず「新旧サーバーの並行稼働期間」の検討が必要になります。移行作業中にメールやWebサイトを止めないために必要な期間ですので、契約時に確認しておきましょう。

◇移転先サーバーのお申込み
事前確認で問題なければ、移転先サーバーの契約を進めます。

◇サーバーの環境構築
契約後にサーバーの環境構築を行いますが、これは移行するデータやサービスをスムーズに稼働させるためにとても重要なステップです。
このステップをトラブルなく進めるためにも、現在使っているメールサーバーやWebサーバーの環境をしっかりと把握した上で、移転先サーバーの環境でも問題なく使えるようセットアップしましょう。
セットアップは基本的に、「移転先サーバーに現行サーバーの設定を複製」するイメージです。

なお、環境構築の項目は主に以下の4つですが、利用しているサービスによって異なりますので、ご自身の環境に合わせて設定しましょう。

・FTPアカウント作成
・メールアカウント作成
・ファイルアップロード
・データベースの作成とインポート

※Webサイトデータの移行について
環境構築の4つの項目のうち、ファイルアップロードとデータベースのインポートはもっとも重要なため、移行の際のポイントをご紹介します。

ポイントは、以下の4つです。

・移行元のバックアップを取っておくこと
・必要ファイル、不要ファイルをきちんと選別すること
・ツールがある場合それを利用すること
・移行先サーバーのバックアップ設定を行うこと

ファイル移行時は、データ消失などの事故に備えなければならないため、バックアップ取得はとても重要です。
また、キャッシュファイルなどは、基本的に新しいレンタルサーバーでは不要となる場合が多くなります。きちんと選別することで移行ファイルの数を減らすことが出来ますので、こちらも移行する際に行いましょう。

そして移行に使えるツールは、積極的に利用することをおすすめします。
例えばMySQLであれば、mysqldumpなどのコマンドを利用することでミスなく簡単に移行できます。ファイル移行が不安であれば、レンタルサーバー管理会社が提供しているファイル移行サービスを利用するのも一つの手です。

◇DNSの切り替え
DNS(ドメインネームシステム)とは、サーバーのIPアドレス(192.168.1.1のような数字)とドメインを結びつけて振り分けるシステムです。このシステムは、ドメイン登録業者あるいはレンタルサーバー管理会社のDNSサーバー上で動いています。

DNSサーバーは、サーバー移転前の場合は「移転元」サーバーに振り分ける設定がされているため、DNSを切り替えて「移転先」サーバーに振り分けられるようにしなければなりません。
ただし、DNSの切り替え作業は2~5日程度かかりますので、上記で説明したように現行サーバーと移転先サーバーの並行稼働期間を設けるようにしましょう。

◇旧サーバーの解約
旧サーバーの解約は、移転先サーバーですべての機能、サービスの正常稼働を確認後に行います。例えばDNS切り替え作業終了前は、旧サーバーにメールやWebサイトへのアクセスがあるため旧サーバーは停止できません。
DNSの切り替え後、旧サーバーに残ったメールをすべて受信し、Webサイトの切り替え確認が完了して初めて解約の手続きを取ることになります。

2.サーバー移転サービスの紹介

サーバーを移転する際は、上記で説明したように複雑な作業が伴います。
移転作業に少しでも不安がある方は、レンタルサーバー管理会社のサーバー移転サポートを利用してみてはいかがでしょうか。

CPIでは、サーバー移転サポートサービスを提供しており、Webコンテンツの移行やメールアカウントなどの設定を無料でサポートします。
また、稼働しているWebサイトやメールデータ、設定が複雑なCMS、Windows Serverの移行作業もすべて対応可能(有料)です。
現在のサーバーやシステムの状況がよく分からない方、短期間でサーバー移転を完了させたい方には特におすすめのサービスです。

まとめ

スムーズにサーバー移転するには、慎重に作業を進めなければなりません。
サーバー移転に必要な作業ステップはもちろん、現行サーバーのシステム状況やアプリケーションの設定などを把握し、移転先サーバーへ確実に反映させることが必要です。
サーバー移転作業が不安な方や短期間で移転完了したい方は、サーバー移転サービスの利用を検討してみてはいかがでしょうか。

また、CPIのレンタルサーバーへの具体的な移行方法は、下記ページでご案内しております。
各ステップの詳細や目安のスケジュールなども説明しておりますので、移行を検討される方は、こちらをご覧ください。
https://www.cpi.ad.jp/transfer/step/all_cpi/
 

 

サーバーの仮想化とは?仮想化を支える技術とメリット、デメリットについて解説します

$
0
0


サーバーの仮想化とは、仮想化ソフトウェアを使って1台の物理サーバー上に複数の仮想的なサーバーを構築する技術を表します。このサーバー仮想化の仕組みは大きく2つに分かれ、「ホストOS型」、「ハイパーバイザー型」となります。

今回は、それらサーバーの仮想化の仕組みと、そのメリット、デメリットについて解説していきます。

1.サーバーの仮想化とは

冒頭でも軽く触れましたが、サーバーの仮想化とは、ソフトウェア(仮想化ソフトウェア)を使い、物理サーバー上に複数の仮想的なサーバーを構築することです。
そして、この仮想的なサーバーを「仮想サーバー」と呼びます。

仮想化において物理サーバーは1台ですから、CPUやメモリなどハードウェアリソースは1つしかありません。しかし、仮想化技術は仮想サーバーごとにCPU処理量やメモリ容量を振り分けるため、仮想サーバー同士でCPUやメモリを取り合わず、独立したサーバーのように動作します。

2.仮想化を支える技術、仕組み

「ホストOS型」、「ハイパーバイザー型」「コンテナ型」の3つが仮想サーバーを実現する代表的な技術・仕組みです。それぞれ詳しく見ていきましょう。

◇ホストOS型
ホストOS型とは、物理サーバーのOS(ホストOS)にインストールした仮想化ソフトウェア上で、サーバー(仮想サーバー)を構築する技術です。そして、この仮想サーバーのOSはゲストOSと呼ばれます。仮想化のための専用OSを用意する必要がなく、アプリケーションと同じように手軽に実行できます。

◇ハイパーバイザー型
ハイパーバイザー型は、物理サーバーのハードウェアに仮想化ソフトウェア(ハイパーバイザー)を直接インストールして、仮想サーバーを構築する技術です。

◇コンテナ型
コンテナ型の最大の特徴は、ゲストOSを起動しないことです。ホストOSとコンテナエンジンで動作し、アプリケーションに必要なものをまとめたコンテナを、1つの仮想スペースとします。

また、これら3つは、ハードウェアにアクセスする仕組みが違うため、処理性能に差があります。
ホストOS型の場合、仮想サーバーがホストOSを介してCPUやメモリなどのハードウェアリソースにアクセスするため、ホストOS分の余計な処理(オーバーヘッド)が生じます。

一方で、ハイパーバイザー型の場合はホストOSを使わず、ハードウェアに直接インストールされているハイパーバイザーを介して、ハードウェアリソースにアクセスします。そのため、ホストOS型に比べると余計な処理が抑えられ、仮想サーバーはより高いパフォーマンスでの動作が可能です。

最後にコンテナ型ですが、これはホストOS+コンテナエンジンの形になります。ホストOS型、ハイパーバイザー型と違い、ゲストOSを必要としないため、負荷が小さく、動作も速いです。

ホストOS型は、仮想サーバー技術として古くからある手法であるため、以前はサーバー仮想化の主流となっていましたが、現在ではより高いパフィーマンスを誇るハイパーバイザー型が仮想化技術の主流となっています。最近ではコンテナ型も増えてきており、新しい潮流になりつつあります。

3.サーバー仮想化のメリット

サーバーの仮想化を行うメリットとしては、以下の4つが挙げられるでしょう。

◇サーバー集約によるコスト削減
通常時にほとんど処理をしないサーバーや、稼働率が低いサーバーは無駄なコストの原因となります。自社の各拠点に設置したサーバーがあまり稼働していないというケースは、よくあることでしょう。

しかし、複数のサーバーを仮想化して1台のサーバーに集約すれば、物理的なサーバーは1台で済むため、コスト削減につなげられます。

◇省スペース化
前述の通り、複数の物理サーバーを仮想サーバーとして構築すれば、物理サーバーの台数を減らすことができ、省スペースになります。

◇サーバー数を柔軟に増減できる
仮想サーバーは、仮想化ソフトウェアをインストールして設定するだけでサーバーを構築できるため、物理サーバーの構築に比べれば導入コストを削減できます。

また、サーバーが不要になった時、物理サーバーは廃棄の手間がかかります。
しかし、仮想サーバーであれば、ソフトウェアをアンインストールするように、不要な仮想サーバーを削除するだけでサーバーを減らすことが可能です。
サーバー数の増減にも柔軟に対応できるという点は、仮想サーバーの大きなメリットといえるでしょう。

◇ハードウェアの活用効率が高い
仮想サーバーは、設定によってCPUやメモリの使用量を決められます。つまり、個々の仮想サーバーに割り当てるハードウェアリソースを変えることで、効率良くハードウェアリソースを活用したサーバーの稼働を実現できるということです。

4.サーバー仮想化のデメリット

一方、デメリットとしては以下の3つが挙げられるでしょう。

◇処理性能の低下
仮想サーバーは、仮想化ソフトウェアを介してハードウェアリソースにアクセスするため、処理性能の合計は物理サーバー単体と比べて低くなります。
そのため、仮想化したことで、かえって処理スピード落ちてしまう可能性もあります。

◇リソースの見積もりが難しい
複数のサーバーを仮想化して1台にまとめられるメリットがある反面、仮想サーバーは物理サーバーのハードウェアリソースを共用します。
そのため、ハードウェアリソースが予期せず不足する可能性があるので、物理サーバーのスペックは余裕を持つ必要があります。

◇障害対策が必要
仮想化技術を使えば、物理サーバーに複数台のサーバーを集約できますが、物理サーバーに障害が発生すると、すべての仮想サーバーが影響を受けてしまいます。そのため、より入念な障害対策をしたほうが良いです。

仮想化技術を使えばサーバーを集約できるため、多くのメリットがあります。しかしその反面、集約することによってリソースや障害対応などのデメリットが生じることも忘れてはなりません。

まとめ

サーバーの仮想化は、複数のサーバーを集約できるため、省スペース化、リソースの有効活用など多くのメリットがあります。サーバーを集約することで生じるデメリットもありますが、どのようにすれば仮想化の恩恵を受けられるかをしっかりと検討しましょう。その上で、仮想化を活用すれば、より効率的にサーバーを利用することができるでしょう。
 

 

サーバーとは?その種類と基礎知識をご紹介

$
0
0

今回は、基本的なサーバーの種類や仕組み、メリット・デメリットなどの基礎知識を解説していきます。
サーバーという言葉には幅広い意味があり、使う場面によって変わってきます。
まずは、本稿で扱うサーバーの定義について説明します。

1.サーバーとは?

サーバーには、2種類の意味合いがあります。狭義には、要求(リクエスト)に応じて、なんらかのデータを提供するための仕組みのことで、Webサーバーやメールサーバーが該当します。

広義では、上記のようなサーバーを含むハードウェア全体を指し、レンタルサーバーや専用サーバー、VPSなどがそれにあたります。
本稿では、広義のハードウェアとしてのサーバーについて解説していきます。

2.インターネットとサーバーの関係

例えば、普段私たちがWebサイトを見るとき、サーバーはどこで関係してくるのでしょうか。

WEBサイトが表示されるまでの流れは下記です。
・WEBブラウザにURLを入力
・DNSサーバーへURLを送信し、IPアドレス(インターネット上の住所)へ変換
・該当IPアドレスのWEBサーバーにアクセス
・WEBサーバーからWEBページのデータを提供してもらい、WEBブラウザに表示

このように、インターネット上にはサーバーがたくさんあり、住所を指定してアクセスすることで、私たちは任意のデータをブラウザで表示することができます。

そして、このインターネット上のサーバーはすべて同じではなく、いくつか種類があり、その種類に応じてメリット・デメリットも存在します。
ここからは、そのサーバーの種類と違いについて解説していきましょう。

3.共用サーバー、専用サーバー、VPS、クラウド~それぞれの違いとメリット・デメリット~

ここでは代表的な4つサーバーの違いや、メリット・デメリットについてご紹介します。

・レンタルサーバー(共用サーバー)
・レンタルサーバー(専用サーバー)
・VPS
・クラウド

◇「共用サーバー」とは何か?
共用サーバーとは、レンタルサーバーの一種であり、サーバーを複数ユーザーで共同利用するサービス形態です。
共用サーバーの特徴は、CPUやHDDなどのハードウェアリソースを利用者がシェアする(共用する)という点にあります。サーバーのハードウェアリソースをフル活用できないため、個人のWebサイト、中小規模サイト、企業案内のみのサイト等の用途が考えられるでしょう。

ただし、共用サーバーは他のサーバーサービスより比較的安価で利用できる点はメリットといえます。
一方のデメリットとしては、サーバーをシェアしているため設定を自由に変えられない点、他の利用者がCPU・ネットワークを多く使うと、自身の処理に影響が出るという点が挙げられるでしょう。

◇「専用サーバー」とは何か?
専用サーバーは、物理サーバーを1台丸ごとレンタルして、大容量ストレージと物理サーバーのCPUやメモリを独占利用するサービスのことです。

専用サーバーのメリットとしては、他の利用者の影響を受けずにサーバーを使えることや、サーバーの管理者権限(root権限)を付与されるサービスを利用すれば、自由にサーバーの設定を変更できることが挙げられるでしょう。

一方デメリットとしては、自社でサーバーの運用・構築をしなければならず、共用サーバーに比べると運用コストがかかる点が挙げられます。
また、サーバーが専用でも回線が共用されている場合、他のサーバーによる回線利用の影響を受けることがあります。

◇「VPS」とは何か?
VPS(Virtual Private Server)とは日本語で「仮想専用サーバー」と呼ばれるサービスで、1台の物理サーバー上に構築された仮想サーバーを利用します。

共用サーバーと同じように1台の物理サーバーを共用しますが、仮想サーバーをレンタルするため、インストールするアプリケーションを選べるなど、サーバー設定の自由度が高いというメリットがあります。
また、仮想サーバーごとに使用できるハードウェアリソースが割り当てられ、それを専有して使えるので、他のユーザーの影響を受けにくいという点もメリットのひとつです。

ただし、物理サーバーの運用・監視は管理会社が行いますが、仮想サーバーの構築、設定、運用をユーザーで行う必要があり、導入・運用コストや工数がかかってしまう点がデメリットとして挙げられます。

◇「クラウド」とは何か?
クラウドはさまざまな意味で使われる単語ですが、ここではクラウドをサーバーとして利用する視点から解説します。

クラウドは、VPSと同じように仮想サーバーをレンタルするサービスです。しかし、クラウドはCPUやメモリ、ストレージを自由に決めたり、あとで変更したりすることができます。
このような拡張性(スケーラビリティー)・柔軟性は、クラウド最大のメリットといえるでしょう。

デメリットとしては、サーバー・ストレージ・ネットワークなどすべての設定を自社で行わなければならないため、利用には専門知識が必要になる点が挙げられます。
また、料金体系が従量制のため、予期しない大きな処理やネットワーク通信が生じた場合、使用料金が跳ね上がることがあります。そのため、予算計画を立てにくいという点もデメリットといえるでしょう。

まとめ

今回は、広義の物理的な意味でのサーバーとその種類や違いについて解説しました。
今回ご紹介した4つのサーバーには、それぞれメリット・デメリットがあります。メリット・デメリットをしっかりと理解した上で、ご自身にとって適切なサービスを選んでみてください。
 

 


レンタルサーバーとクラウド化。違いとメリット、デメリットを解説します

$
0
0


レンタルサーバーとクラウドはまったく異なるものですが、「その違いが分かりにくい」と感じる方も多いのではないでしょうか。
どちらも、外部にあるサーバーを利用する点では同じですが、サーバー利用の仕組みやコスト負担、サービスの拡張性など、レンタルサーバーとクラウドでは大きく異なる点が多々あります。

今回は、レンタルサーバーとクラウドの違いやクラウド化についてご紹介するとともに、クラウドのメリット、デメリットについて解説していきます。
なお、本稿内の「レンタルサーバー」は、主に「共用レンタルサーバー」を指すこととします。

1.レンタルサーバーとクラウドの違い

レンタルサーバーは、「1台のサーバーを複数の利用者で共有する」形態です。シェアードサーバーとも呼ばれるこの形態は、複数の利用者が物理的なサーバーのCPUやメモリを共有します。そのため同一サーバーを利用しているユーザーは、サーバーの性能を全員で共有することになります。

一方のクラウドは、クラウドサーバー管理会社が提供する物理的なサーバー内の仮想サーバー(物理的なサーバー内に複数の仮想的なサーバーを作る技術)を使用します。もちろん物理的には1つのサーバーなのでCPUやメモリは共有するのですが、仮想サーバーごとにきちんと割り当てて管理するため、複数の利用者で性能まで共有することはありません。

つまり、レンタルサーバーとクラウドでは、「CPUやメモリの性能を共有するか否か」が大きく異なるということになります。

2.レンタルサーバーをクラウド化するとは

では、レンタルサーバーをクラウド化するとはどういうことでしょうか。
これは、簡単に説明すると、現在利用しているレンタルサーバーのサービスを、クラウドサービス提供会社が用意した仮想サーバーに移転・運用するということです。

CPUやメモリの性能を共有しないクラウドは、レンタルサーバーでスペック不足を感じた際には、移転先として選択することもよいかもしれません。
確かに、レンタルサーバーをクラウド化するということは、性能を共有しないサーバーに移管するということになり、後述する拡張性や、自由なカスタマイズができるというメリットは得られます。ですが、その反面レンタルサーバーとクラウドの違いをしっかり把握していないと、移転がうまくいかない可能性があります。

そのため、レンタルサーバーとクラウドの違いとメリット・デメリットを理解した上で、最適なサーバーを選ぶことが大切です。
ここからは、クラウド化するメリット、デメリットについて見ていきます。

3.クラウド化のメリット

クラウド化の主なメリットとして、以下の4つが挙げられます。

◇サーバーの導入費用がかからない
たいていの場合、クラウドサーバーを契約する際は初期費用がかからないことが多く、初期のコスト面でサーバー導入のハードルを下げられる可能性があります。

◇サーバーのカスタマイズが自由
1台の独立した仮想サーバーを利用するため、サーバーを自由にカスタマイズできます。
CPUを多めに積んだサーバーや、メモリに特化したサーバーなど、柔軟な構成が可能です。

◇サーバーの拡張性に優れている
クラウド化したサーバーはスペックアップ、スペックダウンを柔軟に行えます。例えば、最初はミニマムで利用し、アクセスが増えてきた段階でCPUやメモリを増やすことも可能です。

4.クラウド化のデメリット

クラウド化の主なデメリットとして、以下の3点が挙げられます。

◇レンタルサーバーに比べて運用コストがかかる
クラウドは仮想サーバーを使っているため、仮想化のためのソフトウェアコストが含まれてしまい、一般的にレンタルサーバーと比べて、同スペックにおける価格が高い場合が多いです。
そのため、一ケ月間立ち上げたままにするサーバーを契約する場合、あらかじめ運用コストを見積もっておく必要があります。

◇利用料金が従量制である
レンタルサーバーは、一定の月額費用を支払えば利用できますが、クラウドの多くは通信量やCPU使用量などによって費用が変動する従量制料金体系です。レンタルサーバーの場合、どれだけ使っても月額利用料が変わらないプランなので、その点は大きな違いといえます。

つまり、レンタルサーバーは予算・支払い計画が立てやすいものの、クラウドは予算計画を立てづらいということになります。同スペックにおけるコストが高いということとあわせて、クラウド利用時には十分な注意が必要です。

従量課金となると、一ケ月のうち数日だけ使うような用途の場合、レンタルサーバーと比べて安く済むという側面もあります。しかし反対に、サーバーを立ち上げたままにして、負荷が大きくなった際に自動で拡張する設定等の場合、料金が跳ね上がる可能性も考えられるでしょう。

◇運用がレンタルサーバーと比べて煩雑
レンタルサーバーには管理画面がある場合が多く、WordPressのインストールサポートやバックアップの設定が可能ですが、クラウドでそのような管理画面があることはあまりありません。
そのため、きちんとしたサーバー管理者を立ててクラウドを管理していく必要があり、レンタルサーバーと比べると、その点は煩雑となってしまう場合が多いです。

まとめ

クラウドには、初期費用がかからない、サーバーの拡張性やカスタマイズ性に優れているなどのメリットがあるため、一見手軽に利用できると考えがちです。しかし、仮想サーバーを1台借りるため、煩雑な運用が発生したり、サーバー管理者を立てたりなど運用コストもかかります。

一方、レンタルサーバーはCPIを例に挙げると、初期費用は無料となり、一定の月額費用でオプションを追加すれば、24時間365日手厚い運用サポートを受けられます。
これからサーバーを利用しようと考えている場合、より手軽でトータルコストも安価な、レンタルサーバーのメリットは大きいといえるでしょう。
 

 

マルチドメイン(複数ドメイン)対応のレンタルサーバーとは?

$
0
0

 


レンタルサーバーの機能の中で、「マルチドメイン対応」という表記を目にすることも多いかと思います。では、そのマルチドメイン対応とは一体どのようなものなのかご存知でしょうか?
マルチドメイン(複数ドメイン)は、企業で複数のWebサイトを制作する場合などに、非常に便利な機能です。その機能とはどのようなものなのか、確認していきましょう。

1. マルチドメイン(複数ドメイン)とは

マルチドメイン(複数ドメイン)とは、1つのレンタルサーバー契約の中で、複数のドメインでWebサイトを作成できる機能のことです。以降、本文内では表記を「マルチドメイン」に統一します。

例えば、「example.co.jp」と「example.jp」という2つのドメインを取得していたとすると、「example.co.jp」と「example.jp」のURLを持つ2つのWebサイトを、1つのレンタルサーバー契約の中で制作・運用できるということになります。もちろん、追加で他のドメインを取得したとしても、その取得したドメインも合わせて運営することが可能です。

最近では、企業が複数のWebサイトを運営することも珍しくなくなってきました。大企業はもちろんのこと、中小企業などでも企業紹介のコーポレートサイトと、商品やサービスのWebサイトを分けて運営しているところも多くなっています。

具体的には、「example.co.jp」の属性ドメインでコーポレートサイトやイントラネットを運営し、商品やサービスなどを「example.jp」で運営するなどがあります。

そういった意味では、複数のWebサイトを手軽に管理・運営可能なマルチドメイン機能がついたレンタルサーバーは、今や必須の機能といっても過言ではないでしょう。

2.レンタルサーバーでマルチドメイン運用するメリット

マルチドメインでの運用のメリットは、何よりも複数サイトの管理が非常に楽になるという点です。仮に、複数サイトをそれぞれ違うレンタルサーバーで運用するとなると、レンタルサーバーごとに仕様などが異なるため、それぞれのWebサイトの管理が非常に煩雑になってしまいます。
しかし、マルチドメインで運用することで、1つのレンタルサーバーに複数サイトを集約することができ、Webサイトを効率的に管理・運営することが可能です。

また、複数のレンタルサーバーで運用する場合、当然ですが費用もその分必要になります。マルチドメインで運用することで、レンタルサーバーの費用を1つのサーバーのみの費用で運用できるようになり、コスト削減にも繋がります。

3.レンタルサーバーでマルチドメイン運用するデメリット

マルチドメインを利用するデメリットとしては、1つのレンタルサーバー契約で運用しているため、そのレンタルサーバーに何らかの障害が発生した場合には、全てのドメインが影響を受けてしまうことです。

また、レンタルサーバーの中にはマルチドメインに対応していても、利用可能なドメイン数が決まっています。マルチドメインで複数サイトの運用を考えている方は、利用可能ドメイン数をあらかじめ確認しておきましょう。

 

 

4. マルチドメインに関するQ&A

マルチドメインに対する、よくある疑問をまとめてみました。契約前に、このような部分は確認しておくとよいでしょう。

Q:マルチドメインは、どのようなドメインでも運用可能ですか?
A:日本語ドメインなども含めて利用できることが多いですが、一部受け入れ出来ないドメインがあるレンタルサーバーもあります。契約前には確認しおきましょう。

Q:利用可能なドメイン数はいくつでしょうか?
A:レンタルサーバーによって、マルチドメインで利用可能なドメイン数は異なります。あらかじめ、利用可能なドメイン数を確認しておきましょう。

Q:マルチドメインで作成したWebサイトを、全て WordPressで運用したいのですが可能でしょうか?
A:ほとんどのレンタルサーバーで可能ですが、データベースの利用可能数についても確認しておきましょう。

現在のWordPressはプレフィックスを変更することにより、1データベースで複数サイト利用することも可能ですが、あらかじめデータベースの利用可能数を確認しておくことをおすすめします。
なお、プレフィックスは日本語で接頭辞と言い、WordPressデータベース内の各データ(テーブル)が、それぞれどのWebサイトのものか区別するために付ける名前の先頭部分となります。

Q:ドメインを新たに取得しましたが、ドメインを追加したらすぐ使えるようになりますか?
A:マルチドメインに限らず、一般的なレンタルサーバーでは、ドメイン追加後にDNS設定をする必要があります。

まとめ

現在では、企業が複数のWebサイトを運営することは多く、複数のWebサイトを管理・運営することを考えれば、マルチドメインが利用可能なレンタルサーバーを選ぶのが最適でしょう。

CPIでは、共用サーバーのシェアードプラン「ACE01」でも、複数のマルチドメインや、CMSに欠かせないデータベースが複数利用可能になっています。

Webサイトの将来を見据え、複数のサイト運営が可能で、安定したレンタルサーバーを選びましょう。
 

 

Internal Server Error HTTP500 解決方法

$
0
0

ウェブサイトを閲覧中に「Internal Server Error HTTP 500」が表示されたことはありますでしょうか。
急にこんなエラーがでてきたら、何か悪いことをしたかと、ドキドキしてしまいますよね。

今回の記事では、「Internal Server Error HTTP 500」とは何か、HTTP500の解決方法をご紹介いたします。

 

Internal Server Error HTTP 500 とは

 

Internal Server Error HTTP 500 とは、閲覧しているウェブサーバー上でエラーが起きており、ウェブサイトが正しく表示できない状態のエラーコードです。

サイトの閲覧者は何もすることができないので、しばらくたってから接続し直してください。

 

PHP エラー時の解決方法

 

PHPが原因で、HTTP500エラーが出力される場合は、PHPのエラー出力をOnに設定変更し、どこでエラーが出ているかを確認します。
(注意)この設定変更は記述を間違えると、全てのページでエラーになりますので、必ずテストサーバーで検証してください。

CPIサーバーの場合

php.iniファイルを、ウェブサーバーに設置し、下記コードを変更します。
(php.ini設置方法はCPIオンラインヘルプ「PHPの設定変更方法」を参照ください)

display_errors = Off 
↓↓↓下記に変更
display_errors = On

.htaccessに記述する場合

* CPIサーバーの場合動作いたしません。

.htaccessに下記のコードを追記します。

php_flag display_errors on

 

上記コードを追加するとPHPのエラー原因、ファイル名、行数が表示されます。
このエラーをヒントにプログラムを修正してください。

エラー解除後はPHPのエラー出力をオフに戻してください。

 

その他でエラーがある場合

 

その他でエラーがある場合は、サーバーのログを確認すると良いでしょう。
CPIサーバーの場合は「/log/ssl-error_log」か、「/log/httpd-error_log」を確認ください。

[日時] [alert] [client 60.***.***.***] /usr/home/****/html/test/.htaccess: Invalid command 'php_flag'

上記のようにエラーが確認できましたら、ログをヒントにソースコードを修正してください。
今回の場合は「.htaccess」にエラーがあるようです。

 

さいごに

 

HTTP500エラーが出力される場合は、プログラムのどこかに記述ミスがあることがほとんどです。
エラー出力や、ログ確認を行うか、最近修正したファイルを確認すると良いでしょう。

最近修正したファイルは、サーバーコンソールにログインし下記コマンド実行すると、確認することができます。

find ./ -type f -mtime -15

サーバーコンソールへのログインはCPIオンラインヘルプを参照ください。

 

Not found 404 エラーの原因と対策と確認方法

$
0
0

ウェブサイトを閲覧中に表示される「Not found 404 エラー」が表示されたことはないでしょうか。
今回の記事では「Not found 404 エラー」とは何かと、解決方法をご紹介いたします。

 

Not found 404 エラー とは

 

Not found 404 エラーとは、アクセスしたURL(ウェブサイトのアドレス)に、表示するページが無い場合に、エラーが出力されます。
一般的にはリンク切れや、URLの打ち間違え、間違ったリダイレクト処理をしている時に起こります。

CPIスタッフブログの場合下記ページが表示されます。

ウェブサイト閲覧者は、アクセスしたURLに間違えがないか確認をしてください。
確認したURLに間違えがない場合は、しばらく経ってから、サイトにアクセスし直してください。

 

自社サイトのNot found 404 エラー確認方法

 

自社サイトで「Not found 404 エラー」がどれくらい出力されているかの確認はGoogle Analyticsを使うと確認することができます。

  1. Google Analyticsにアクセスします。
  2. 「行動 > サイトコンテンツ > ランディングページ」にアクセスします。
  3. セカンダリディメンションに「ページタイトル」を追加します。

     
  4. セカンダリ ディメンション欄の「アドバンス」をクリックし、ページタイトルで絞り込みを行います。

    ページタイトルは、実際にNot found 404 エラーページを表示させ、そのタイトルを入力してください。
     

  5. 実際にユーザーがNot found 404 エラーになっているURLを確認することができます。

 

解決方法

 

Not found 404 エラーの解決方法は、リンク切れを無くすことが重要ですので、上記でエラーページを確認し、そのリンクを修正するだけです。

リンクを修正してもURLの打ち間違えなどで「Not found 404 エラー」が出力されることもあります。
そのような場合のために「Not found 404 エラー」ページを用意し、サイト内のコンテンツ一覧を表示することで離脱率を軽減することができます。

Not found 404 エラーページの用意

.htaccessを設置し、下記のコードを追加します。

ErrorDocument 404 https://example.com/404.html

上記コードを追記することで、サーバー内部でページが見つからない場合に、404.htmlを表示します。

 

 

CPIサーバー + CDNで、お手軽高機能、セキュアサーバー構築方法

$
0
0


共用型サーバーを借りているが急なトラフィックが心配だったり、セキュリティに対して不安を感じたりする方も多いのではないでしょうか。
今回の記事ではCPIの共用型レンタルサーバーACE01 + CDNを導入し、急なトラフィックの対策や、セキュリティを強化できる構成の紹介と、導入方法をご紹介いたします。

CPIのお客様でも、ACE01とCDNを組み合わせ、サイトを運用している方も多く存在します。

 

目次

 

CDNとは

 

CDNとはContent Delivery Networkの略で、コンテンツを効率よく配信するための仕組みです。

ユーザー(Webサイトの閲覧者)が、https://example.com」にアクセスをすると、そのユーザーから近いCDNからコンテンツが配信されます

CDNは世界に複数台配置されており、アクセスが負荷分散され、急なトラフィックでも、Webサーバー(オリジン)への負荷を最小限にすることができます。

またユーザー(Webの閲覧)からのリクエストにはCDNが返答をしますので、Webサーバー(オリジン)の存在を隠すことができます。そのためCDNを導入することで、不特定多数からの攻撃を効果的に遮断することができます。

CDN導入で得られる効果

  • 急なトラフィックに対応できる
  • セキュアな構成が構築できる

その他、高可用性(対障害性)など、様々な効果がありますが、全て書いていると長くなるので、これ以上の情報は、その他のサイトを参照ください。

 

CDN導入方法

 

まずはCDN事業者を選定します。CDN業者は数多くあり、よく使われているのは下記ではないでしょうか。

 

今回はこれら事業者の中からレッドボックスとCPIの共用型サーバーACE01を使い、導入方法をご紹介いたします。
なぜレッドボックスをご紹介するかというと、レッドボックスは国内ベンダーで、面倒な設定はレッドボックスが行います。

さらに、料金が定額で、毎月固定の利用料を支払います。日本の商習慣上、利用した分だけ利用料を払うというより、固定金額の方が楽ですよね。

 

CDN導入手順

それでは実際に、テストURL「cdn-test.mochiya.co」に対してCDNを導入します。
(CPIサーバーは契約していて、cdn-test.mochiya.coにサイトがある想定です。)

  1. レッドボックスに申し込みをします。
    レッドボックスは申し込みからサービス利用開始まで最短で2営業日。そこからキャッシュの設定などを合わせると4営業日くらいでサイトに組み込むことができます。
     
  2. 申し込みが完了すると、CDNのURLと、レッドボックスのコントロールパネルのIDとPWが発行されます。
    [CDN URL例] user0004.cdnw.net
     
  3. DNS変更

    CDNのURLが発行されたら、
    cdn-test.mochiya.co のAレコードを削除し、CDNのURL( [例]user0004.cdnw.net )をCNAMEに登録します。

     

  4. CMSの管理画面がキャッシュされないよう設定を申し込みます。

    CMSの管理画面をキャッシュしなようにする理由は、管理者がサイト管理するために開いたページがキャッシュされ、一般のユーザーにも閲覧できてしまうためです。
    そのために、WordPressの場合「/wp-admin」、Drupalの場合「/admin」などが管理画面のURLになりますので、キャッシュされないように設定します。
    設定は、レッドボックスにWordPressを使うので、管理画面をキャッシュしないでと、お問い合わせフォームなどから依頼するだけです。
    (なんて楽なんでしょう)

    本来であれば、「/wp-admin」以外にも、RSSや、記事のプレビュー画面など、管理画面で使う箇所を除外する必要があります。

以上で、CDNの設定は完了です。

 

Webサーバー(オリジン)と、管理画面のアクセス制限

CDNを導入すると、Webの閲覧にはCDNがコンテンツを返答をします。ですのでWeb閲覧者は、Webサーバー(オリジン)へのアクセスは不要になります。
まずはWebサーバー(オリジン)へアクセスできるユーザーをCDNのみに制限します。

  1. Webサーバーの「/.htaccess」を編集し下記のコードを追加します。
    	SetEnvIf X-redbox-Auth KEY-NUMBER allow-cdn # レッドボックスを許可
    	order deny,allow
    	deny  from all
    	allow from env=allow-cdn

X-redbox-Authは、レッドボックスが独自に発行するヘッダー情報です。KEY-NUMBERは、レッドボックスを契約後に設定していただきます。
この設定で、WebサーバーにはCDNからしかアクセスができなくなります。

 

管理画面にアクセスできるユーザーを特定のIPのみに制限をかけます。

例として「/admin」ディレクトリに制限をかけます。

  1. 「/admin/.htaccess」ファイルを作成します。
  2. 下記のコードを追加します。
    SetEnvIf X-Forwarded-For 127.XXX.XXX.XXX allowip
    SetEnvIf X-Forwarded-For 157.XXX.XXX.XXX allowip
    order deny,allow
    deny  from all
    allow from env=allowip

    通常のIP制限は、allow from 127.XXX.XXX.XXX のように記述をしますが、CDNなどを経由した場合のユーザーのIPは「X-Forwarded-For」で判定ができます。

特定のIP以外はWebサーバー(オリジン)にアクセスができなくなります。

 

 

負荷検証

 

負荷検証はApache Benchや、JMeterを使うことで、サーバーの性能を評価することができます。
(実際に負荷検証を行う場合は、レットボックスに一声かけてくださいとのこと)

では、実際にどれくらいのリクエスト数に対応できるようになるかと言いますと、こちらもレッドボックスに相談すると、想定のリクエスト数や、アクセスのシミュレーションから、適切にチューニングをしてくれます。

ではジャブ程度に、2000リクエスト投げてみます。

ab -n 2000 -c 200 http://cdn-test.mochiya.co/

Failed request : 0
Requests per second : 426.14 [#/sec]
Time per request : 469.325 [ms]

同時に2000リクエストなげて、エラーが0でした。
2000リクエストを処理するのにかかった時間は、Time per request: 469.325[ms] (mean) でした。1秒は1000msですので、1秒以内に2000リクエストに応答しています。

これを単純に計算すると下記のとおり、リクエストを処理することができます。

1分:12万リクエスト
1時間:720万リクエスト
1日:1億7千万リクエスト

なかなか良い結果であることが分かるかと思います。

ご注意

上記数値はあくまでも単純に計算した数値で、数値を保証するものではございません。
サイトの性質や、導入するプランにより応答可能なリクエストが変わってきますので、導入前に一度ご相談ください。

 

レッドボックスの管理画面から、リアルタイムで現在のキャッシュヒット率や、リクエスト数を確認することができます。
約2000リクエストで、キャッシュヒット率が100%ですので、Webサーバー(オリジン)に負荷がかかっていないことが分かります。

 

さいごに

 

今回の記事では、CPIの共用型レンタルサーバーACE01と、レッドボックスの組み合わせをご紹介させていただきました。
共用型レンタルサーバーでも組み合わせ方次第では、急なトラフィック対応や、セキュアな環境構築を行うことができます。

お手軽に、高トラフィックに耐えられて、セキュアな環境が構築できるのはウェブ担当者にとって魅力的ですよね。
ぜひ、今回の構成を参考にしていただけると幸いです。

 

関連リンク

使用したWebサーバ : CPI ACE01
使用したCDN : レッドボックス

 

CPI専用サーバーが合格発表、決算セールなどのアクセス集中を解決

$
0
0


こんにちは!みなさまはアクセス急増(バースト)に関するこんな悩みをお持ちではありませんか?

  • 合格発表で毎回サーバーがダウンする・・・
  • 決算セールでアクセス急増。神経がまいってしまう
  • サーバースペックが古すぎて遅いし落ちる
  • 共用サーバーで503エラーが頻発する

今回は、これらの悩みを解決できる「CPI専用サーバー」を紹介します。「落ちない・サクサク動く・手間がかからない」からこそ、「売上げアップ」や「ウェブ出願対策」などの「将来を見越したウェブの運営環境」を実現した成功事例を取り上げながら、専用サーバーのメリットをお伝えします。

とりわけ以下のようなサイトで大きな効果を感じていただけますよ!

  • ECなど日常的にアクセスが多いサイト
  • 大学の合格発表などアクセス急増日が明確なサイト
  • 共用サーバーで503エラーが頻発するサイト

ECサイトを運営している方、学校ホームページに携わるウェブ制作会社の方、非エンジニアなサーバー担当者の方はお見逃しなく。それでは見ていきましょう!

CASE1 大学の合格発表でサーバーが落ちる

3月が近づくと毎年CPIに殺到するご相談があります。大学の合格発表でサーバーが落ちる・・・というものです。

合格発表は瞬間的なアクセス集中の代表例です。年間で最大のアクセスが来る恐怖の60分といったところでしょうか。このわずかな時間を耐えられるサーバーを用意したいというご相談です。

こうしたご相談をいただくとCPIでは状況をお電話でうかがい、具体的なサーバー構成を営業が提案します。サーバー構成資料をお送りするので、用途を満たしているか、コスト面で納得できるかなど、学内で十分にご検討いただけます。

とは言え、「合格発表の一瞬だけのために専用サーバーを導入するのはハードルが高い」と感じる方も多いのではないでしょうか。こう感じた時は、学校全体のウェブプロモーションを振り返って必要性を確かめてみてください。

というのも、昨今は志願者を集めるためにウェブでプロモーションを強化する学校が増えました。ウェブで集客をしている学校ではブログ記事がバズるなど、突発的なアクセスが来ることもあり得ます。オープンキャンパスの告知や申込みをウェブで行う学校は相当数ありますし、紙の願書を廃止して「ウェブ出願に一本化」する学校も増えています。

全体で考えると「アクセスが集中するのは合格発表だけではない」のではないでしょうか。合格発表・学校PR・オープンキャンパスなどの告知や申込み・出願までもウェブが担う。こうなってくると「ウェブの安定性」は学校の生命線と言っても言い過ぎではないかもしれません。肝心な時だけでなく、突発的なアクセスがいつ来てもいいように常時ある程度のスペックを用意できると安心です。


クラウドサーバーが良いのでは?

昨今、アクセス集中時の対策として、サーバーのスケールアウトが容易なAWSなどのクラウドサーバーが人気です。しかし、クラウドサーバーに狙い通りの動きをしてもらうには「オートスケールさせるために適切な閾値を設定する」などの専門知識が必要です。非エンジニアの方が運用するには難易度が高く、できたとしてもその労働負荷は大きいものになりがちです。かといって、サーバー管理のために専門家を雇うと一気にコストも膨らみます。

専用サーバーなら非エンジニアでも大丈夫

その一方で専用サーバーには「マネージド専用サーバー」というサーバー管理を丸投げできるプランがあります。ハイスペックサーバーを専有でき、複数台構成で高トラフィックに備えたり、負荷分散装置のロードバランサーを加えてアクセス集中対策をしたりと、都合に合わせた運用が可能です。

これならば専門知識は不要で、ハイスペックサーバーの安定性・セキュリティ面での安全性・操作の快適性が手に入ります。費用は、たいていクラウドサーバーと同じぐらいにおさまります。

ここで専用サーバーのメリットを活かして合格発表やウェブ出願時のアクセス対策を万全のものにした松本大学さまのエピソードを紹介します。

松本大学さまの合格発表事例

松本大学さまは、以前は「複数台の共用サーバー」で学校のウェブサイトを運営されていました。しかし合格発表では過負荷によるサーバートラブルが起こるので、発表当日は大学の担当者もウェブ制作会社もサーバー監視や電話対応に追われました。合格発表時のトラフィックは専用サーバーでないと耐えられない数値を記録していたと言います。

そこで、「合格発表で落ちないサーバー」を使うこと・「合格者の情報を更新できるCMS」を導入することの2つの方針のもと、「CPIのroot権限付き 専用サーバー」にMovable Typeを載せて制作されたサイトがリリースされました。以後、合格発表でサーバーが落ちる事態は起こっていません。

その後、同大学では「ウェブ出願一本化」を決定、応募の入り口がウェブのみになるので絶対に落ちないサーバーに増強しよう!ということになりました。

このご相談を受けたウェブ制作会社さまは、サーバーの管理をCPIに全て任せられる「マネージド専用サーバー」2台構成を提案し採用されました。

「サーバーダウンは絶対に避けたい」という意向だったので「24時間365日のサーバー監視とサポートがついているプランが、他社の同等のプランよりも安い」ことが評価されての導入決定でした。
以後、安定稼働しており、合格発表やウェブ出願を安心して迎えられるようになったと嬉しい感想をいただいています。

松本大学さまのマネージド専用サーバー負荷分散プラン

「松本大学」さまの導入事例全文

CASE2 決算セールでサーバーが落ちる

3月は決算セールの季節ですね。通常よりアクセスが多くなりサーバーに負荷がかかる大変な時期でもあります。セール情報をメールマガジンやウェブアプリのプッシュ通知で流すため、情報発信の直後からアクセスが激増するのも特徴です。

ECサイトは稼働率が売上に直結します。万が一落ちると1円の売上もあがりません。負荷分散と冗長化(サーバーを複数台にするなど余裕を持たせること)を高いレベルで維持したいところです。このような事情から、ECサイトの方からは「3月の決算セールでサーバーダウンによる機会損失を防ぎたい」というご相談をいただきます。

こうしたECサイトの問題を「CPIのroot権限付き 専用サーバー」で解決したプロショップオオツカさまの事例を紹介します。

プロショップオオツカさまの事例

プロショップオオツカさまは、長年契約しているサーバーに大きな不満を感じておられました。15年も前に契約したものだったのでスペックが古く、釣具のECサイトは月に2~3度もサーバーが落ちていました。釣りの旬の時期に限って落ちるので大きな機会損失だったと言います。担当の方は復旧や負荷分散作業に時間をとられ、ストレスで胃潰瘍にもなりました。サーバー会社には「実態に合ったサーバー構成の提案」を依頼しましたが難しいと断られてしまい、サーバーの乗り換えを決めたそうです。

同社のECサイトは約20万件のデータベースを扱います。担当の方はこれを処理できるハイスペックのサーバーを提供している会社を探し、KDDIブランドの安心感からCPIにお問い合わせいただきました。

CPIの決め手は2つありました。1つ目は以前のサーバーの10倍のスペックが月額で数千円も安く利用できることでした。2つ目は、同社の状況をふまえてサーバー構成を提案する営業の存在です。「CPIの営業担当の方が、会社にサーバー構成を説明するための資料を快く作ってくれたおかげで社内決裁もうまくいった」と喜んでおられました。

導入後の使用感はというと、「まるで空気。サーバーの存在を気にしなくてよくなった!」とのこと。CPIの営業もこのコメントには大喜びしています。

プロショップオオツカの担当者さまが「CPIと以前のサーバーの違いを上司に説明したい」と、CPIの営業担当に依頼した社内向け資料の一部。

「プロショップオオツカ」さまのサーバー構成

約10倍の性能のサーバーがこれまでより安価で利用できるように。使用感はまるで空気。大量の画像アップロードも一瞬になり商品登録担当者の作業時間も短縮された。
「プロショップオオツカ」さま導入事例全文

CPIには専用サーバーが2種類ある

CPI専用サーバーには2種類あります。root権限付き 専用サーバーとマネージド専用サーバーです。1つのサーバーを専有する点は同じです。

サーバーの管理権限である「root権限」をお客さまが持つ専用サーバーは、用途に合わせて様々なカスタマイズが可能です。自由度が高い反面、サーバーのセキュリティ対策や運用・管理に関する専門知識が必要です。事例で紹介したプロショップオオツカさまはこちらのパターンです。

もう一方のマネージド専用サーバーは、サーバーの管理をCPIが行うため専門知識がほとんど必要ありません。お客様はコンテンツの運営に力を注ぐことができます。事例で紹介した松本大学さまはこちらのパターンです。

マネージド専用サーバーで冗長構成ができる

CPI専用サーバーの2つのプランはどちらも冗長構成(複数台を組み合わせるなどしてサーバーに余裕を持たせること)が可能です。特に、サーバー管理を委託できる「マネージド専用サーバー」においては、冗長構成OKの会社が少ないので、非エンジニアが中心となってサーバー管理をするケースにぴったりです。

負荷分散・セキュリティオプションも充実

CPI専用サーバーは負荷分散対策のためのロードバランサーなどのネットワーク系オプションや、専用ファイアウォール・不正侵入検知システム・WAF・改ざん検知などのセキュリティ系オプションも充実しています。サーバーの目的に合わせて色々な構成が可能です。例えば松本大学さまのケースでは「絶対にサーバーを落としたくない」方針からロードバランサー(負荷分散装置)でアクセスを2つのサーバーに分散する構成が採用されています。

個別にヒヤリングを実施、最適な構成を提案

「不正侵入検知」をしっかり行いたいなど、CPIには用途に応じた構成を提案できる営業部隊がいます。現状や目的を伝えると専任の営業担当がぴったりの構成をご提案します。非エンジニアの方であっても、分かりやすい資料を合わせて提出するので内容を理解してから申し込みが可能です。こうした資料は事例にもあったように、社内向けの提案資料としても利用いただけます。上司や同僚への説明時にそのまま使える点が好評です。

でも、CPI専用サーバーって高いよね?

CPI専用サーバーと言えばKDDIブランドということもあり「高い」というイメージをお持ちの方が多いかもしれません。しかし「用途を満たすスペックの見積書」で比較するとむしろ安いケースが多いと、幾人ものお客様はおっしゃいます。

松本大学さまのサイトを手掛ける制作会社のプラルトさまに、CPIの価格についてうかがったところ、「CPIの初期費用は、クラウド系をはじめ他のサーバーと比べると高いけれども、運用開始後にかかる費用が断然安く、トータルで見るとリーズナブルな価格で利用できる」とコメントされました。特に24時間体制の監視などが必要な場合は顕著だそうです。

「お客さまへのサーバー提案をサポートいただけることに高い価値を感じます。」「自社にサーバーのスペシャリストがいなくても大丈夫です。」「サーバーの性能とCPIの提案力をセットで考えれば、CPIの導入費用は決して高くありません。」これが実際にCPI専用サーバーを利用いただいているお客様の感想です。

おわりに

CPI専用サーバーは、非エンジニアの方が十分に利用いただけるサービス体制を整えています。「合格発表でのサーバーダウン」「決算セールでの高負荷」「サーバースペックが古すぎる」「共用サーバーで503エラーが頻発」。そんな悩みをお持ちの方は気軽にCPIのお客様専用ダイヤルにお電話ください。大切なアクセスを逃さぬよう、機会損失をしないよう、そして売上を上げるための安心の基盤を作っていいただけるよう全力でお話をうかがいます!

ここまでお読みいただきありがとうございました。みなさまのサーバーが安定したものとなることを心より願っております。


CPIに関するメールや電話のお問い合わせ

すべてはクライアントへの"想い"から!富山県の制作会社・グロフィールド様

$
0
0

こんにちは!CPIの下池です。

3月に富山のウェブ制作会社「グロフィールド株式会社」様にお会いしました。CPIのサーバーについてお伺いするはずが、グロフィールド様のビジネス観といった深い内容へ…。われわれレンタルサーバー事業者としても感動、共感したお話しだったので、許可をいただいてこちらのブログで公開させていただくことになりました。

 

グロフィールド様について
「グロフィールド株式会社」は集客のほぼ100%が紹介やウェブ申し込みという「お客様に選ばれる」制作会社。住宅・不動産業界に強く、47都道府県すべてにクライアントがいらっしゃいます。「富山県に、全国から次々にプロジェクトが舞い込む制作会社さんがいる!」とCPIのオフィスでも話題になっていました。

 

 

お話ししてくださったグロフィールド株式会社のみなさま

左から草野社長、草様、中島様

 

お客様の目的達成に向けて考え、動く

グロフィールド様
我々のクライアントは、ほぼ不動産関係の会社さまです。住宅向けのウェブサイトの場合、「成約につながるお客様の反響」が1番の目的となります。私たちは「成約しやすい反響を得るために必要なことは何なのか?」ということをいつも掘り下げています。

同時に、クライアントの要望をすぐに実現したいという思いから、プログラム・デザイン・コーディング・ディレクションができるスタッフを揃え、全てを「ワンストップでできる力」を持つようにしています。チームが一丸となって、仕事を全体的な視点で見ながら、色々な工程の前後がうまくつながるように考えて動いています。

 

CPI
それは効果的なウェブサイトができそうですね!例えばどんなホームページが良い反響につながるのでしょうか。可能な範囲でお教えください。

 

グロフィールド様
私たちはまず「クライアント様の事をよく知り、理解する」ことから「会社の特徴やカラーを表現したホームページの質」が成約につながると考えています。そのことをお客様に熱心に伝えるのも我々の役割です。

 

特効薬よりも漢方薬でありたい

CPI
御社が「会社の特徴やカラーを表現したホームページ」が成果につながることをお客様に伝えることも「役割」と感じておられるのはなぜですか?

 

グロフィールド様
私たちのクライアントはみなさま信念をもってビジネスに取り組んでいます。その想いをウェブサイトで表現するとなると、「バナーは明るい色で大きく!目立つ場所に目を引くアイコンを置きたい!」といった要望を頂くことも多いです。要するに、”特効薬”を使って強く訴求してほしいと。

 

CPI
「お客さまのお役にたちたい」という想いが強いほど、すぐに効果が出そうな“特効薬”を求める傾向がある、ということですね。

 

グロフィールド様
そうです。一方で私たちは、その会社の特徴や文化に根ざしたブランディングを地域の方々に行っていけると良いと考えています。地域の人たちが「ここセンスいいよね!ここにお願いすればステキな提案をしてくれるよね、安心だよね」と感じていただけるようなホームページです。

 

CPI
どのようなホームページが安心だと感じてもらいやすいのでしょうか?

 

グロフィールド様
ウェブとリアルがリンクしているホームページです。ウェブを見てから店舗に行くと「ウェブとは違う印象だなあ」ということがありますよね。店舗に来た時のイメージはとても大事です。ウェブと店舗のイメージがかけ離れているとウェブの効果も半減してしまいます。逆に、店舗のイメージとウェブのイメージがリンクするとウェブの効果が2倍にも3倍にもなります。漢方薬のようにじっくりと根本の部分に効いていくサイトですね。

 

CPI
長期的な視点で見た時に大きくお客様に貢献できる素晴らしい制作方針ですね!効果が倍増するというのも納得です。

 

クライアントに機会損失をさせてはいけない

CPI
他にも制作で大切にされていることはありますか?

 

グロフィールド様
2つあります。1つ目はビジネスにおいて「何が起こっても自分たちで解決する」という心構えです。当社ではWordPressやMovable Typeなどの有名なCMSをほとんど使わず、自社開発したCMSでサイト制作を行っています。

というのも、オープンソース系のCMSは自分たちで全てをコントロールすることができません。一方、自社CMSなら自由自在です。たしかに工数はかかるものの「自分たちで開発できるのであれば、クライアントに対して全責任を持てるものを」と自社CMSを提供することにしています。

2つ目は、クライアントに機会損失をさせてはいけないということです。今の時代ウェブは集客の中心。サーバーが落ちて「看板がかかっていない」という事態が起こらないようにするべきです。サイトが止まってしまうことは、売上が生まれる機会がなくなってしまうことと同じ。「クライアントへの責任」が果たせなくなるのはもちろん、私たちにとっては信頼を失うこととも同義です。

だからクライアントには基本的に「推奨のサーバーにしてください」と、我々から積極的に安定感のあるサーバーを提案していきます。ほぼCPIなのですが(笑)

 

CPI
ありがとうございます(笑)

「どんな問題にもきちんと対処しようとされる点」や「機会損失をさせてはいけないとお考えの点」にはとても共感します。CPIも「サーバー事業者としてお客様の課題をどう解決できるか?」を軸に、サーバーの設計~サポート体制の整備を行っています。特に、先ほど挙げていただいた「安定感」は重要視して取り組んでいる点なので、グロフィールド様からクライアント様への提案の一部になっているとのこと、とてもうれしいです。

 

グロフィールド様
CPIは10年以上使っていますが、「こういう状況でやってくれたら良いな」という期待値を常に超えた状態でサービスが提供されています。その安心は大きいです。我々が感じている安心感をクライアントへ説明すると、ほぼ納得いただけるので「サーバーはCPIで」と。

 

CPI
「サイト停止リスクを回避できる安定のサーバー」とおすすめいただき、ありがとうございます。制作ポリシーなど、正直ここまでクライアントのことを考えて提案されていることに感動しました。お客様に選ばれるのにはやはり理由があるのだ、と感じます。

 

グロフィールド様
ありがたいことです。お付き合いのあるお客様から別のお客様を紹介していただく際に、「もちろんデザインや技術力が高い。でもそれ以上にトラブルが無い。いままでご紹介した方からクレームが来たことがないですよ。」と言っていただくことが多いのです。トラブルが無い状態を提供し続けて、今後も選ばれ続ける会社でありたいと思っています。

 

場所があると共感者が集まってくる

CPI
ちょっと話がそれますが、どうしてもお聞きしたいことがあります。御社のオフィスがなぜこんなにステキで居心地がいいのか?という点です。

 

草野社長
オフィスは2014年に建てました。「どうしてオフィスを建てたいのか」「どんな会社にしていきたいか」という僕の想いを親しい建築家に伝えて、土地探し・建築デザイン・家具などを全て信頼してお任せしました。建築家の方によると「想いが表現された場所があれば、そういうところで働きたい人が集まってくる」「人がいるから場所になるのではなく、場所があるから人が集まってくる」「その場所からカルチャーが生まれる」のだそうです。

 

CPI 
それは深い話ですね。草野社長が伝えられたという「想い」、具体的にどんなメッセージだったのか気になります。

 

草野社長
「クリエイティブな仕事だと作業時間が長くなりがちだから、長時間いても居心地が良い場所がいい。何を作るかよりも、誰とするかがその人の人生にとってすごく重要で、豊かさを作ることだと思っている。その想いに共感して一緒に仕事をしてくれて、一緒に人生の豊かさを作ってくれる人が集まってくる場所を作りたい。」と伝えました。

 

CPI
おおステキですね!それでオフィスは想い描いた感じになったのですか?

 

草野社長
はい、とても。いまでは北海道から沖縄までクライアントのいない県は無いほどですが、遠方のお客様がオフィスの写真を見て「こういうところにお願いすれば良さそう」と言ってもらえることが多いです。建築予算は予定の2倍もかかりましたが(笑)

優れたデザインに囲まれて仕事をするとクリエイティブにもいい影響があると思います。そういった意味でもオフィス計画は大成功でした。


 

CPI
制作姿勢だけでなく、オフィスにも深いお考えがあったのですね。私たちも、少しでもグロフィールド様の「想い」実現の、そしてクライアント様の課題解決のお手伝いができるよう、インフラ面から支えてまいります!



 

会社名

 

グロフィールド株式会社

住所

【本社】

〒930-0916

富山県富山市向新庄町 2-16-25

 

【東京オフィス】

〒101-0051

東京都千代田区神田神保町2-16-2 第5千代田ビル 5階

 

URL

https://www.grofield.jp/

おわりに

グロフィールド様の仕事に対する考え方、いかがだったでしょうか?

効果的な施策を考え抜き、ときには即効性よりも根本解決を優先して提案する姿勢、仕事に責任を持つためにCMSの開発までされるこだわり、クリエイティブなものを生み出すための環境づくり。どれもが、グロフィールド様のお客様に対する「想い」のあらわれとなっていると感じました。

 

ここまでお読みいただきありがとうございました! CPIの下池でした。


PHPフレームワーク『Laravel』入門 #1 CPIレンタルサーバーにインストールする方法

$
0
0

AWSなどのクラウドサービスが普及し、誰でも簡単にWebアプリケーションを公開できる時代になりました。
しかしクラウドサービスを新たに契約すると、開発に必要なライブラリを揃えたり、セキュリティを自分で管理したりするのがとても大変です。

そこで注目されるのが共用型レンタルサーバーです。
皆さまが普段Webサイトの公開に利用している共用型レンタルサーバーでも、Webアプリケーションを作成・公開できるのはご存知でしたでしょうか?

今回は、CPIの共用型レンタルサーバー『ACE01』に、PHPフレームワークの『Laravel』をインストールする方法をご紹介いたします。
Laravel公式サイト : http://laravel.jp/

まずはフレームワークとは何か、導入することでどのようなメリットがあるのか、一緒に学んでいきましょう。

 

目次

 

  1. 2019年のトレンドPHPフレームワーク『Laravel(ララベル)』を始めるなら今!
  2. Webアプリケーション開発にLaravelを導入するメリット
  3. Laravelの構造に関する特徴
  4. Laravelのインストール手順~初期設定まで
  5. さいごに

 

『Laravel(ララベル)』を始めるなら今!

 

フレームワークとは「枠組み」「骨組み」の意味です。
簡単に言えばWebアプリケーションを作るのに便利な機能が揃った状態で開発をスタートすることができる、土台のようなものです。
フレームワークを使いこなせば開発効率を何倍も向上させることができます。

今回は、PHPで今一番ホットなフレームワーク『Laravel(ララベル)』についてご紹介いたします。

日本でのPHPフレームワークのトレンド遷移

PHPに多少詳しい人なら、フレームワークといえば「CakePHP(ケイクPHP)」が真っ先に思い浮かぶかもしれません。
CakePHPは2005年にリリースされたPHPフレームワークで、2010年代前半まで圧倒的なシェアを占めていました。

しかし、後発のフレームワークである『Laravel』が2011年にリリースされると、多機能かつ柔軟性の高い点がWeb開発者の支持を集め、英語圏を中心に徐々にシェアを伸ばしていきました。
日本でも2016年を境にCakePHPとの知名度は逆転し、Laravelが名実ともにPHPフレームワークの代表となりました。

日本でのPHPフレームワークのトレンド(https://trends.google.co.jp )

そして2019年2月に、決定版とも言える Laravel 5.8バージョンがリリースされました

Webアプリケーションの需要増加

2019年はモバイル通信の分野でも5Gのサービスが続々開始されます。
5Gが普及して高速・大容量・低遅延のデータ転送が可能になると、これまでスマートフォン等の端末で動作していたネイティブアプリケーションは、Webアプリケーションにシフトすると予想されています。

 

Webアプリケーション開発にLaravelを導入するメリット

 

PHPは学習コストが低く、直感でコーディングをしても「動く」ものができるので、初心者がWebアプリケーション開発を始めるのに最適な言語です。

その反面、開発者にも「動けばいい」という意識が強く、人によって書き方がまちまちで統一されていなかったり、全体の設計(デザインパターン)を無視して皆がその場その場でベストだと思うソースコードを実装したりする傾向があります。

「後からソースコードを追うと、ため息が出るような、メンテナンスが困難なWebアプリケーションができあがってしまった…」 そんな経験をしたことがある方が多いのではないでしょうか?

フレームワークはそういったPHPの悪い部分を補うことができます。
PHPでも設計(デザインパターン)に則った、誰が見てもわかりやすいソースコードを実装するための機能が備わっています。

 

Laravelの構造に関する特徴

 

以下はLaravelの構造に関する代表的な特徴です。

豊富なクラステンプレートの作成機能

Laravelには、画面やデータベースアクセスなど、さまざまな用途に応じてそれぞれ雛形となるクラスが用意されています。

artisanコマンドを実行すると、雛形となるクラスをコピーしたファイルが作成されるので、そのファイルに処理を足していくかたちでコーディングしていきます。いちからファイルを新規作成する時間と労力を省略でき、統一的な実装が可能になります。

MVCパターン(モデル、コントローラー、ビュー)に則ったディレクトリ構造

MVCパターンとは、一連の機能をモデル(データベース)、コントローラー(サーバー)、ビュー(画面)に分けて実装するデザインパターンです。

CakePHPやLaravelなどの主要なPHPフレームワークにはMVCパターンが採用されており、一連の機能をモデル・コントローラー・ビューに分割することで、可読性・保守性が高くなります。

これらの機能を使い、決まりごとを守ってコーディングするだけで、あなたの作ったWebアプリケーションは飛躍的にメンテナンスしやすくなります。また、処理がどこのファイルに書かれているか探すタイムロスもなくなります。

チームで開発する場合は、より効果を発揮します。

Webアプリケーションによくある機能が最初からサービスとして用意されている

認証認可機能、ログイン機能、定期実行(バッチ)スケジュール機能、メール送信機能
入力チェック(バリデーション)機能、日付のユーティリティ機能などがはじめから用意されており、自分で作る必要がありません。

フレームワークに用意された機能を利用すれば、バグの混入率も低下します。

データベースが直感的に操作でき、かつデータベース関連の便利な機能が揃っている

Eloquentを使えば、オブジェクトにアクセスしているような感覚でデータベースのデータを登録、参照、更新、削除できます。

その他にも、エンティティの情報をもとにテーブルを自動生成する機能、自動生成したテーブルやビューの変更や追加を世代(バージョン)ごとに管理するマイグレーション機能、テストのダミーデータを自動生成する機能などがあります。

簡潔なソースコード

フレームワークを導入すると、便利になる反面ソースコードの分量が増えることがあります。

便利な機能を使うためにコーディングの量が増えるのは本末転倒なので避けたいところです。

Laravelの場合は、サービスプロバイダ(DI)機能やファサード機能を使って、どこからでも簡単にオブジェクトが利用できたり、共通機能が呼び出せたりします。

 

Laravelのインストール手順~初期設定まで

 

前章までに、Webアプリケーションの開発でフレームワークを用いるべき理由と、Laravelのメリットについて説明いたしました。

ここからは、CPIサーバーにLaravelをインストールし、ウェルカムページを表示させるまでの手順を紹介いたします。

1. サーバーにSSH接続する

Laravelをインストールするために、まずサーバーにSSH接続します。
Windowsをお使いの方は、TeraTermなどのターミナルソフトを事前にダウンロードしてください。

SSH接続するためには、鍵ペア(秘密鍵と公開鍵)を生成して、サーバーに公開鍵を登録する必要があります。以下のヘルプの手順に沿って設定を行ってください。
https://www.cpi.ad.jp/support/startup/shared/publish/index.html#use_ssh

鍵の登録が終わりましたら、ターミナルからログインを行います。
アドレス、ユーザー名、ポート番号などは以下のヘルプを参考にしてください。
http://acesr.document.secure.ne.jp/tools/sshkeys/

Macの場合:

ssh SSH_ACOUNT@接続先ホスト名 -p ポート番号

2. 「.htaccess」の設置

今回は「/html/laravel」にLaravelを設置します。「/html/laravel /」に .htaccessファイルを設置ください。

SSHコマンドライン

cd ~/html

#Laravelをインストールするディレクトリを作成
mkdir laravel
cd laravel

#htaccessファイルを新規作成
vi .htaccess

3. 「.htaccess」の修正

設置した.htaccessを下記の通り修正します。

AddHandler x-httpd-php71 .php
# ACE01 現行プラン
Options +SymLinksIfOwnerMatch

# Follow symbolic links in this directory.
# ZZ、Zなどの古いプランは下記のコード
# Options +FollowSymLinks

4. Composerのインストール

LaravelはComposerを使ってインストールします。Composerをサーバーにインストールしていない場合は、「~/html/laravel」で以下のコマンドを実行してください。

コマンドラインから下記を実行

curl -sS https://getcomposer.org/installer | php-7.1

インストールに成功すると、composer.pharという実行ファイルが作成されます。

5. Laravelのインストール

「~/html/laravel」で以下のコマンドを実行してください。

php-7.1 composer.phar create-project laravel/laravel PROJECT_NAME --prefer-dist

PROJECT_NAME は、お好きなプロジェクト名を設定してください。

コマンドを実行すると、以下のようなパッケージのインストールが開始されます。
インストールが開始されると完了まで5分ほどかかりますので、処理を途中で中断しないでください。

処理が終わりましたら、以下の完了メッセージが表示されます。

「~/home/laravel」直下にPROJECT_NAMEのディレクトリが作られていることを確認してください。以降の作業は「~/home/laravel/PROJECT_NAME」のディレクトリで行います。

6. パーミッションの変更

「~/home/laravel/PROJECT_NAME」 に移動し、ディレクトリの権限を変更してください。

コマンドライン

chmod -R 777 storage 
chmod -R 777 bootstrap/cache

これでLaravelを動かすためのファイルのインストールが完了しました。

以下のURLにWebブラウザでアクセスすると、Laravelのウェルカムページが表示されます。
http://<サーバーのアドレス>/laravel/PROJECT_NAME/public

 

さいごに

 

今回はLaravelのインストールから初期設定までの手順を説明しました。インストールの手順は少し難しかったかもしれませんが、慣れれば30分程度で設定することができます。

次回の記事はLaravelのDataBaseの設定をご紹介いたします。

PHPフレームワーク『Laravel』入門 #2 データベース設定手順

$
0
0

PHPフレームワーク『Laravel』入門 #1では、CPIレンタルサーバーにLaravelをインストールする方法をご紹介いたしました。

今回の記事ではデータベースを設定する手順をご紹介いたします。

前回記事のおさらい

前回の記事ではCPIサーバーにLaravelをインストールし、Laravelの初期画面までの表示を行いました。
インストールしたディレクトリは下記の通りです。

「~/html/laravel/PROJECT_NAME」

今回の記事ではこちらの環境に対してデータベースの設定を行います。

目次

  1. CPIサーバーのデータベース追加
  2. データベース接続設定
  3. データベースの接続テスト(ユーザーテーブルの作成)
  4. さいごに

 

CPIサーバーのデータベース追加

まずは、Laravelで利用するデータベースの設定を行います。

Laravelは様々なデータベースに対応していますが、今回はMySQLを使用します。

CPIのウェブコントロールパネルにログインし、「サイト用設定 > データベース > MySQLデータベース設定」からデータベースの追加を行います

プランによって、設定方法が異なりますので、詳しくはCPIのオンラインヘルプを参照ください。

 

データベース接続設定

Laravelには用途に応じてさまざまな設定ファイルが存在しますが、アプリケーション全体にかかわる設定は主に.envファイルに記入します。

データベース追加」手順で作業した情報を.envファイルに記入するとアプリケーション上から簡単にデータベースの操作(登録・参照・変更・削除)が可能になります。

「~/html/laravel/PROJECT_NAME/.env」を編集

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306 ※ウェブコントロールパネル「プログラムのパスとサーバの情報」に「MySQL」のポート番号が書かれています。
DB_DATABASE=<データベース名>
DB_USERNAME=<データベースのユーザーID>
DB_PASSWORD=<データベースのユーザーパスワード>

<データベース名>は「データベース追加」手順で設定した名前を指定
<データベースのユーザーID><データベースのユーザーパスワード>はサーバ契約時にメールで受信したIDおよびパスワードを指定してください。

「~/html/laravel/PROJECT_NAME/config/database.php」を編集

'mysql' => [
'driver' => 'mysql',
'url' => env('127.0.0.1'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'データベース名'),
'username' => env('DB_USERNAME', 'ユーザー名'),
'password' => env('DB_PASSWORD', 'パスワード'),
'unix_socket' => env('DB_SOCKET', ''),
//'charset' => 'utf8mb4',  ☆コメントアウト
'charset' => 'utf8', // ☆追加
//'collation' => 'utf8mb4_unicode_ci', ☆コメントアウト
'collation' => 'utf8_unicode_ci', // ☆追加
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],

上記の設定を行うことで、Laravel 5.8とMySQLでマルチバイト文字の扱いが異なることで発生するエラーを回避することができます。

artisan コマンド実行

設定が終わりましたら、以下のコマンドを実行してキャッシュを再生成してください。
(artisanについては次回の記事で説明します)

php-7.1 artisan config:cache

 

データベースの接続テスト(ユーザーテーブルの作成)

以下のコマンドを実行して、ユーザーテーブルの作成を行います。設定がうまくできていれば、以下のようなメッセージが表示され、テーブルが自動作成されます。

php-7.1 artisan migrate

エラーが出力された場合は、「.env」ファイルか、「database.php」の記述を確認ください。

 

さいごに

CPIサーバーにLaravelをインストールし、データベースの設定を完了しました。
次回の記事は、データベースの接続テストでも利用した、便利な「artisan」コマンドをご紹介いたします。

PHPフレームワーク『Laravel』入門 #3 Artisan makeコマンドの便利な使い方

$
0
0

Artisan makeコマンドの便利な使い方
前回の記事ではLaravelで利用するデータベースの設定についてご紹介しました。

今回は、LaravelのArtisanコマンドでできることを紹介しながら、実際にArtisanコマンドを使って画面に「Hello World」を表示させます。

最初は覚えることも多いので少し時間がかかるかもしれませんが、一連のコマンド操作に慣れると、スピードと便利さを実感できると思います。

 

目次

 

  1. Artisan makeコマンドの使い方と種類
  2. コントローラーの作成
  3. ビュー(画面)の作成
  4. ルーティングの追加
  5. モデルの作成
  6. テーブルの作成
  7. 最後に

 

Artisan makeコマンドの使い方と種類

 

ArtisanはLaravelに標準搭載されているコマンドラインインターフェースで、ファイルの作成や設定ファイルのキャッシュ、データベースの操作など様々な機能が含まれています。
今回はその中でも、 Laravelの実装に欠かせないコントローラーやモデル、マイグレーションファイルなどを、雛形(あらかじめ用意されているテンプレート)をもとに作成するArtisan makeコマンドについて説明いたします。

Artisan makeコマンドには次のような種類があります。

 

# コントローラーの作成
php-7.1 artisan make:controller <コントローラー名>
# モデルの作成
php-7.1 artisan make:model <モデル名>
# マイグレーションファイル(テーブルの操作定義)の作成
php-7.1 artisan make:migration <マイグレーションファイル名> --create=<モデル名>

 

コマンドの詳しい解説については各章で行います。
Artisan makeコマンドを使いこなせば、コーディングにかかる時間が減り、バグの混入率も下がります。
また、チームで開発する場合は、担当者によってバラバラになりがちな関数名の付け方やファイルの置き場所などを統一することができます。

 

それではArtisan makeコマンドを使って、#1でインストールしたLaravelプロジェクトに新しいページを追加してみましょう。

 

コントローラーの作成

コントローラーの役割

コントローラーとは、検索や入力フォームの送信といった画面からのリクエストをサーバーで受け取って、結果を画面に応答する部品のことです。
Laravelでは、原則としてビュー(画面)とコントローラーを分けて機能を実装します。
HTMLタグや検索結果などのサーバーから返ってきた情報を画面に描画するのがビューの役割で、データベースにアクセスしたり複雑な計算処理をしたりするのがコントローラーの役割です。
ビューとコントローラーを分けることで、画面はそのままで内部の処理を変更したり、逆にコントローラーの処理はそのままで画面のレイアウトだけを変えたりすることが容易になります。
また、チームで開発する場合は、ビューとコントローラーでそれぞれ分担し、効率的にコーディングすることができます。

 

コマンド紹介

Laravelプロジェクト(PROJECT_NAME)に移動して、以下のコマンドを実行します。

cd ~/html/laravel/PROJECT_NAME
# Helloコントローラーの作成
php-7.1 artisan make:controller HelloController

 

成功すると下記のメッセージが表示され、指定したコントローラー名(今回の場合はHelloController)のPHPファイルがapp/Http/Controllersの配下に作成されます。

PHPファイル作成

 

# Helloコントローラーの作成(メソッドあり)
php-7.1 artisan make:controller HelloController --resource

コマンドに引数 「–resource」を与えると、Webアプリケーションで典型的な操作を行うためのメソッド(初期表示、登録、変更、削除など)があらかじめコントローラーに追加された状態で作成されます。
今回は初期表示だけなので「--resource」は不要ですが、とても便利ですのでぜひ使ってみてください。

 

コントローラーの実装

Artisan makeコマンドで作成されたコントローラーに、初期表示用の処理を追加します。
今回は、2つの変数“Hello”と”World”を画面(ビュー)に渡すだけの簡単な処理を実装します。

 

app/Http/Controllers/HelloController.php

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelloController extends Controller
{
  //ここから追加する実装
  public function index()
  {
    $str_1 = 'Hello';
    $str_2 = 'World';
    return view('hello', compact('str_1', 'str_2') );
  }
  //ここまで追加する実装
}

 

コントローラーには操作(初期表示、検索、登録、削除など)ごとにメソッドを作成します。
今回は初期表示だけなので、indexというメソッドを1つ追加しました。
index以外のメソッド名で作成することもできますが、その場合は4.で説明するルーティングの設定が複雑になるので、特別な事情がない限りはindexにすることをおすすめします。

 

return view('hello', compact('str_1', 'str_2') );

 

view関数の第1引数 ‘hello’の部分には、このコントローラーがどのビューに値を渡すのかを指定しています。
今回は’hello’というビューを次の章で作成しますので、それを指定します。
view関数の第2引数には、画面に渡す値を指定します。

 

ビューの作成

ビューの役割

ビューは一般的なWebサイトにおけるHTMLファイルと同じ役割で、利用者がブラウザを通して見たり、操作したりできる画面のレイアウトを実装したものです。
Laravelの特徴として、ビューにはbladeテンプレートが標準搭載されています。
bladeテンプレート独自の記法を使いこなすと、普通のPHPより簡素かつスピーディーにビューのコーディングが可能になります。
今回は詳しい説明を省略しますが、コントローラーから送られてきた変数を画面に出力する部分はbladeテンプレートの機能を利用します。

 

ビューの実装

ビューはArtisan makeコマンドでは作ることができませんので、自分でファイルを作る必要があります。
作成したファイルは resources/viewsに格納します。
今回は最初からあるwelcome.blade.phpをコピーして利用します。
コピーする際に、新しく作るファイルの名前をhello.blade.phpに変更してください。
先頭が小文字であることに注意してください。
welcome.blade.php をコピーし、resources/views/hello.blade.phpファイルを作成し、下記の通り編集してください。

 

resources/views/hello.blade.php

<body><div class="flex-center position-ref full-height">
    @if (Route::has('login'))<div class="top-right links">
        @auth<a href="{{ url('/home') }}">Home</a>
        @else<a href="{{ route('login') }}">Login</a>

          @if (Route::has('register'))<a href="{{ route('register') }}">Register</a>
          @endif
        @endauth</div>
    @endif<div class="content">
      //ここから変更する実装
      <div class="title m-b-md">{{$str_1}} {{$str_2}}</div>
           //ここまで変更する実装
      <div class="links"><a href="https://laravel.com/docs">Docs</a><a href="https://laracasts.com">Laracasts</a><a href="https://laravel-news.com">News</a><a href="https://blog.laravel.com">Blog</a><a href="https://nova.laravel.com">Nova</a><a href="https://forge.laravel.com">Forge</a><a href="https://github.com/laravel/laravel">GitHub</a></div></div></div></body>

 

「Laravel」と書かれていた部分を、コントローラーから渡された変数$str_1と$str_2に変更しています。
{{}}で囲んだ変数はechoと同じように画面に表示されます。

  

ルーティングの追加

 

コントローラーとビューの実装が終わりましたが、これだけではまだHello Worldの画面を表示することはできません。
どのURLにアクセスした時に、どのコントローラーを実行するのかという情報がないので、URLとコントローラーの紐付け(ルーティング)を明示する必要があります。
Laravelでは、ルーターと呼ばれるクラスでルーティングを一箇所にまとめて管理しています。
ファイルの場所は、routes/web.phpです。

以下のように、ルーターにHelloControllerのルーティングをweb.phpに追加してください。

 

routes/web.php

Route::get('/', function () {
    return view('welcome');
});
//ここから追加する実装
Route::resource('hello', 'HelloController');
//ここまで追加する実装

 

<LaravelプロジェクトのURL>/public/hello
(https://URL/laravel/PROJECT_NAME/public/hello)

にアクセスした時に、HelloControllerを実行するという定義です。

 

実際にWebブラウザでアクセスして、上記のような画面「Hello World」が表示されれば成功です。

 

Hello World

 

 

モデルの作成

モデルの役割

続いて、Laravelのモデルクラスについて説明します。
モデルはデータベースにアクセスする際に、テーブルを意識せずに新規登録、参照、変更、削除などの操作を可能にするためのクラスです。
Laravelのデータベース操作はEloquentという非常に便利なORマッパーが標準搭載されています。
そのEloquentを使いこなすために、モデルの作成は欠かせないものです。
Eloquentの使い方については、次回以降の記事でご紹介します。

 

コマンド紹介

Laravelプロジェクトに移動して、以下のコマンドを実行します。

 

# Helloモデルの作成
php-7.1 artisan make:model Hello

 

Artisan make:modelコマンドを実行すると、指定したモデル名のPHPファイル(今回の場合はHello.php)がapp/の直下に作成されます。

 

モデルの実装

今のところ、変更は必要ありませんので、ファイルが作成されていることをご確認ください。
app/Hello.php

 

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Hello extends Model
{
//
}

 

テーブルの作成

Laravelのテーブル操作

LaravelのArtisanコマンドはPHPファイルの雛形を作るだけでなく、データベースにテーブルを作ったりカラムの内容を変更したり、削除したりすることができます。
今回はテーブルを作成するための設計書となるマイグレーションファイルの作成を行います。
マイグレーションファイルはコントローラーやモデルと同じく、Artisan makeコマンドで雛形が作成できますので、そちらを利用します。

 

コマンドの紹介

Laravelプロジェクトに移動して、以下のコマンドを実行します。

 

# マイグレーションファイル(Helloテーブル)の作成
php-7.1 artisan make:migration create_hello_table --create=hello

create_hello_tableはマイグレーションファイルの名前で、任意の文字列でOKです。
-create=helloのhelloの部分は作成するテーブル名で、5.で作成したモデル名と合わせます。

ただし、モデル名は先頭が大文字で、テーブル名は先頭が小文字になるところにご注意ください。
Artisan make:migration コマンドを実行すると、マイグレーションファイルがdatabase/migrations/の直下に作成されます。

 

マイグレーションファイルの実行

作成されたファイルには、テーブルを作るためのupメソッドとテーブルを破棄するためのdownメソッドがはじめから用意されています。
ただ、このままですとカラムがIDとタイムスタンプ(登録、更新日時)しかない状態なので、必要に応じてカラムの情報を追加していきます。
今回は”Hello”という文字列を格納するカラム”str_1”と、“World”という文字列を格納するカラム”str_2”を追加します。

 

database/migrations/<年月日時分秒>_create_hello_table.php

 

<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateHelloTable extends Migration
{
  /**
   * Run the migrations.
   *
   * @return void
   */
  public function up()
  {
    Schema::create('hello', function (Blueprint $table) {
      $table->bigIncrements('id');
      $table->timestamps();
//ここから追加する実装
      $table->string('str_1');
      $table->string('str_2');
//ここまで追加する実装
    });
  }

  /**
   * Reverse the migrations.
   *
   * @return void
   */
  public function down()
  {
    Schema::dropIfExists('hello');
  }
}

 

マイグレーションの実行

 

6.3で作成するテーブルの情報をマイグレーションファイルに記述しましたので、さっそくマイグレーションを実行してみましょう。

マイグレーションの実行もArtisanコマンドで行うことができます。

 

php-7.1 artisan migrate

 

マイグレーションが成功すると、以下のようなメッセージが表示されます。

マイグレーション成功

 

データベースを見ると、Helloテーブルが作成されているのが確認できます。

Helloテーブル

 

 

最後に

 

今回はArtisan makeコマンドと、Laravelの新規ページ追加方法について説明しました。
Laravelで画面を増やしていくときは、2~4までの手順の繰り返しになりますので、ぜひ覚えてください。

 

 

次回は6. で紹介したマイグレーション機能を使って、思い通りのテーブルを作るための方法を詳しく説明します。また、Eloquentの使い方についてもご紹介します。

PHPフレームワーク『Laravel』入門 #4 マイグレーション機能で簡単データベース管理方法

$
0
0

前回の記事でLaravelの基本となるMVCパターンとArtisan makeコマンドについて説明しました。
今回はArtisanコマンドを使ってデータベース上のテーブルを作成・変更・削除する方法をお伝えします。

初心者にはとっつきづらいDB操作ですが、SQLを使わずにデータベースを操作できますので、とても便利です。

最初は覚えることも多いので少し時間がかかるかもしれませんが、一連のコマンド操作に慣れると、スピードと便利さを実感できると思います。

それでは、コマンドの種類を実際に使いながら覚えていきましょう。

 

目次

 

  1. Laravelのマイグレーション機能とは?
  2. マイグレーションファイルの作成
  3. マイグレーションの書き方:テーブルの作成
  4. マイグレーションの書き方:テーブルの変更
  5. マイグレーションの取り消し(ロールバック)
  6. 最後に

  

1. Laravelのマイグレーション機能とは

 

マイグレーションとは英語で「移動・移行」を意味する言葉です。

Laravelのマイグレーション機能では、まずマイグレーションファイルというphpファイルを作成して、その中にアプリケーションで利用したいテーブルの定義(カラムの名前・データ型・制約など)を記述します。

マイグレーションファイルはデータベースの設計書のようなもので、設計書を記述し終わった後でArtisan migrateコマンドを実行すると、Laravelがその内容をもとに自動でデータベースを構成します。

SQLが書けなくてもデータベースを作れるのは、とても便利ですね。

その他にも、Laravelのマイグレーション機能にはシーダーやテスト用ダミーデータの自動生成など便利な機能がたくさんありますが、今回は基本となるテーブルの作成・変更・ロールバックをメインに説明いたします。

 

2. マイグレーションファイルの作成

 

マイグレーションファイルは、Artisan make:migrationコマンドを実行することで、はじめから用意されている雛形を元に自動で生成することができます。

Artisan make:migrationコマンドは前回の記事で説明しましたので、本記事ではコマンドのみ紹介いたします。

まずLaravelプロジェクト(PROJECT_NAME)に移動して、以下のコマンドを実行します。

# Laravelプロジェクト(PROJECT_NAME)に移動
cd ~/html/laravel/PROJECT_NAME

# マイグレーションファイルの生成
php-7.1 artisan make:migration <ファイル名> -create=<テーブル名>
e.g) php-7.1 artisan make:migration create_hello_table –create=hello

今回はテーブルを新しく作成するためのオプションに --create=<テーブル名>をつけて実行しています。

オプションを指定すると、操作するテーブル名(今回の場合はhello)や操作の内容に合わせた雛形が最初から記述された状態でマイグレーションファイルが生成されます。
成功すると、マイグレーションファイルがdatabase/migrations/の直下に作成されます。

 

3. マイグレーションファイルの書き方:テーブルの作成

 

「2」で、生成したマイグレーションファイルはこのまま実行することもできますが、実行する前にカラム定義を書き加えることで、思いどおりの構造のテーブルを作ることができます。

 

3.1 マイグレーションファイルの編集

まずはマイグレーションファイルをテキストエディタで開きます。

database/migrations/<作成日時>_create_hello_table.php


public function up()
{
Schema::create(‘hello’, function( Blueprint $table) {
  $table->increments('id');
$table->string('hello'); //varchar型のカラム「hello」を作成する
$table->string('world'); //「world」を作成する
$table->timestamps();
});

「2」のコマンドを実行して生成されたマイグレーションファイルにはupとdownという2つのメソッドがあらかじめ用意されています。

upはマイグレーションを実行する時の処理、downはマイグレーションをロールバックする時に実行される処理です。

upメソッドの中にあるSchema::createは第一引数に指定した名称のテーブルを作成するためのプロシージャで、実際に作るテーブルのカラム定義などは第二引数のfunctionの中に記述します。

今回は可変長文字列型のカラム「hello」「world」を作成するように指定しています。

その他に、よく使うデータ型の記述方法には以下のようなものがあります。

固定長文字列型(char)

$table->char('hello', 20)

可変長文字列型(varchar)

$table->string('hello')

整数型(int)

$table->integer('hello')

日時型(datetime)

$table->dateTime('hello')

タイムスタンプ型(timestamp)

$table->timestamp ('hello')

※雛形に最初から記述されている$table->timestamps()とは異なります。
$table->timestamps()はテーブルに登録日時と更新日時を記録するカラムを追加するための定義です。

3.2 マイグレーション実行

3.1 で内容を変更したマイグレーションファイルを使って、実際にデータベースを構成します。
作成するためのコマンドはArtisan migrationです。

# マイグレーションの実行
php-7.1 artisan migrate

上記のコマンドを実行すると、まだデータベースに反映を行っていないマイグレーションファイルがすべて実行されます。

今回は「create_hello_table」のマイグレーション実行が目的なので、以下のメッセージが出力されれば成功です。

Migrated: <作成日時>_create_hello_table

マイグレーションに成功したら、「hello」「world」カラムを持つ「hello」テーブルがデータベースに追加されます。

 

4. マイグレーションファイルの書き方:テーブルの変更

 

Laravelのマイグレーション機能を使って、既に作成したテーブルやカラムの名前・データ型・制約などを変更する方法を説明します。

テーブルの変更も3.と同じようにマイグレーションファイルを作成するのですが、すでに実行したマイグレーションファイルを編集するのではなく、毎回新しいマイグレーションファイルを生成するという点にご注意ください。反映済みのマイグレーションファイルを編集して再実行するためにはロールバックする必要がありますので、今回はロールバック不要の方法を説明します。

 

4.1 Doctrine DBALのインストール(初回のみ) 

まず準備として、Doctrine DBALというパッケージをLaravelにインストールする必要があります。
インストール方法は、Laravelをインストールした時と同じようにComposerを使います。

php-7.1 ../composer.phar require doctrine/dbal

このパッケージをインストールすることで、Laravelのマイグレーション機能を使ってカラムの変更や削除をすることが可能になります。

4.2 マイグレーションファイルの作成

Artisan make:migration コマンドで新しいマイグレーションファイルを生成します。
手順および注意事項は2.と同様です。

php-7.1 artisan make:migration update_hello_table --table=hello


4.3 マイグレーションファイルの編集

マイグレーションファイルをテキストエディタで開いて編集します。

<作成日時>_update_hello_table.php

public function up()
{
Schema::table('hello', function (Blueprint $table) {
$table->string('hello', 20)->change(); //バイト長の制約を追加
$table->renameColumn('world', 'laravel'); //カラム名を変更
$table->integer('suuji')->nullable(); //整数型のカラム「suuji」を追加
});

upメソッドの中にあるSchema::tableは第一引数に指定した名称のテーブルを操作するためのプロシージャで、実際に変更するテーブルのカラム定義などは第二引数のfunctionの中に記述します。

$table->renameColumnは、カラム名を変更するためのメソッドで、第一引数に変更前の名前、第二引数に変更後の名前を設定します。

カラムのデータ型・制約を変更する場合や、新しいカラムを追加する場合は、新規作成と同じようにカラム名を引数にして$tableの各種メソッドを呼び出します。

既にレコードが存在するテーブルのカラムを変更する場合は、レコードが不整合を起こさないかLaravelがチェックを行って、不整合を起こす場合はガードがかかってマイグレーションが失敗するようになっています。

4.4 マイグレーション実行

php-7.1 artisan migrate
Migrated: <作成日時>_update_hello_table

と表示されれば、マイグレーションは成功です。

マイグレーションに成功したら、「hello」テーブルのカラム定義が変更されます。

 

5. マイグレーションの取り消し(ロールバック)

 

Laravelのマイグレーションには、実行したマイグレーションを取り消したり、データベースをある時点での状態に戻したりすることができるロールバック機能が含まれています。
ロールバックを行うコマンドは以下のような種類があります。

前回のマイグレーションをロールバック

php-7.1 artisan migrate:rollback

前回実行したマイグレーション(1件分)を取り消します。
編集したマイグレーションファイルに間違いがあった時などによく使います。

複数のマイグレーションをロールバック

php-7.1 artisan migrate:rollback --step=<数字>

現時点からさかのぼって、<数字>件分のマイグレーションを取り消します。
あまり使いません。

全マイグレーションのロールバック

php-7.1 artisan migrate:reset

すべてのマイグレーションを取り消します。
これまでマイグレーション機能で作成したテーブルはすべて削除されます。

全マイグレーションをロールバックしてから順にマイグレーションを実行する

php-7.1 artisan migrate:refresh

すべてのテーブルを削除して、初めから順番にマイグレーションを実行します。
全テーブルのレコードを削除するのと同じです。
開発用に登録したテストデータを削除する際などに便利です。

※テーブルの削除について

マイグレーションが世代管理という方式をとっているため、ロールバック機能で特定のテーブルだけを削除するということはできません。

特定のテーブルを削除したい場合は、4.の変更の手順と同じように、テーブルを削除するためのマイグレーションファイルを作成してマイグレーションを実行してください。

 

6. 最後に

 

今回の記事では、Laravelのマイグレーション機能についてご紹介しました。

このマイグレーション機能は、シーディング機能と組み合わせると、特に開発環境やテスト環境で絶大な効果を発揮しますので、次回はシーダーの作成とテスト用ダミーデータの自動生成についてご紹介したいと思います。

PHPフレームワーク『Laravel』入門 #5 シーディング機能とFakerを使ってテストデータ作成

$
0
0

前回はLaravelのマイグレーション機能についてご紹介しました。

今回はマイグレーション機能で作成したテーブルに初期データを登録するシーディング機能と、ダミーの氏名や住所、メールアドレス、電話番号などを簡単に自動生成できるFakerライブラリの使い方についてご紹介します。

どちらも開発中の動作確認やテスト環境の準備にとても役に立つ機能です。

データベースの準備に費やす時間を大幅に短縮することができるので、LaravelでWebアプリを開発する際にはぜひ利用してみてください。

 

目次

 

  1. Laravelのシーディング機能とは?
  2. シーダーファイルの作成
    2.1 ファイルの作成
    2.2 シーダーファイルの書き方
  3. シーディングの実行
    3.1 シーダーファイル単体を実行する
    3.2 複数のシーダーファイルをまとめて実行する
    3.3 データベースを初期化して、シーダーファイルを実行する
  4. Fakerライブラリ
    4.1 Fakerライブラリの使い方
    4.2 Fakerライブラリで生成できるダミーデータ
  5. 最後に

 

1. Laravelのシーディング機能とは?

  

シーディング(Seeding)は英語で「種まき」や「田植え」といった意味の単語で、データベースに初期データやテストデータを流し込むことを種まきに例えています。

初期データとは、都道府県名や部署名などの名称とシステム内で利用するコード値を紐付けるマスタ情報や、管理者ユーザーのログイン情報など、Webアプリを動かす上ではじめから登録されていることが前提になるデータです。

テストデータとは、動作確認や試験を行うために準備するデータで、本番用のデータとは異なるダミーのデータのことです。
これらのデータは、データベースを初期化するたびに毎回登録し直さなければいけません。

特にテストを行う際には、テスト項目ごとにテストデータを入れ替える必要があるので、頻繁にデータベースの初期化とテストデータの登録を繰り返します。

こうした作業にかかる時間を短縮できるのが、Laravelのシーディング機能です。

初期データやテストデータの内容を記述したシーダーファイルを作成して、Artisanコマンドを実行することで、その内容に沿ったデータがデータベースに登録されます。
つまり、一度シーダーファイルを作れば、後はコマンドを実行するだけでデータベース上に初期データやテストデータの再現が可能になります。

マイグレーションファイルをもとにテーブルを作成するマイグレーション機能と同じく、SQLを使わずにデータベースの操作が可能になりますので、SQLが苦手な方にもおすすめです。

次項では、Laravelのシーディング機能を実行する際の「設計書」となる、シーダーファイルの作り方について詳しく説明いたします

 

2. シーダーファイルの作成

 

2.1 ファイルの作成

シーダーファイルは、Artisan make:seederコマンドを実行することで、はじめから用意されている雛形を元に自動で生成することができます。

まずLaravelプロジェクト(PROJECT_NAME)に移動して、以下のコマンドを実行します。

# Laravelプロジェクト(PROJECT_NAME)に移動
cd ~/html/laravel/PROJECT_NAME # 管理者ユーザー用のシーダーファイルを生成する
php-7.1 artisan make:seeder AdminUserSeeder # テストユーザー用のシーダーファイルを生成する
php-7.1 artisan make:seeder TestUserSeeder

今回はLaravelに標準で存在するユーザー管理用のUserテーブルに対して初期データの登録を行うシーダーを作成します。

管理者ユーザーを登録するAdminUserSeederファイルと、テスト用ユーザーを登録するTestUserSeederファイルをそれぞれArtisan make:seederコマンドで生成してください。

成功すると、シーダーファイルがdatabase/seeds/の直下に作成されます。

 

2.2 シーダーファイルの書き方

2.1で生成したシーダーファイルは何も処理が書かれていない空っぽの状態なので、データベースに登録したい初期データの内容をそれぞれのファイルに記述していきます。

まず、管理ユーザー登録用のAdminUserSeederファイルをテキストエディタで開いて編集します。

database/seeds/AdminUserSeeder.php

<?php
use Illuminate\Database\Seeder;
use App\User;

class AdminUserSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//1人目の管理者ユーザー
User::create([
'name' => '管理者ABC',
'email' => 'abc@example.com',
'password' => Hash::make('test1234'),
]);
//2人目の管理者ユーザー
User::create([
'name' => '管理者DEF',
'email' => 'def@example.com',
'password' => Hash::make('test1234'),
]);
}
}

今回は「管理者ABC」「管理者DEF」という名前のユーザーを登録します。

※Userテーブルに対する操作なので、モデルクラス(User.php)は初めから存在しているものを利用できますが、自作のテーブルにデータを追加する場合はモデルクラスをあらかじめ作成しておく必要があります。

User::createプロシージャの引数で、連想配列に“name”、”email”、”password”というキーにそれぞれ値を設定していますが、これらのキーがテーブルのカラム名に対応しています。

つまり、“name”というキーの配列に設定した値(「管理者ABC」「管理者DEF」)はUserテーブルの”name”カラムに挿入されます。

次に、テスト用ユーザー登録用のTestUserSeederファイルをテキストエディタで開いて編集します。

database/seeds/TestUserSeeder.php

<?php
use Illuminate\Database\Seeder;
use App\User;

class TestUserSeeder extends Seeder
{
  /**
  * Run the database seeds.
  *
  * @return void
  */
  public function run()
  {
    //100件のテストユーザーを登録する
    for( $cnt = 1; $cnt <= 100; $cnt++ ) {
      User::create([
      'name' => 'テストユーザー' . $cnt,
      'email' => 'test' .$cnt . '@example.com',
      'password' => Hash::make('testtest'),
      ]);
    }
  }
}

テストデータではたくさんのデータが必要となるため、ループを使って100件のユーザーをUserテーブルに登録します。このように、ループや条件分岐が使えるのもシーダーファイルを利用するメリットのひとつです。

シーダーファイルの作成が終わりましたら、作成したシーダーファイルをLaravelに認識させるためにオートロードの再構成を行います。

php-7.1 ../composer.phar dump-autoload

Laravelは必要なファイルを自動的に読み込む、composerのオートロードという仕組みを利用しています。
Laravelで開発を進めていくと、新しいファイルを追加した時などさまざまな場面で「Class <ファイル名> does not exist」というエラーが発生することがあります。
上記のエラーが発生したら、まずオートロードの再構成を行ってみてください。

 

3. シーディングの実行

 

2. で作成したシーダーファイルは、Artisanコマンドを使ってシーディングを行うのに使います。Artisanコマンドでシーディングを実行する方法は複数ありますので、代表的なものをご紹介します。

3.1 シーダーファイル単体を実行する

すでに作成されたテーブルにデータを登録したい場合は、Artisan db:seed コマンドを使います。

php-7.1 artisan db:seed --class=AdminUserSeeder

--classというオプションに実行したいシーダーファイルのクラス名を指定してください。(ファイル名でないところに注意してください)

Database seeding completed successfully. というメッセージが出力されれば成功です。

データベースに管理者ユーザーのデータが追加されているのを確認してください。

管理者ユーザーのデータ

 

3.2 複数のシーダーファイルをまとめて実行する

3.1の方法ですと、1回のコマンドにつき1つのシーダーファイルしか実行することができません。

シーダーファイルの数が少なければ問題ありませんが、数が増えてくるとデータベースを初期化するたびにファイルの数だけコマンドを実行しなければならないので、少し不便です。

database/seedsにはじめから存在するDatabaseSeeder.phpを利用すれば、複数のシーダーファイルをまとめて実行できるので、その方法をご紹介します。

まずコマンドを実行する前に、DatabaseSeeder.phpに今回作成したシーダーファイルの情報を追記していきます。

database/seeds/DatabaseSeeder.php

<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
  /**
  * Seed the application's database.
  *
  * @return void
  */
  public function run()
  {
    $this->call([
    AdminUserSeeder::class,
    TestUserSeeder::class
    ]);
  }
}

上記のように、$this->callの引数の配列に、使いたいシーダーファイルを追加するだけです。これで複数にシーダーファイルを実行する準備は完了です。

DatabaseSeeder.phpの編集が終わりましたら、Artisan migrate:refreshコマンドでデータベースを初期化してから、改めてArtisan db:seedコマンドでシーディングを実行してみましょう。

php-7.1 artisan migrate:refresh
php-7.1 artisan db:seed

3.1ではオプションでシーダーファイルのクラス名を指定しましたが、DatabaseSeederをもとにシーディングを実行する際にはクラス名の指定は不要です。

データベースに管理者ユーザーのデータとテストユーザーのデータが追加されているのを確認してください。

テストユーザー

 

3.3 データベースを初期化して、シーダーファイルを実行する

前項ではDatabaseSeederを利用して、複数のシーダーファイルをまとめて実行する方法を紹介しました。それだけではなく、データベースを初期化してからシーディングを行うという手順を1つのコマンドにまとめることもできます。

php-7.1 artisan migrate:refresh --seed

Artisan migrate:refreshコマンドのオプションに--seedを指定すると、データベースの初期化後にDatabaseSeederのシーディングが自動で実行されます。

実際に開発やテストを始めると、こちらのコマンドのほうが使用する機会が多いですので、ぜひ覚えて使ってみてください。

 

4. Fakerライブラリ

 

Laravelにはダミーデータを自動生成するためのPHPライブラリFakerが標準でインストールされています。今回はそれを使って、面倒なテスト用のダミーデータ作成を時間短縮する方法をご紹介します。

4.1 Fakerライブラリの使い方

Fakerライブラリを使って2.2 で作成したテストユーザーのデータを、より現実的なデータに変更してみましょう。

database/seeds/TestUserSeeder.php

<?php
use Illuminate\Database\Seeder;
use App\User;

class TestUserSeeder extends Seeder
{
  /**
  * Run the database seeds.
  *
  * @return void
  */
  public function run()
  {
    //100件のテストユーザーを登録する
    for( $cnt = 1; $cnt <= 100; $cnt++ ) {
      $faker = Faker\Factory::create('ja_JP');

      User::create([
      'name' => $faker->lastName. '' . $faker->firstName,
      'email' => $faker->email,
      'password' => Hash::make('testtest'),
      ]);
      }
    }
}

Laravelでは、Factory::createプロシージャを呼び出すだけで、様々なダミーデータを自動生成することができます。
今回は苗字(lastName)、名前(firstName)、メールアドレス(email)のダミーデータを利用します。

Factory::createプロシージャの戻り値$fakerにダミーデータが格納されていますので、それぞれ対応するフィールドから値を取得します。

シーダーファイルの編集が終わりましたら、データベースの初期化とシーディングを実行します。

php-7.1 artisan migrate:refresh --seed

データベースに登録されたテストユーザーの名前とメールアドレスが、より本物のデータに近いダミーになっていることを確認してください。

本物のデータに近いダミー

 

4.2 Fakerライブラリで生成できるダミーデータ

Fakerライブラリで生成できるダミーデータには、名前やメールアドレスの他にもたくさんあります。以下に利用する頻度が高いものをご紹介します。

名前(カナ)

$faker->lastKanaName, //苗字カナ
$faker->firstKanaName,  //名前カナ

ユーザーID

$faker->userName

電話番号

$faker->phoneNumber

郵便番号

$faker->postcode

住所

$faker->address

都道府県

$faker->prefecture

市町村

$faker->city

町・番地

$faker->streetAddress

建物名・部屋番号

$faker->secondaryAddress

会社名

$faker->company

ランダムな数字

$faker->numberBetween(1, 100)

ランダムなテキスト(文字数)

$faker->realText(100)

 

5. 最後に

 

今回はLaravelのシーディング機能についてご紹介しました。
前回のマイグレーション機能と合わせて使いこなせば、開発中のデータベースの変更が非常にスピーディーにできるようになります。
またテストにおいては、テストケースごとにシーダーファイルを作ることで、すぐに試験環境の再現が可能になります。
このようにメリットしかないLaravelのシーディング機能、ぜひ活用してみてください。

Viewing all 131 articles
Browse latest View live