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

テストサイトに構築したWordPressを公開サイトにリリースする

$
0
0

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
 

公開サイトで使用するデータベースの準備

  1. ウェブコントロールパネルにログインし、「ホーム > テストサイト用設定 > データベース >MySQLデータベースの追加・削除」の順に遷移します。
     
  2. 以下の通りデータ入力を行い、「新規追加」をクリックします。
    文字コード:UTF-8
    新規データベース名:公開サイトで使用するデータベースの名前


     

  3. 「WP Migrate DB」プラグインを新規追加

    テスト環境のデータベースに含まれるドメイン名を変更するために「WP Migrate DB」プラグインをインストールします。
    WordPressの管理画面にアクセスし、「プラグイン > 新規追加」より、「WP Migrate DB」をインストールし、有効化します。

     

  4. ドメイン名のリプレイス

    管理画面の「ツール > Migrate DB」にアクセスし「Migrate」タブをクリックします。

    「//USER_ID.smartrelease.jp/wp」は、テスト環境のドメイン名です。Replace欄に公開環境で使用するドメインに入力してください。

    「/usr/home/USER_ID/html/wp」は、WordPressのインストールディレクトリを変更したい場合に記載ください。

    情報を入力し「Export」ボタンをクリックするとリプレイスしたデータベースファイルをダウンロードできます。
    (例)aa1886sk0e_wordpress-migrate-20170601025855.sql
     

  5. Webコントロールパネルに戻り、「ホーム > テストサイト用設定 > データベース」を開き、「MySQL5.5管理画面」をクリックします。
     
  6. phpMyAdminが起動するので、サーバー設定完了通知のデータベース欄のIDとパスワードを入力しログインします。
     
  7. phpMyAdminの左メニューより、公開サイトで使用するデータベース名をクリックします。(今回は、wpproduc)
     
  8. データベースをインポート

    「インポート」タブを開き、「ファイルを選択」に手順4でダウンロードした.sqlファイルを選択し「実行する」をクリックします。

    公開環境のデータベースの準備ができました。

 

 

公開サイトへリリース

(注意)
この作業はテスト環境に設置されたファイルやディレクトリを全て置き換えます。

続いてWordPressのプログラムファイルを公開サイトへリリースし、サイトを公開します。

  1. SmartReleaseにログインし、「リリース > すべてリリース」よりウェブコンテンツファイルを全て公開サイトへ置き換えます。

     
  2. ウェブデータ転送後、WordPressの設定ファイルを編集します。

    公開サイトにFTP接続を行い以下のファイルを編集し、アップロードを行います。
    /wpインストールディレクトリ/wp-config.php

    define('DB_NAME', 'aa1886sk0e_wordpress');  //テストで使用しているデータベース
        ↓↓
    define('DB_NAME', 'aa1886sk0e_wpproduc');  //公開で使用するデータベース
     

  3. 次回「すべてリリース」をした時にwp-config.phpファイルが上書きされないように、除外リストへ追加します。
    SmartReleaseの「すべてリリース」画面の「除外リストに追加」ボタンをクリックします。
    除外リスト追加画面で、「/wpインストールディレクトリ/wp-config.php」を選択し、「除外リストに追加」をクリックします。

 

以上でWordPressが公開サイトに、リリースされました。

WordPressをテストサイトで構築し、公開サイトにリリースを行うスキームを取る事で、思わぬサイトダウンなどを防ぐことができます。また、デザインテンプレートの変更や、プログラムの改修などにもテストサイトを利用することで、公開サイトの停止や、レイアウト崩れなどを防ぐことができます。

[メリット

  • テストサイトで確認した内容をそのまま、公開サイトにリリースできる
  • デザインテンプレート、プログラムなどの追加改修に便利
  • セキュリティーアップデートをテストサイトで検証できる

[デメリット

  • ユーザーからのコメントをWordPressのデータベースに蓄積できない
     (※Facebookコメント等を利用する事で回避できる)
  • テストからのリリース時に毎回データベースの書き換える必要がある。

その他関連記事

 

テストサイト利用準備
CPIサーバーにWordPressをインストールする手順 4.x 編
 

 

関連タグ: 

Google Analytics API(V3)のPHPバージョンを使って、CMSの人気記事一覧を作ろう

$
0
0

テストサイトで記事を書いて、公開サイトへのリリース時に、Webデータとデータベースを公開サイトへアップロードしている場合。アクセス履歴やユーザーコメントなどもテストのデータに上書きされてしまいます。ユーザーコメントはFacebookコメントを使用したり、アクセス履歴はGoogle Analyticsを使用したりする事で回避する事ができます。当ブログのコメントもFacebookコメントを採用し、外部サーバーから情報を取得し各ページへ出力を行っています。
今回は、Google Analyticsでページのアクセス数を集計し、そのデータを元に各CMSと連携を行い、人気記事一覧を作成します。この記事を書き終える頃には左のエリアに人気記事一覧が出力されていると思います^^

 

Google Analytics API(V3) PHPを使用してアクセス数情報を取得する

 

[情報ソース]

今回の記事を書こうと思い、調べていたら多くの日本語ドキュメンを見つける事が出来ました。(本当に皆様助かりました。ありがとうございました)
で、今回の記事のほとんどのソースが「unlinked log」様のページを参考にさせて頂いております。ありがとう御座いました。

Google API V3
Google APIs Client Library for PHP
Hello Analytics API

[手順]

  1. Google APIs Consoleにアクセスし、API利用登録を行う

    Google Analyticsのログイン情報を入力し、ログイン

    初回の場合、下記画面が表示されるので「Create Project」をクリックし、プロジェクトを作成します。

    ログイン後、左のメニューより「Services」をクリックし、Analytics APIを「ON」にして下さい。

    「Click Create an OAuth 2.0 client ID....」をクリックし、client IDを作成して下さい。

    作成すると「Client ID」、「Client secret」などが発行されます。この値は後ほど使用します。

     

  2. あとは「anlinks log」様にのっているソースを拝借しましてw(ちゃんと許可はとっております^^;)一部ソースを書き換えるだけです。Libraryのサンプルを参照しつつ、Reference Guideなどを見ると違うプログラムにも対応出来きますね。
     
    <?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>';
    }
    (図5)プロファイル選択とプロファイルIDについて
    Googleアナリティクスにログインし、「アナリティクス設定 > プロファイル選択 > プロファイル設定」と進み、以下の画面を確認します。
    プロパティID欄の真ん中の数値を第一関数に指定、UA-入りの全てを第二関数に指定します。
    (例)listManagementProfiles("12345678","UA-12345678-99");

    プロファイルIDは画面中程の数字となります。

  3. 作成したプログラムとライブラリをWebサーバーに設置し、アクセスするとアクセスの高い順よりタイトルとページビューを閲覧する事ができます。

Google Analytics API(V3) PHPを使用してCMSの読み込みようファイルを作成する

 

作ったプログラムを改修します。
変更内容①、初回アクセス時の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を利用しているユーザーはテストサイトでこのプログラムを作成し、今回作ったファイルをリリースの除外リストへ追加することで、より一層セキュリティーレベルが増します。
 

Google Analyticsのデータを元に人気コンテンツ一覧を作成する(Drupal編)

前回作ったプログラムを改修します。
変更内容①、初回アクセス時の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を利用しているユーザーはテストサイトでこのプログラムを作成し、今回作ったファイルをリリースの除外リストへ追加することで、より一層セキュリティーレベルが増します。

Google Analyticsのデータを元に人気コンテンツ一覧を作成する(Drupal編)

  1. Drupal CMSの管理画面にログインし、「ホーム » 管理 » サイト構築」を開きます
  2. 「ブロックを追加」をクリックします
  3. 「ブロックのタイトル」、「ブロックの説明 *」を入力します
  4. テキストフォーマットを「PHP code」を選択してください
    ※PHP codeが選択出来ない場合、「PHP filter」モジュールを有効にしてください
  5. 以下のコードを貼り付け、保存してください
    <?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>';

Google Analyticsのデータを元に人気コンテンツ一覧を作成する(WordPress編)

[使用しているバージョン]
WordPress3.4.2
My Custom Widgets2.0.5

  1. WordPress管理画面のプラグイン追加ページより、「My Custom Widgets」をインストールし有効化します。
  2. 外観→ウィジェットより、「MCW 2.0 Addon」を表示したいエリアにドラッグ&ドロップします。
  3. タイトルを入力します、次にPHPのチェックを入れ、下記のコードを挿入し、保存をクリックすると、人気記事一覧が表示されます。
    ※こちらのリンクより完成イメージがご覧になれます。(http://shared-blog.kddi-web.com/wp
    //ファイル読み込み(ファイルパスを指定)
    $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スタッフブログ(Drupal CMS)のアップデート手順

$
0
0

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. 公開サイトへリリース

[1.バックアップを取得する]

  1. SmartReleaseにログインし、「テストサイト」、「公開サイト」、「データベース」それぞれのバックアップを取得してください。
    バックアップに成功すると「手動」アイコンがついたバックアップが表示されるので、適当なコメントを付けます。

[2.テストサイトにパッチ適用]

  1. CMSの管理画面にログインし、「管理 » レポート » 利用可能なアップデート」へアクセスします。
  2. 今回はTokenモジュールをアップデートするので、Tokenモジュール欄横のチェックを付け「アップデートをダウンロード」をクリックします。
  3. ダウンロードが成功すると、下記の画面が出力されるので、「メンテナンスモード・・・」のチェックを外し、「継続」をクリックします。
  4. モジュールのアップデートが成功すると、下記の画面が出力されるので、「Run database updates」をクリックします。
  5. 「Continue」をクリックすると、databaseアップデートが実行されます。

    以上で、モジュールのアップデートが完了しました。
  6. 続いてDrupalコアのアップデートを行います。
    http://drupal.org/project/drupal」にアクセスし、最新版のDrupalをダウンロードします。
  7. ダウンロードしたファイルをテストサイトに「sites」フォルダ以外のファイルを全てアップロードします。
    ※.htaccessファイルはCPIの設定値が含まれるので、新しい.htaccessファイルにマージして下さい。
     「AddHandler x-httpd-php536 .php」
    ※コアプログラムをカスタマイズしている方は個別にアップデートを行ってください。

[3.公開サイトへリリース]
テストサイトでサイトの動作を確認し、問題がなければ公開サイトへリリースを行います。なんらかの不具合があればバックアップファイルからリストアを行ってください。

リリースの手順は、「テストサイトで書いた記事を公開サイトへリリースする(Drupal編)」を参照下さい。

関連タグ: 

SmartReleaseの「バックアップ」機能について

$
0
0

SmartReleaseには大きく分けて2つの機能が備わっています。1つは以前に紹介したリリース機能です。もう1つがバックアップ機能です。今回はバックアップ機能についてご紹介します。

SmartReleaseは、「Shared Plan ACE01」に搭載されている機能です。これまでにレンタルサーバーでは無かった、テストサイトと公開サイトを標準使用することができます。

このテストサイトと公開サイトのバックアップと、データベースのバックアップを別領域サーバーに保存しています。

[バックアップの取得タイミング]

  • 毎日深夜帯に自動でバックアップ
  • サイト公開時に自動でバックアップ(公開サイトのバックアップを取得します)
  • 公開サイトからテストサイトへファイル転送時に自動でバックアップ(テストサイトのバックアップを取得します)
  • バックアップファイルリストア時(リストアを行った対象サーバーがバックアップされます)

[バックアップファイルの保存世代数]

  • ウェブ領域(テストサイト、公開サイト):30世代
  • データベース:10世代

[バックアップファイル容量制限]
下記の項目に一つでも該当する場合、 SmartRelease を利用する事が出来ません。

  • ファイルの総数が 70,001 ファイル以上の場合
  • ファイルの総容量が 10 GB 以上の場合
  • ディレクトリ構造が 41 階層以上の場合

ただしご提供開始時から存在する以下のディレクトリは容量制限の対象外となります。
「/log」
「/_smartrelease_except」

[詳細]
SmartReleaseコントロールパネルにログインし、左メニューの「バックアップ」をクリックします。

バックアップ一覧が表示されます。
画面赤枠より、テストサイトのバックアップ、公開サイトのバックアップ、データベースのバックアップを確認することができます。

バックアップ一覧は、「鉛筆アイコン」をクリックし、バックアップに対してコメントを付けることができます。
30世代よりも古いバックアップは自動で削除されますが、「プロテクト機能」をONにすることで保存しておくことも可能です。

万が一の場合、バックアップ一覧の「リストア」より対象の日付のコンテンツに置き換えることが可能です。

SmartReleaseは、これまで面倒だったバックアップを常に取得しています。
うっかりミスなどで公開サイトのファイルを削除してしまったときや、突然サイトが動かなくなってしまったときなどの万が一に備えバックアップをお役立てください。

関連タグ: 

Basic認証、CMSインストーラーなどの設定について

$
0
0

SmartReleaseが搭載されたShared Plan ACE01より、Basic認証、CMSインストーラー、携帯振り分け設定、高機能フォーム作成ウィザードなどの弊社が提供している制作ツールは、コントロールパネルより設定を行うと、一旦テストサイトに設定が反映されます。テストサイトに設定された内容を確認後、公開サイトへリリースする手順に仕様を変更いたしました。

今回は、これらの変更された機能を公開サイトへ反映する手順をご紹介します。

[Basic認証]

  1. Webコントロールパネルにアクセスし、「テストサイト用設定 > 制作ツール > アクセス制御(basic認証) > アクセス制御追加」の順にクリックします。
  2. 設定をしたいディレクトリを選択してください。選択したディレクトリ以下全てにBasic認証が設定されます。
    ユーザー名、パスワードを入力後、「アクセス制御追加」をクリックします。

    テストサイトの「/test」ディレクトリ以下にBasic認証が設定されました。
  3. テストサイトの設定したBasic認証を公開サイトにリリース(適用)します。
    SmartReleaseにアクセスします。
    テストサイトのコンテンツが、全て公開サイトに反映してもよい場合は、「リリース > 全てリリース」より、「すべてリリース」ボタンをクリックします。

    [Basic認証のみをリリースしたい場合]
    SmartReleaseの「リリース > ファイルを選択してリリース」から、
    Basic認証を設定したフォルダを選択し(例は/testを選択)、そのフォルダに保存されている「.htaceesss」、「.htpasswd」ファイル横のチェックボックスにチェックを入れ、「選択したフィアルをリリース」をクリックします。
  4. 以上で公開サイトにBasic認証が設定されました。

[高機能フォーム作成ウィザード]
高機能フォーム作成ウィザードについてもコントロールパネルから設定を行うと、テストサイトに設定が反映されます。確認後、公開サイトにリリースしてください。

  1. Webコントロールパネルにアクセスし、「テストサイト用設定 > ソフトライブラリ > 高機能フォーム作成ウィザード > フォーム新規作成」の順に進み、「作成開始」をクリックします。

    今回は「/test」に設置を行います。
    高機能フォーム作成ウィザードについての詳細情報はオンラインヘルプを参照ください。「http://acesr.document.secure.ne.jp/library/formwiz/

     

    ウィザードを最後まで進めると、テストサイトにフォームが設置されます。

  2. テストサイトのフォームを公開サイトにリリースします。

    SmartReleaseにアクセスします。
    テストサイトのコンテンツが、全て公開サイトに反映してもよい場合は、「リリース > 全てリリース」より、「すべてリリース」ボタンをクリックします。

    [フォームのみリリースした場合]
    SmartReleaseの「リリース > ファイルを選択してリリース」から、
    「/フォームを設置した階層/フォームのファイル名」(今回は、/test/form.html)を選択し、「ファイルを選択してリリース」をクリックします。
    以上で公開サイトでも利用することが出来ます。

  3. 公開したフォームを修正する場合は、「ホーム > テストサイト用設定 >  ソフトライブラリ > 高機能フォーム作成ウィザード > フォーム変更」より、フォームを修正ください。
    フォームを修正すると、テストサイト及び、公開サイトのフォームが同時に変更されます。

 

このようにShared Plan ACE01はテストサイトに設定を行い、確認後に公開サイトへリリースするというスキームをとっています。確認するという作業は1つ増えますが、公開サイトのクオリティーを保持するには必要な作業と考えています。

関連タグ: 

[テンプレを分ける] jQuery MobileデザインデータをDrupalに適用

$
0
0

スマートフォン用にjQuery Mobileを使ってデザインしたデータを、Drupal CMSに適用する手順を何回かに分けてご紹介します。

[手順]

  1. 「/m」(スマートフォンTOP)のURLを有効にする。
  2. デザインをCMSのテンプレートに適用する
  3. PCサイトと、スマートフォンサイトで使用するテンプレートテーマを分ける ←今回はここ
  4. 画像サイズをスマートフォンの画面サイズに合わせ自動リサイズ
  5. PCサイトとスマートフォンサイトとでURLが違うが、同じコンテンツを読み込む
    e.g) PC:/smartrelease/70 SP:/m/70
  6. FacebookのいいねボタンをPCサイトとスマートフォンサイトとで同じにする

今回はPCサイトと、スマートフォンサイトで使用するテンプレートテーマを分けます。巷ではレスポンシブウェブなどが流行っておりますがそんなの完全無視です。
流行りに反ってテーマを分けるには私なりに少し理由がありまして、PCサイトに載っているすべての情報がスマートフォンサイトには必要ないのでは無いかなと言う点と、一つのテンプレートで全ての端末に対応するのは、それはそれで時間がかかると思っているからです。手抜きといえば手抜きなんですが、以上の理由から当サイトではテンプレートを2つ用意しています。

[Drupal CSMテーマの分け方]
Drupal7.X

  1. ThemeKeyモジュールをインストールし、有効化します。
    (http://drupal.org/project/themekey)
  2. 「管理 » 環境設定 » ユーザーインターフェース」よりThemeKeyをクリクします。
  3. New Ruleより「drupal:path」を選択しスマートフォンサイトで使用するURL、「m」を入力し、スマートフォンサイト用に作成したDrupalテンプレートを選択します。
  4. 「設定を保存」をクリックすると、「/m」以下の階層にアクセスすると、スマートフォン用のテンプレートでレンダリングされます。

その他ThemeKeyではユーザー名、時間、タイトルなどの様々な条件でテーマを変更することが出来ます。

関連タグ: 

あってよかったSmartRelease!!~バックアップ編~

$
0
0

SmartReleaseは2012年5月に「ウェブ制作を超ラクにする」をコンセプトに、CPIの共用レンタルサーバーACE01の標準機能としてリリースされた、ウェブ制作時のトラブルを未然に防ぐサーバーツールです。

-SmartReleaseの詳細はこちら:https://www.cpi.ad.jp/shared/smartrelease/

 

SmartReleaseの機能

  • 本番環境と同一環境のステージング環境の提供
  • クリック操作だけで本番環境とステージング環境のデータ転送可能
  • Web30世代、DB10世代、毎日の自動バックアップ、リストア機能

 

2019年5月に7周年を迎えるSmartReleaseですが、お客様から「SmartReleaseがあって助かった!」という声を数多くいただいています。特に多いのが「間違って消してしまったデータをかんたんに復元できた」などの、バックアップ、リストア機能に関することです。

そこでみなさまに質問です。

 

バックアップは重要ですか?

 

おそらくこの問いに「NO」と答える人はいないでしょう。

 

バックアップを定期的に取得し、なおかつリストアの手順を把握していますか?

 

では、この問いに対してはどうでしょうか?ドキッとしたひともいるのではないでしょうか。だれしもが重要性を理解しているはずなのに、「いざという時」の備えというものはついつい忘れがちになるものです。

忘れいても忘れていなくても、あなたにかわって毎日バックアップを取得し、いざというときのリストアもかんたん。それがSmartReleaseです。

 

そこで今回、とある企業と、制作会社とのバックアップに関するやりとりを簡単な物語にしてみました。この物語はフィクションですが、実際にいただいた声をもとに作成しています。

どうぞ、おたのしみください。

 

A社とWeb制作会社B社のケース

 

A社は自社で企画、開発、製造までを行う雑貨のメーカーだ。

直販は行っておらず、これまでWebによる情報発信に力を入れてこなかったが、3年ほど前に制作会社の提案を受けコーポレートサイトをリニューアルし、続けてブログによる情報発信を開始した。

当初アクセスは思うように伸びなかったが、担当者がブログの記事に工夫を重ねた結果、今やWeb系メディアやSNSなどでしばしば取り上げられるまでになり、社内からのブログへの評価と期待は日に日に増しつつあった。

 

ある日、A社のWeb専任担当者である阿部は、先日公開したばかりのブログ記事に商品価格が誤記されていることに気が付いた。

 

阿部:「しまった、さすがに価格の間違いはまずい。」

 

時計をみて時間を確認する。16:00開始の企画会議まで、あと10分しかない。阿部は慌てて修正に着手する。企画会議は数時間に及ぶこともあり、いったん会議に入ると修正が大幅に遅れてしまう。阿部はどうしても会議前の修正を完了させたかった。

 

阿部:「よし!修正できた。すぐに保存だ!」

 

慌てながら「保存」をクリックしたつもりの阿部。しかし、実際にクリックしたのは「保存」ではなく「削除」だった。

 

 

「削除します。よろしいですか?」のメッセージもむなしく、阿部の瞳には「はい」しか映っていない。阿部はマウスのカーソルを最短距離で「はい」に合わせ、マウスの左クリックを小刻みに連打する。そして、ついに「はい」が押され、記事は削除されてしまった。

 

阿部:「よし、できた。おっと時間だ。会議室へ急がなきゃ」

 

サイトを目視確認することなく、ノートパソコンの上に資料を重ね、左わきに抱えながら慌てて会議室に急ぐ阿部だった。

 

数時間後.....

 

満足気な顔でデスクに戻って来た阿部。新企画についての反応は概ね好評であり、大きな手ごたえを感じていた。

 

時計に目をやると、時間はすでに18:00をまわっている。一息つき、何気なくブログを開いた阿部は異変に気付いた。先ほど修正したはずの記事が丸ごと消えているのだ。

 

阿部:「嘘だろ??」

 

何かの間違いかと思いブラウザをリロードするも、やはり記事は消えたままだ。焦った阿部はスマートフォンの充電ケーブルをやや乱暴に抜き取り、発信履歴を辿って制作会社B社の担当者山田宛に電話を入れる。

 

制作会社B社はA社のコーポレートサイト、ブログサイトを制作した会社だ。納品後もWebマーケティング支援から、バックアップなどを含めた運用・保守契約を締結している。

 

阿部:「山田さんですか?遅い時間にすみません。実はなにもしていないのにブログの記事が消えてしまったのです。もとに戻せないでしょうか?」

 

電話を受けた山田は、阿部とは対照的に落ち着いた声で回答する。

 

山田:「ちょっと見てみますね、対処できそうならすぐに着手します。少々お時間ください」

 

山田は電話を切り、即座にA社のウェブサイトを確認する。確かに最近アップロードされていたはずの記事が消えていた。A社と締結している保守契約はデータのバックアップ、緊急時のリストアも含まれており、ただちに対応する必要がある。

 

だが「データが消える」という事は極めて重大な出来事だ、対応には非常に神経を使う。なぜなら、

「誰かがバックアップを取っているだろうと全員思っていたが、実は誰も取っていなかった」

「バックアップを保存している外付HDDの故障に誰も気づいていなかった」

「バックアップはあるのにリストアの手順書が無く、だれもリストアできない」

 

など、バックアップに関するトラブルには枚挙にいとまがないからだ。

特に制作会社Bはデザイナーやプログラマーが中心であり、このような対応は本来得意分野ではない領域だ。しかし、山田は慌てることなくA社のSmartReleaseのコントロールパネルにログインし、バックアップデータを確認する。

 

山田:「よし、今日の昼頃までは記事があったことはこの目で確認している。昨日の夜に取得された最新のバックアップファイルでリストアしてみるか。」

 

山田はリストア作業に着手する。SmartReleaseなら難しいコマンドラインの操作も必要なく、クリック操作だけリストアが可能だ。

リストア開始を確認後、山田は引き出しからコーヒー豆をおもむろに取り出し、ケトルのスイッチを入れ、コーヒーミルにコーヒー豆を投入する。 

 

山田:「昼からコードの書きっぱなしだ、このタイミングで一息入れるか」 

 

挽き立てのコーヒー豆の香りが味わいながら、フィルタにコーヒー豆を入れるころ、ケトルから暖かい蒸気がゆらゆらと顔を出し始めた。山田は蒸気をじっと見つめていると、その直線上にあるディスプレイのわずかな動きにふと気付いた。目線をディスプレイにやると、リストア完了のメッセージが表示されていた。

 

山田:「おっと、もうリストアできたのか。コーヒーを入れる時間もないな」

 

山田はただちにサイトのチェックにとりかかる。A社のブログサイトを開くと、削除された記事が無事復元されていた。

 

山田:「よかった。記事が戻ってる。阿部さんも心配しているだろうから、すぐに連絡しなきゃな」

 

山田はスマートフォンの充電ケーブルをやさしく抜き取り、着信履歴を辿って阿部へ電話を入れる。

 

山田:「阿部さんですか??データが復元できましたので、確認お願いします。」

 

阿部:「たった今確認したところでした!!ところで価格が間違ったままなのですが??今日の昼過ぎに修正したはずなのに?」

 

山田:「申し訳ありませんが、その時点までしか戻せませんでした。お手数ですが、ご自身で修正していただけますか??」

 

阿部:「わかりました!ありがとうございました!すぐに修正します!」

 

というが早いか、すぐに電話を切る阿部。

 

山田:「なるほど、記事を修正しようとして間違って削除したのかな?そういや、俺も新人の時にデータ消しちゃったことがあったな。あの時もしSmartReleaseがあったら、あんなに冷や汗かくことはなかったのに。」

 

そうつぶやき、山田は再び席を立つ。

 

コーヒーをいれようと手に取ったマグカップにふと目をやると、山田は何かに気づいたように動きを止めた。懐かしそうなまなざしの先には、マグカップにプリントされた、長年使っているせいか少し消えかかっているA社のロゴがあった。

毎日のようにコーヒーを飲むために使っているそのお気に入りのマグカップは、取引開始直後に阿部からもらったA社のノベルティだったことを思いだす。

 

山田:「考えたら、A社との付き合いも丸3年か。取引開始直後はいろいろ大変だったけど、あれからA社の売り上げも順調だし、うちも従業員はずいぶん増えたよな。これからも一緒になって事業を伸ばしていけたらいいな。」

 

しばらく想い出にふけった後「おっと、ゆっくりしている場合じゃないな。早いところこっちの仕事も片づけなきゃ」とマグカップをデスクに置き、中断していた仕事を再開する。

すでに蒸気を出さなくなったケトルと、挽き立てでなくなったコーヒー豆を置き去りにして。

 

 

いかがでしたでしょうか

 

繰り返しとなりますが、この物語はフィクションです。

ただし、実際のお客様のお声をもとにしていますので、

同じようなことを経験された方は多いのではないでしょうか?

 

今回はSmartReleaseのステージングサーバーを利用していないケースでしたが、もしステージングサーバーを利用し、本番公開前に社内の関係者でサイトをチェックするというフローがあれば、公開前に価格の誤記に気づくことができたかもしれません。

 

ACE01を利用しているけど、SmartReleaseをあまり積極的に使ったことが無いという

お客様も、これを機に活用をご検討されてはいかがでしょうか。

そして、ACE01を使ったことがないという方も、この記事がきっかけとなりACE01に興味を持っていただければ、とてもうれしいです。

 

関連タグ: 
Viewing all 27 articles
Browse latest View live