MdNデザインインタラクティブ様にサーバーの選び方と便利な使い方のコラムが掲載されました〜
http://www.mdn.co.jp/di/articles/2731/
コラムは全6回を予定しています。皆様よろしくお願いします。
MdNデザインインタラクティブ様にサーバーの選び方と便利な使い方のコラムが掲載されました〜
http://www.mdn.co.jp/di/articles/2731/
コラムは全6回を予定しています。皆様よろしくお願いします。
MdNデザイン様に掲載頂いた「今さら聞けない! レンタルサーバの選定と便利な使い方 第1回」が週間アクセスランキング1位となりました^^
http://www.mdn.co.jp/di/newstopics/25126/
皆様ありがとーございます。ありがとーございます。
MdNデザイン様に掲載頂いた「今さら聞けない! レンタルサーバの選定と便利な使い方」が週間アクセスランキング2週連続1位となりました^^
http://www.mdn.co.jp/di/newstopics/25347/?rm=1
ありがとうございます。ありがとうございます。
MdNデザイン様に「テスト環境を構築しよう」が公開されました。
内容は共用サーバーのマルチドメインを利用してテストサイトを構築した時のメリットと注意点を取り上げました。
http://www.mdn.co.jp/di/newstopics/25645/?rm=1
ACE01をご利用のお客様は、標準でテスト環境が用意されていますので、「テストサイト利用準備」の手順でテスト環境が利用出来ます。
皆さま、どうぞよろしくお願いします。
テストサイトにDrupalを構築した後に、Webコンテンツを確認し、公開サイトへリリースする手順を紹介します。
※Drupalのインストールが済んでいない方は「テストサイトへDrupalをインストールする準備」から参照頂き、Drupalをテストサイトへ構築して下さい。
使用バージョン:Drupal7
サーバー:ACE01
なお当サイトはDrupalで構築されています。ブログの記事はテストサイトに一旦アップロードを行い、社内関係者のチェック後、公開サイトへとリリースされます。
1.公開用のデータベースを作成する
Webコントールパネルを開き、「テスト用サイト設定 > データベース > MySQLデータベースの追加・削除」をクリックし、データベースの追加画面を開く。
「データベース新規作成」ボタンをクリックし、UTF-8でデータベースを作成する。今回本番用のデータベースは「userid_drupal」とした。
2.データベースのコピー準備を行う
SmartReleaseにログインを行い、「バックアップ > データベース」データベースの手動バックアップを行い、現状のデータベースをバックアップする。
3.テストで利用していたデータベースから、公開用に新規追加したデータベースへコピーする
「aa115zaox6.sql」テストで利用していたバックアップファイルを選択し、公開サイトで利用するデータベース「aa115zaox6_drupal」を選択し、「リストア」をクリックする。これで、テストで作成したデータベースが公開サイト用のデータベースにコピーされました。
※aa115zax6はUserIDとなるので、ユーザーによって異なります。
4.Webファイルをリリースする
「リリース > すべてリリース」をクリックし、 確認画面で「リリース」をクリックする。
これでWebファイルが全て公開サイトへリリースされました。
5.公開サイトのデータベース参照先を変更する
公開サイトへFTP接続を行い、次のファイルを編集する「/html/drupal_install_dir/sites/default/settings.php」
208行目、 'database' => 'aa115zaox6', //テストで使用していたデータベース名
↓↓↓↓↓↓↓↓↓↓
208行目、 'database' => 'aa115zaox6_drupal', //公開サイトで使用するデータベース名に変更する
これで公開サイトにDrupalが設置されました。
6.「settings.php」を除外リストに追加する
今後テストサイトで記事を書いたり、設定を変えたりした場合などに「すべてリリース」を行うと、settings.phpも上書きされてしまうので、リリースの除外リストに追加する。
「リリース > 除外リストに追加」をクリックする。除外リスト追加画面が表示されるので、「/html/drupal_install_dir/sites/default/settings.php」を追加する。
7.フォルダのパーミッションを変更する
これは本当に申し訳ないのだが、リリース時における不具合が存在している関係で、フォルダに実行権限をつけないとリリースが出来ない。
※現在調査中で、対応を検討中です。
テストサイトの次のフォルダ「/html/drupal_install_dir/sites/default」のパーミッションを「555」→「755」に変更して下さい。
この不具合ですが、修正しましたので、現在はパーミッションに関係なくリリースすることが可能となりました。
以上の手順で、テストサイトで構築したDrupalを公開サイトへリリース出来ます。
CMSなどを導入すると公開サイトを直接編集し、Webを更新しているユーザーも多いのではないでしょうか。公開サイトを直接修正する事で記事をアップロードするスピードは増しますが、クオリティーについてはどうでしょうか。公開サイトを直接編集する事により、画像が表示されないや、ファイルのリンク切れ、誤字脱字などが更新後に確認され、あわてて修正を行う事などは無いでしょか。
これらの問題を防ぐために、当サイト(CPIスタッフブログ)では、一旦テストサイトに記事をアップロードし、記事の確認後、公開サイトへ記事をアップロードする。というスキームを必ず取っています。
[サイト公開までのスキーム]
1.テスト環境でブログの記事を書きます。
2.関係各部署に記事のチェック依頼をメールします。
※弊社の場合、法務、デザイン部、プロモーション部にチェック依頼を出しています。
3.関係各部署の確認後、公開環境へ記事をアップロードする。
[使用しているシステム]
サーバー:Shared Plan ACE01
CMS:Drupal7
テストサイト
URL:http://aa115zaox6.smartrelease.jp
データベース:aa115zaox6
公開サイト
URL:http://shared-blog.kddi-web.com
データベース:aa115zaox6_drupal
※テストサイトと公開サイトとでデータベースを分けて運用しています。
[利用方法]
[メリット]
[デメリット]
テストサイトで書いた記事を公開サイトへアップロードする方法を紹介します。2つの作業でテストから公開へ記事をアップロードする事が出来ます。使用しているCMSはDrupal7です。
※テスト環境へのDrupalの設置は、「テストサイトへDrupalをインストールする準備」を参照下さい。
1.「Webコンテンツ」を公開サイトへアップロード
SmartReleaseにログインし、「リリース > すべてリリース」をクリックし、 確認画面で「リリース」をクリックする。
Webファイルが全て公開サイトへリリースされました。
2.「データベース」をテストから公開へコピー
まずは現状のデータベースのバックアップを取得します。
「バックアップ > データベース > バックアップ」をクリックします。
バックアップ処理を開始し、暫くすると現状の「手動」バックアップが生成されます。
バックアップが生成されたら、テストサイトのデータベースを公開サイトのデータベースへコピーします。
テストサイトのデータベース:aa115zaox6
公開サイトのデータベース:aa115zaox6_drupal
※当サイトでは、上記のデータベース名を利用しています。データベースは予め用意下さい。
先ほど取得した手動バックアップ欄の「リストア」をクリックします。
上段の選択より、テスト用のデータベースバックアップ(aa115zaox6.sql)を選択し、下段で、公開用のデータベースを選択する(aa115zaox6_drupal)、リストアをクリックします。
以上で、テスト環境で書いた記事を、公開環境へアップロードする事が出来ます。
SmartReleaseをご利用頂くと、簡単にテストサイトから公開サイトへ記事をアップロードする事が出来きます。またリリースを行うたびに、自動でバックアップが取得されますので、万が一のときなど、サイトを元の状態に戻す事も可能です。
SmartReleaseの「テストサイト利用準備」でテストサイトが利用出来るようになったので、そこにWordPress3をインストールします。
2012年9月現在、弊社のCMSインストーラーを使用すると、WordPress3.3.1がインストールされるので、インストール後はアップデート作業を行って下さい。
[CMSインストーラーでWordPressプログラムファイルをサーバーに設置する]
【WordPressをテストサイトへインストールする】
テストサイトに設置したプログラムにアクセスするとWordPressのインストールウイザードが表示されるので設定を行います。
以上でテストサイトへのWordPressインストールは完了です。次回はWordPressを公開サイトへリリースする方法をご紹介します。
「SmartReleaseのテストサイトにWordPressをインストールする」でWordPressをテストサイトへ構築しましたが、そのWordPressを公開サイトへリリースする方法を紹介させて頂きます。
CMS:WordPress 3.4.2
サーバー:ACE01
URL:http://aa115zaox6.smartrelease.jp/wp/
データベース名:aa115zaox6_wordpress
URL:http://shared-blog.kddi-web.com/wp/
データベース名:aa115zaox6_wpproduc
UPDATE `wp_options` set `option_name`=replace(option_name,'http://UserID.smartrelease.jp/','http://Site-URL/'); UPDATE `wp_options` set `option_value`=replace(option_value,'http://UserID.smartrelease.jp/','http://Site-URL/');
UPDATE `wp_posts` set `post_content`=replace(post_content,'http://UserID.smartrelease.jp/','http://Site-URL/'); UPDATE `wp_posts` set `guid`=replace(guid,'http://UserID.smartrelease.jp/','http://Site-URL/');
公開サイト用のデータベースの準備が出来ました。
続いてWordPressのプログラムファイルを公開サイトへリリースし、サイトを公開します。
define('DB_NAME', 'aa115zaox6_wordpress'); //テストで使用しているデータベース
↓↓
define('DB_NAME', 'aa115zaox6_wpproduc'); //公開で使用するデータベース
以上でWordPressが公開サイトに、リリースされました。
WordPressをテストサイトで構築し、公開サイトにリリースを行うスキームを取る事で、思わぬサイトダウンなどを防ぐことができます。また、デザインテンプレートの変更や、プログラムの改修などにもテストサイトを利用することで、公開サイトの停止や、レイアウト崩れなどを防ぐことができます。
Shared Plan ACE01のSmartReleaseは、WordPressのテストサイトを簡単に構築することができます。
CMS:WordPress 3.4.2
サーバー:ACE01
テストサイト情報
URL:http://aa115zaox6.smartrelease.jp/wp/
データベース名:aa115zaox6_wordpress
公開サイト情報
URL:http://shared-blog.kddi-web.com/wp/
データベース名:aa115zaox6_wpproduc
※テストサイトと公開サイトとでデータベースを分けて運用をしています。
WordPressって標準のテーマが既にレスポンシブウェブなんですね。恐れ入りました。
[利用方法]
[メリット]
[デメリット]
テストサイトで記事を書いて、公開サイトへのリリース時に、Webデータとデータベースを公開サイトへアップロードしている場合。アクセス履歴やユーザーコメントなどもテストのデータに上書きされてしまいます。ユーザーコメントはFacebookコメントを使用したり、アクセス履歴はGoogle Analyticsを使用したりする事で回避する事ができます。当ブログのコメントもFacebookコメントを採用し、外部サーバーから情報を取得し各ページへ出力を行っています。
今回は、Google Analyticsでページのアクセス数を集計し、そのデータを元に各CMSと連携を行い、人気記事一覧を作成します。この記事を書き終える頃には左のエリアに人気記事一覧が出力されていると思います^^
[情報ソース]
今回の記事を書こうと思い、調べていたら多くの日本語ドキュメンを見つける事が出来ました。(本当に皆様助かりました。ありがとうございました)
で、今回の記事のほとんどのソースが「unlinked log」様のページを参考にさせて頂いております。ありがとう御座いました。
Google API V3
Google APIs Client Library for PHP
Hello Analytics API
[手順]
Google Analyticsのログイン情報を入力し、ログイン
初回の場合、下記画面が表示されるので「Create Project」をクリックし、プロジェクトを作成します。
ログイン後、左のメニューより「Services」をクリックし、Analytics APIを「ON」にして下さい。
「Click Create an OAuth 2.0 client ID....」をクリックし、client IDを作成して下さい。
作成すると「Client ID」、「Client secret」などが発行されます。この値は後ほど使用します。
<?php // ライブラリ読み込み require('./google-api-php-client/src/apiClient.php'); // Analytics なのでこれを require('./google-api-php-client/src/contrib/apiAnalyticsService.php'); // セッションスタート session_start(); $client = new apiClient(); // クライアントID $client->setClientId('***********************************'); // クライアントSecret $client->setClientSecret('***********************************'); // リダイレクトURL $client->setRedirectUri('***********************************'); $service = new apiAnalyticsService($client); // 許可されてリダイレクトされると URL に code が付加されている // code があったら受け取って、認証する if (isset($_GET['code'])) { // 認証(トークン、リフレッシュトークンを取得) $client->authenticate(); // 取得したトークンをセッションにセット $_SESSION['token'] = $client->getAccessToken(); // リダイレクト(ここらへんは任意に) header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']); exit; } if (isset($_SESSION['token'])) { // トークンセット $client->setAccessToken($_SESSION['token']); } // トークンがセットされていたら if ($client->getAccessToken()) { // ~all で全てのプロファイルを取得します // 第一引数にはアカウントIDを指定することで指定したアカウントのプロファイルのみ取得出来ます // 第二引数にはWebプロパティID(UA-なんたらのやつ)を指定することで、指定したプロファイルだけを取得出来ます(アカウントIDも指定が必要) // ※図5で説明 $profiles = $service->management_profiles->listManagementProfiles("12345678","UA-12345678-99"); try { // プロファイルID // ※図6で説明 $ids = 'ga:12345678'; // 期間(スタート) $start_date = '2012-09-11'; // 期間(エンド) $end_date = '2012-09-27'; // メトリクス,複数の場合は , で区切る $metrics = 'ga:pageviews'; // ディメンション,複数の場合は , で区切る $dimensions = 'ga:pageTitle,ga:pagePath'; // ソートする項目, - をつけると降順になります $sort = '-ga:pageviews'; // 最大取得数 $max_results = 10; // ディメンションやソートなどの必須でないものは、オプションとして一つの配列としてまとめます $optParams = array('dimensions' => $dimensions, 'sort' => $sort, 'max-results' => $max_results); $data = $service->data_ga->get($ids, $start_date, $end_date, $metrics, $optParams); // 返ってきたデータは表示する時ちょっと分かりづらいので、ちょっと形を整えます $results = array(); foreach ($data['rows'] as $row => $value) { foreach ($data['columnHeaders'] as $key => $header) { $results[$row][$header['name']] = $value[$key]; } } $site_url = 'http://example.com'; echo '<table><tbody>'; foreach ($results as $result) { echo "<tr><td><a href=\"{$site_url}{$result['ga:pagePath']}\">{$result['ga:pageTitle']}</a></td> <td>{$result['ga:pageviews']}</td></tr>"; } echo '</tbody></table>'; // エラーの時は例外を投げます } catch (apiServiceException $e) { echo $e->getMessage(); } // トークンがセットされてなかったら } else { // 認証用URL取得 $auth_url = $client->createAuthUrl(); echo '<a href="'.$auth_url.'">アプリケーションのアクセスを許可してください。</a>'; }
作ったプログラムを改修します。
変更内容①、初回アクセス時のTokenをファイルに保存し、次回以降(cron)はファイルからTokenを読み込む
変更内容②、アナリティクスの結果をファイルへ保存する
※Google Analytics APIのOauth認証が毎回認証を問われるので、このような仕様でプログラムを作成しました。もしかしたら他に方法があるのかもしれません。もしありましたら、教えて頂けると幸いです。
<?php require('./google-api-php-client/src/apiClient.php'); require('./google-api-php-client/src/contrib/apiAnalyticsService.php'); // セッションスタート session_start(); $client = new apiClient(); /************************** // Google Analytics設定 *************/ // クライアントID $client->setClientId('*********************************'); // クライアントSecret $client->setClientSecret('******************************'); // リダイレクトURL $client->setRedirectUri('http://shared-blog.kddi-web.com/google_ana.php'); // Google Tokenを保存するファイル名(適宜DBに保存するなど変更下さい) //Web上から読みとれない場所を指定してください。 // e.g) /home/UserID/gtoken.txt $tokenpath = "../gtoken.txt"; // Google Analyticsの結果を保存するファイル名(適宜DBに保存するなど変更下さい) $filepath = "../gana.txt"; // プロファイルID $ids = 'ga:***********'; // 期間(スタート)現在の日付からマイナス2ヶ月より計測 $start_date = date("Y-m-d",strtotime("-2 month")); // 期間(エンド)現在の日付 $end_date = date("Y-m-d"); $service = new apiAnalyticsService($client); // 許可されてリダイレクトされると URL に code が付加されている // code があったら受け取って、認証する if (isset($_GET['code'])) { // 認証(トークン、リフレッシュトークンを取得) $client->authenticate(); // 取得したトークンをセッションにセット $_SESSION['token'] = $client->getAccessToken(); // リダイレクト(ここらへんは任意に) header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']); exit; } if (isset($_SESSION['token'])) { //tokenを保存する。適宜DBに保存するなど変更して下さい。 $string = $_SESSION['token']; //ページ出力 $fp = fopen($tokenpath, "w"); @fwrite( $fp, $string, strlen($string) ); fclose($fp); unset($string); // トークンセット $client->setAccessToken($_SESSION['token']); }elseif ( file_exists( $tokenpath )) { $token = @file($tokenpath); $client->setAccessToken($token[0]); } // トークンがセットされていたら if ($client->getAccessToken()) { //プロファイルを指定する"AcountID","webPropertyId" $profiles = $service->management_profiles->listManagementProfiles("AcountID","webPropertyId"); try { // メトリクス,複数の場合は , で区切る $metrics = 'ga:pageviews'; // ディメンション,複数の場合は , で区切る $dimensions = 'ga:pageTitle,ga:pagePath'; // ソートする項目, - をつけると降順になります $sort = '-ga:pageviews'; // 最大取得数 $max_results = 20; // ディメンションやソートなどの必須でないものは、オプションとして一つの配列としてまとめます $optParams = array('dimensions' => $dimensions, 'sort' => $sort, 'max-results' => $max_results); $data = $service->data_ga->get($ids, $start_date, $end_date, $metrics, $optParams); // 返ってきたデータは表示する時ちょっと分かりづらいので、ちょっと形を整えます $results = array(); foreach ($data['rows'] as $row => $value) { foreach ($data['columnHeaders'] as $key => $header) { $results[$row][$header['name']] = $value[$key]; } } //ファイル出力(適宜DBなどに変更下さい) foreach ($results as $result) { $string .= "{$result['ga:pagePath']},{$result['ga:pageTitle']},{$result['ga:pageviews']}\n"; } $fp = fopen($filepath, "w"); @fwrite( $fp, $string, strlen($string) ); fclose($fp); echo $string; // エラーの時は例外を投げます } catch (apiServiceException $e) { echo $e->getMessage(); } // トークンがセットされてなかったら } else { // 認証用URL取得 $auth_url = $client->createAuthUrl(); echo '<a href="'.$auth_url.'">アプリケーションのアクセスを許可してください。。</a>'; }
修正したプログラムをサーバーへアップロードしブラウザからアクセスして下さい。出力結果がファイルに保存されると思います。この作成したプログラムをcron登録して下さい。SmartReleaseを利用しているユーザーはテストサイトでこのプログラムを作成し、今回作ったファイルをリリースの除外リストへ追加することで、より一層セキュリティーレベルが増します。
前回作ったプログラムを改修します。
変更内容①、初回アクセス時のTokenをファイルに保存し、次回以降(cron)はファイルからTokenを読み込む
変更内容②、アナリティクスの結果をファイルへ保存する
※Google Analytics APIのOauth認証が毎回認証を問われるので、このような仕様でプログラムを作成しました。もしかしたら他に方法があるのかもしれません。もしありましたら、教えて頂けると幸いです。
<?php require('./google-api-php-client/src/apiClient.php'); require('./google-api-php-client/src/contrib/apiAnalyticsService.php'); // セッションスタート session_start(); $client = new apiClient(); /************************** // Google Analytics設定 *************/ // クライアントID $client->setClientId('*********************************'); // クライアントSecret $client->setClientSecret('******************************'); // リダイレクトURL $client->setRedirectUri('http://shared-blog.kddi-web.com/google_ana.php'); // Google Tokenを保存するファイル名(適宜DBに保存するなど変更下さい) //Web上から読みとれない場所を指定してください。 // e.g) /home/UserID/gtoken.txt $tokenpath = "../gtoken.txt"; // Google Analyticsの結果を保存するファイル名(適宜DBに保存するなど変更下さい) $filepath = "../gana.txt"; // プロファイルID $ids = 'ga:***********'; // 期間(スタート)現在の日付からマイナス2ヶ月より計測 $start_date = date("Y-m-d",strtotime("-2 month")); // 期間(エンド)現在の日付 $end_date = date("Y-m-d"); $service = new apiAnalyticsService($client); // 許可されてリダイレクトされると URL に code が付加されている // code があったら受け取って、認証する if (isset($_GET['code'])) { // 認証(トークン、リフレッシュトークンを取得) $client->authenticate(); // 取得したトークンをセッションにセット $_SESSION['token'] = $client->getAccessToken(); // リダイレクト(ここらへんは任意に) header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']); exit; } if (isset($_SESSION['token'])) { //tokenを保存する。適宜DBに保存するなど変更して下さい。 $string = $_SESSION['token']; //ページ出力 $fp = fopen($tokenpath, "w"); @fwrite( $fp, $string, strlen($string) ); fclose($fp); unset($string); // トークンセット $client->setAccessToken($_SESSION['token']); }elseif ( file_exists( $tokenpath )) { $token = @file($tokenpath); $client->setAccessToken($token[0]); } // トークンがセットされていたら if ($client->getAccessToken()) { //プロファイルを指定する"AcountID","webPropertyId" $profiles = $service->management_profiles->listManagementProfiles("AcountID","webPropertyId"); try { // メトリクス,複数の場合は , で区切る $metrics = 'ga:pageviews'; // ディメンション,複数の場合は , で区切る $dimensions = 'ga:pageTitle,ga:pagePath'; // ソートする項目, - をつけると降順になります $sort = '-ga:pageviews'; // 最大取得数 $max_results = 20; // ディメンションやソートなどの必須でないものは、オプションとして一つの配列としてまとめます $optParams = array('dimensions' => $dimensions, 'sort' => $sort, 'max-results' => $max_results); $data = $service->data_ga->get($ids, $start_date, $end_date, $metrics, $optParams); // 返ってきたデータは表示する時ちょっと分かりづらいので、ちょっと形を整えます $results = array(); foreach ($data['rows'] as $row => $value) { foreach ($data['columnHeaders'] as $key => $header) { $results[$row][$header['name']] = $value[$key]; } } //ファイル出力(適宜DBなどに変更下さい) foreach ($results as $result) { $string .= "{$result['ga:pagePath']},{$result['ga:pageTitle']},{$result['ga:pageviews']}\n"; } $fp = fopen($filepath, "w"); @fwrite( $fp, $string, strlen($string) ); fclose($fp); echo $string; // エラーの時は例外を投げます } catch (apiServiceException $e) { echo $e->getMessage(); } // トークンがセットされてなかったら } else { // 認証用URL取得 $auth_url = $client->createAuthUrl(); echo '<a href="'.$auth_url.'">アプリケーションのアクセスを許可してください。。</a>'; }
修正したプログラムをサーバーへアップロードしブラウザからアクセスして下さい。出力結果がファイルに保存されると思います。この作成したプログラムをcron登録して下さい。SmartReleaseを利用しているユーザーはテストサイトでこのプログラムを作成し、今回作ったファイルをリリースの除外リストへ追加することで、より一層セキュリティーレベルが増します。
以下のコードを貼り付け、保存してください <?php //ファイル読み込み(ファイルパスを指定) $filepath = '/usr/home/UserID/gana.txt'; $data = @file($filepath); print_r($data); echo '<div class="item-listul">'; $cnt = '0'; foreach ($data as $value) { $printdata = preg_split('/,/', $value); //topページを除外 if($printdata[0]=='/top'){continue;} //タイトルを整形する(一例です。適宜変更ください) $replaceTitle = str_replace("", "", $printdata[1]); $replaceTitle = str_replace("|CPIスタッフブログ", "", $replaceTitle); if(!$replaceTitle){$replaceTitle='「No Title」';} echo '<li class="views-row"><a href="'.$printdata[0].'">'.$replaceTitle.'</a></li>'; $cnt++; if( $cnt > '10' ) {break;} } echo '</ul></div>';
[使用しているバージョン]
WordPress3.4.2
My Custom Widgets2.0.5
//ファイル読み込み(ファイルパスを指定) $filepath = '/usr/home/UserID/gana.txt'; $data = @file($filepath); $cnt = '1'; echo '<ul>'; foreach ($data as $value) { $printdata = preg_split('/,/', $value); //topページを除外 if($printdata[0]=='/top'){continue;} //タイトルを整形する(一例です。適宜変更ください) $replaceTitle = str_replace("", "", $printdata[1]); $replaceTitle = str_replace("|CPIスタッフブログ", "", $replaceTitle); if(!$replaceTitle){$replaceTitle='「No Title」';} echo '<li class="cat-item cat-item-'.$cnt.'"><a href="'.$printdata[0].'">'.$replaceTitle.'</a></li>'; $cnt++; if( $cnt > '10' ) {break;} } echo '</ul>';
以上でWordPressへの取り込みが完了です。
CPIスタッフブログのCMSアップデートを行います。WordPress、Drupal、JoomlaなどのCMSはPHPとMySQLで構成されてお り、頻繁にセキュリティーアップデートがリリースされます。セキュリティーアップデートは悪意のあるユーザーからサイトを守ることが出来るので必ずアップ デートを行う必要があります。
このアップデートを公開サイトで直接行っていると、思わぬサイトダウンや、デザイン崩れなどが起こる場合があるので、必ずバックアップを取得後にテストサイトで動作確認し、公開サイトへ反映を行ってください。
Drupalバージョン:7.14 → 7.15
Tokenモジュール:7.x-1.2 → 7.x-1.4
[手順]
[1.バックアップを取得する]
[2.テストサイトにパッチ適用]
[3.公開サイトへリリース]
テストサイトでサイトの動作を確認し、問題がなければ公開サイトへリリースを行います。なんらかの不具合があればバックアップファイルからリストアを行ってください。
リリースの手順は、「テストサイトで書いた記事を公開サイトへリリースする(Drupal編)」を参照下さい。
SmartReleaseには大きく分けて2つの機能が備わっています。1つは以前に紹介したリリース機能です。もう1つがバックアップ機能です。今回はバックアップ機能についてご紹介します。
SmartReleaseは、「Shared Plan ACE01」に搭載されている機能です。これまでにレンタルサーバーでは無かった、テストサイトと公開サイトを標準使用することができます。
このテストサイトと公開サイトのバックアップと、データベースのバックアップを別領域サーバーに保存しています。
[バックアップの取得タイミング]
[バックアップファイルの保存世代数]
[バックアップファイル容量制限]
下記の項目に一つでも該当する場合、 SmartRelease を利用する事が出来ません。
ただしご提供開始時から存在する以下のディレクトリは容量制限の対象外となります。
「/log」
「/_smartrelease_except」
[詳細]
SmartReleaseコントロールパネルにログインし、左メニューの「バックアップ」をクリックします。
バックアップ一覧が表示されます。
画面赤枠より、テストサイトのバックアップ、公開サイトのバックアップ、データベースのバックアップを確認することができます。
バックアップ一覧は、「鉛筆アイコン」をクリックし、バックアップに対してコメントを付けることができます。
30世代よりも古いバックアップは自動で削除されますが、「プロテクト機能」をONにすることで保存しておくことも可能です。
万が一の場合、バックアップ一覧の「リストア」より対象の日付のコンテンツに置き換えることが可能です。
SmartReleaseは、これまで面倒だったバックアップを常に取得しています。
うっかりミスなどで公開サイトのファイルを削除してしまったときや、突然サイトが動かなくなってしまったときなどの万が一に備えバックアップをお役立てください。
SmartReleaseが搭載されたShared Plan ACE01より、Basic認証、CMSインストーラー、携帯振り分け設定、高機能フォーム作成ウィザードなどの弊社が提供している制作ツールは、コントロールパネルより設定を行うと、一旦テストサイトに設定が反映されます。テストサイトに設定された内容を確認後、公開サイトへリリースする手順に仕様を変更いたしました。
今回は、これらの変更された機能を公開サイトへ反映する手順をご紹介します。
[Basic認証]
[高機能フォーム作成ウィザード]
高機能フォーム作成ウィザードについてもコントロールパネルから設定を行うと、テストサイトに設定が反映されます。確認後、公開サイトにリリースしてください。
ウィザードを最後まで進めると、テストサイトにフォームが設置されます。
SmartReleaseにアクセスします。
テストサイトのコンテンツが、全て公開サイトに反映してもよい場合は、「リリース > 全てリリース」より、「すべてリリース」ボタンをクリックします。
[フォームのみリリースした場合]
SmartReleaseの「リリース > ファイルを選択してリリース」から、
「/フォームを設置した階層/フォームのファイル名」(今回は、/test/form.html)を選択し、「ファイルを選択してリリース」をクリックします。
以上で公開サイトでも利用することが出来ます。
このようにShared Plan ACE01はテストサイトに設定を行い、確認後に公開サイトへリリースするというスキームをとっています。確認するという作業は1つ増えますが、公開サイトのクオリティーを保持するには必要な作業と考えています。
スマートフォン用にjQuery Mobileを使ってデザインしたデータを、Drupal CMSに適用する手順を何回かに分けてご紹介します。
[手順]
今回はPCサイトと、スマートフォンサイトで使用するテンプレートテーマを分けます。巷ではレスポンシブウェブなどが流行っておりますがそんなの完全無視です。
流行りに反ってテーマを分けるには私なりに少し理由がありまして、PCサイトに載っているすべての情報がスマートフォンサイトには必要ないのでは無いかなと言う点と、一つのテンプレートで全ての端末に対応するのは、それはそれで時間がかかると思っているからです。手抜きといえば手抜きなんですが、以上の理由から当サイトではテンプレートを2つ用意しています。
[Drupal CSMテーマの分け方]
Drupal7.X
その他ThemeKeyではユーザー名、時間、タイトルなどの様々な条件でテーマを変更することが出来ます。
今回はtar.gzファイルをダウンロード。
これをFTP接続を行い、テストサイトへアップロードする。アップロード先はDrupalをインストールしたい階層に設置する。
※FTPアカウント、SSHアカウントの作成はテストサイト利用準備を参照下さい。
次にSSH接続し解凍する。
※ここではTera Termを使用しています。
ホストは「ご契約のサーバー名」
ポートは、テストが10398、公開が10399です。
SSHが接続されたので、圧縮ファイルを解凍する。
アップロードしたフォルダにcdコマンドで移動する。
【解凍コマンド】
% xzfv drupal-7.14.tar.gz
続いてdrupal-7.14となっているフォルダ名を「drupal」にリネーム
% mv drupal-7.14 drupal
ここで変更した名前がURLに含まれます。
上記の場合は、以下のURLにアクセスした場合に設置したCMSを閲覧する事が出来ます。
http://ドメイン名/drupal
http://ドメイン名/でアクセスした時にCMSを閲覧したい場合は、drupalフォルダの中身を全て、/html直下に移動する必要があります。
% mv -i /usr/home/userID/html/drupal/* /usr/home/userID/html/
とコマンドを入力すると、drupalフォルダに入っている全てのファイルを/htmlフォルダに移動することが出来ます。
これでDrupalインストールの準備が整いました。
設置したファイルからDrupalのインストーラーを起動し、インストールを行う。
CMS:Drupal7
サーバー:Shared Plan ACE01
【テストサイトへのアクセス】
テストサイトのURLはユーザーポータルのチュートリアルに載っているので、そこからアクセス出来る。
ファイルを設置したURLにアクセスを行うと(http://ユーザーID.smartrelease.jp/drupal/)下記のDrupalインストール画面が表示される。
※表示されない場合以下のファイルを追加!
.htaccessファイルを作成し、「AddHandler x-httpd-php536 .php」を追加する。ファイルはDrupalを設置するフォルダ/drupal/.htaccessに設置を行う
1.「Standard」を選択し、 「Save and continue」をクリック
2.言語選択ページ。英語のままでよければ、「次へ」
日本語版をインストールいたい場合は、http://localize.drupal.org/translate/downloadsにアクセスし、翻訳ファイルをダウンロード。「/profiles/standard/translations/」にアップロードし、画面をリロードして下さい。
3.mbstringsを有効にしろとエラーになる。。。
mbstringsを有効にするには、「php.ini」ファイルを編集し、Drupalのインストールディレクトリに設置する必要がある。
「ユーザーポータル>>ウェブサーバー設定>>お客様情報>>プログラムのパスとサーバー情報」にアクセスを行う。
利用しているPHPバージョンのリンクをクリックし、表示されたテキストをコピーし、php.iniファイルにペーストする。
次に下記設定を変更を行う。
mbstring.language = neutral
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = off
mbstring.func_overload = 0
mbstring.internal_encoding = UTF-8
作成したphp.iniファイルをDrupalのインストールディレクトリーへアップロードしブラウザをリロードする。
4.データベースの接続先を入力し次ぎへ
データベース名:上記作成したDB名を入力する。
データベースのユーザー名:設定完了通知に記載
データベースのパスワード:設定完了通知に記載
データベースサーバーのホスト名:127.0.0.1
※事前にデータベースを作成していない場合は、ユーザーポータルから、「ウェブサーバー設定 > テストサイト用設定 > データベース > MySQLデータベースの追加・削除」UTF-8でデータベースを追加する。
5.サイト情報を入力し、次へ
6.インストール完了
CPI 共用型レンタルサーバーACE01のテスト環境にインストールしたWordPressを、公開環境にリリースする方法の紹介です。
WordPressのインストール方法は「CPIサーバーにWordPressをインストールする手順 4.x 編」を参照ください。
CMS:WordPress 4.7.2
サーバー:ACE01
URL:http://aa1886sk0e.smartrelease.jp/wp/
データベース名:aa1886sk0e_wordpress
URL:http://shared-blog.kddi-web.com/wp/
データベース名:aa1886sk0e_wpproduc
テスト環境のデータベースに含まれるドメイン名を変更するために「WP Migrate DB」プラグインをインストールします。
WordPressの管理画面にアクセスし、「プラグイン > 新規追加」より、「WP Migrate DB」をインストールし、有効化します。
管理画面の「ツール > Migrate DB」にアクセスし「Migrate」タブをクリックします。
「//USER_ID.smartrelease.jp/wp」は、テスト環境のドメイン名です。Replace欄に公開環境で使用するドメインに入力してください。
「/usr/home/USER_ID/html/wp」は、WordPressのインストールディレクトリを変更したい場合に記載ください。
情報を入力し「Export」ボタンをクリックするとリプレイスしたデータベースファイルをダウンロードできます。
(例)aa1886sk0e_wordpress-migrate-20170601025855.sql
「インポート」タブを開き、「ファイルを選択」に手順4でダウンロードした.sqlファイルを選択し「実行する」をクリックします。
公開環境のデータベースの準備ができました。
(注意)
この作業はテスト環境に設置されたファイルやディレクトリを全て置き換えます。
続いてWordPressのプログラムファイルを公開サイトへリリースし、サイトを公開します。
公開サイトにFTP接続を行い以下のファイルを編集し、アップロードを行います。
/wpインストールディレクトリ/wp-config.php
define('DB_NAME', 'aa1886sk0e_wordpress'); //テストで使用しているデータベース
↓↓
define('DB_NAME', 'aa1886sk0e_wpproduc'); //公開で使用するデータベース
以上でWordPressが公開サイトに、リリースされました。
WordPressをテストサイトで構築し、公開サイトにリリースを行うスキームを取る事で、思わぬサイトダウンなどを防ぐことができます。また、デザインテンプレートの変更や、プログラムの改修などにもテストサイトを利用することで、公開サイトの停止や、レイアウト崩れなどを防ぐことができます。
[メリット]
[デメリット]
テストサイト利用準備
CPIサーバーにWordPressをインストールする手順 4.x 編
テストサイトにDrupalを構築した後に、Webコンテンツを確認し、公開サイトへリリースする手順を紹介します。
※Drupalのインストールが済んでいない方は「テストサイトへDrupalをインストールする準備」から参照頂き、Drupalをテストサイトへ構築して下さい。
使用バージョン:Drupal7
サーバー:ACE01
なお当サイトはDrupalで構築されています。ブログの記事はテストサイトに一旦アップロードを行い、社内関係者のチェック後、公開サイトへとリリースされます。
1.公開用のデータベースを作成する
Webコントールパネルを開き、「テスト用サイト設定 > データベース > MySQLデータベースの追加・削除」をクリックし、データベースの追加画面を開く。
「データベース新規作成」ボタンをクリックし、UTF-8でデータベースを作成する。今回本番用のデータベースは「userid_drupal」とした。
2.データベースのコピー準備を行う
SmartReleaseにログインを行い、「バックアップ > データベース」データベースの手動バックアップを行い、現状のデータベースをバックアップする。
3.テストで利用していたデータベースから、公開用に新規追加したデータベースへコピーする
「aa115zaox6.sql」テストで利用していたバックアップファイルを選択し、公開サイトで利用するデータベース「aa115zaox6_drupal」を選択し、「リストア」をクリックする。これで、テストで作成したデータベースが公開サイト用のデータベースにコピーされました。
※aa115zax6はUserIDとなるので、ユーザーによって異なります。
4.Webファイルをリリースする
「リリース > すべてリリース」をクリックし、 確認画面で「リリース」をクリックする。
これでWebファイルが全て公開サイトへリリースされました。
5.公開サイトのデータベース参照先を変更する
公開サイトへFTP接続を行い、次のファイルを編集する「/html/drupal_install_dir/sites/default/settings.php」
208行目、 'database' => 'aa115zaox6', //テストで使用していたデータベース名
↓↓↓↓↓↓↓↓↓↓
208行目、 'database' => 'aa115zaox6_drupal', //公開サイトで使用するデータベース名に変更する
これで公開サイトにDrupalが設置されました。
6.「settings.php」を除外リストに追加する
今後テストサイトで記事を書いたり、設定を変えたりした場合などに「すべてリリース」を行うと、settings.phpも上書きされてしまうので、リリースの除外リストに追加する。
「リリース > 除外リストに追加」をクリックする。除外リスト追加画面が表示されるので、「/html/drupal_install_dir/sites/default/settings.php」を追加する。
7.フォルダのパーミッションを変更する
これは本当に申し訳ないのだが、リリース時における不具合が存在している関係で、フォルダに実行権限をつけないとリリースが出来ない。
※現在調査中で、対応を検討中です。
テストサイトの次のフォルダ「/html/drupal_install_dir/sites/default」のパーミッションを「555」→「755」に変更して下さい。
この不具合ですが、修正しましたので、現在はパーミッションに関係なくリリースすることが可能となりました。
以上の手順で、テストサイトで構築したDrupalを公開サイトへリリース出来ます。
CMSなどを導入すると公開サイトを直接編集し、Webを更新しているユーザーも多いのではないでしょうか。公開サイトを直接修正する事で記事をアップロードするスピードは増しますが、クオリティーについてはどうでしょうか。公開サイトを直接編集する事により、画像が表示されないや、ファイルのリンク切れ、誤字脱字などが更新後に確認され、あわてて修正を行う事などは無いでしょか。
これらの問題を防ぐために、当サイト(CPIスタッフブログ)では、一旦テストサイトに記事をアップロードし、記事の確認後、公開サイトへ記事をアップロードする。というスキームを必ず取っています。
[サイト公開までのスキーム]
1.テスト環境でブログの記事を書きます。
2.関係各部署に記事のチェック依頼をメールします。
※弊社の場合、法務、デザイン部、プロモーション部にチェック依頼を出しています。
3.関係各部署の確認後、公開環境へ記事をアップロードする。
[使用しているシステム]
サーバー:Shared Plan ACE01
CMS:Drupal7
テストサイト
URL:http://aa115zaox6.smartrelease.jp
データベース:aa115zaox6
公開サイト
URL:http://shared-blog.kddi-web.com
データベース:aa115zaox6_drupal
※テストサイトと公開サイトとでデータベースを分けて運用しています。
[利用方法]
[メリット]
[デメリット]
テストサイトで書いた記事を公開サイトへアップロードする方法を紹介します。2つの作業でテストから公開へ記事をアップロードする事が出来ます。使用しているCMSはDrupal7です。
※テスト環境へのDrupalの設置は、「テストサイトへDrupalをインストールする準備」を参照下さい。
1.「Webコンテンツ」を公開サイトへアップロード
SmartReleaseにログインし、「リリース > すべてリリース」をクリックし、 確認画面で「リリース」をクリックする。
Webファイルが全て公開サイトへリリースされました。
2.「データベース」をテストから公開へコピー
まずは現状のデータベースのバックアップを取得します。
「バックアップ > データベース > バックアップ」をクリックします。
バックアップ処理を開始し、暫くすると現状の「手動」バックアップが生成されます。
バックアップが生成されたら、テストサイトのデータベースを公開サイトのデータベースへコピーします。
テストサイトのデータベース:aa115zaox6
公開サイトのデータベース:aa115zaox6_drupal
※当サイトでは、上記のデータベース名を利用しています。データベースは予め用意下さい。
先ほど取得した手動バックアップ欄の「リストア」をクリックします。
上段の選択より、テスト用のデータベースバックアップ(aa115zaox6.sql)を選択し、下段で、公開用のデータベースを選択する(aa115zaox6_drupal)、リストアをクリックします。
以上で、テスト環境で書いた記事を、公開環境へアップロードする事が出来ます。
SmartReleaseをご利用頂くと、簡単にテストサイトから公開サイトへ記事をアップロードする事が出来きます。またリリースを行うたびに、自動でバックアップが取得されますので、万が一のときなど、サイトを元の状態に戻す事も可能です。
この記事は下記記事に集約を行いました。