KUSANAGIでWordPressを設置してみた

WordPressが簡易なサイト構築の定番の一つになって久しいですが、PHPで書かれているためかサーバーにとってはそこそこ重いんですよね。
(この軽さの点でいえばMovableTypeのほうが優れていたような気がしますが、最近はあまり見かけない気がします)

さくらインターネットが、そんなWordPressが高速に動作するようチューニングした仮想サーバーを用意してくれました。
そういえば弊社には負荷の高いWordPressサイトが1つ以上あったっけな……これは移行して使ってみるしかない!

……とY氏に言われまして。
ちょくちょくY氏の思い付きの実行隊員にされることの多いさみどりですが(扱ったことのないPythonでWindowsのソフト作ったり、それにCOM通信やWeb通信機能を盛り込んだり。当時のさみどりはサーバー管理専門だったんですが、おかげさまで今やマルチな戦士に)
今回も例に漏れずさみどりがKUSANAGIを導入することとなりました。

なのだけど……今回は楽でしたね!

  1. DNSは事前に設定しておく。
    すぐにいじれないならhosts登録でも作業はできるけど、Let’s encryptが使えるのはDNS登録後のみ。
  2. (1ページ目)クラウドのホストを1個借りる。OSにKUSANAGIを選択。
  3. (2ページ目) yum --enablerepo=remi,remi-php56 update -y でパッケージを最新化。
  4. kusanagi init でサーバーの初期設定。
    • 2ページ目の残り全部が対話形式で全部進みます。
    • 確かここでLinuxのkusanagiアカウントのパスワードを求められる。入力内容は後々使うので忘れずに。
  5. (3ページ目) kusanagi provision public_html でサイトの用意をする。
    • ここで入力したpublic_htmlの部分がDocumentRootのディレクトリ名になり、あとからの名前変更はかなり面倒くさいみたいなので名前にこだわりのある人はちゃんと考えてつけましょう。
    • 3ページ目の残り全部が対話形式で全部進みます。
    • 途中で入力するデータベース名、MySQLユーザー名、パスワードは後でWordPressセットアップ時に聞かれるので覚えておくように。
      なお新設ではなく移行の場合は、移行元サイトと同じにすると面倒がないです。
    • 途中Let’s Encryptで使うメールアドレスを聞かれます。入力任意ですが、費用をかけずSSL化できて便利だし、Googleが「全てのサイトはSSL化すべき」とか言っちゃってるらしいので、問題がないならやっておいたほうが無難です。
  6. ここから新設か移行かでちょっと違う。
    • 新設の場合、(4ページ目)WebアクセスしてWordPressのセットアップ
      1. 【さあ、始めましょう】ボタンを押すと wp-config.php を作るフォームへ行きます。ファイルを手入力で作る人には馴染みのない画面。
        ここでさっきのデータベース名、MySQLユーザー名、パスワードを入力。
      2. 次はおなじみ、WordPressのタイトルやアカウントを登録するフォーム。ちゃちゃっと入れて【WordPressをインストール】を押せばセットアップ完了です。
    • 移行の場合、ここで移行元サイトのファイルとDBデータをKUSANAGIサーバーに持ってくる。
      1. 旧サーバーのファイルをtarで固め、DBのdumpを取って、それらのファイルをKUSANAGIサーバーへ。
      2. /home/kusanagi/public_html のファイル丸ごとを一度tarで固めてバックアップしておく。
      3. 旧サーバーのファイルを展開して public_html を上書き。
        さらに元々の public_html を固めたtarを展開して再上書き。
      4. 旧サーバーのDB dumpをMySQLに展開する。WordPress用のMySQLユーザーでやるのがよい。
      5. Webアクセスして旧サイトと同じように表示できれば移行完了。
  7. WordPressの更新はKUSANAGIサーバー内部だけで動くFTPによって行う(FAQのQ3を参照)。
    ここで最初の頃に入れたLinuxのkusanagiアカウントのパスワードが必要。

という具合。
文字だけだとわかりやすさは伝わらないでしょうけど、ほぼ解説通りで迷うことがありませんでした。

スペックのほうですが、このサイトは移行した翌日にやんごとなき理由でアクセスが集中、負荷がかなり高まったはずなのですが華麗に乗り切りました。
今後WordPressはだいたいKUSANAGIに任せてしまってよさそうな予感がします。

CakePHP:find関数;nullってなに?<IS NULL>と<NOT NULL>の書き方

初心者にはなかなか理解しづらい「null」。

そもそも「null」とは、

「NULLは特殊な値です.NULLは 「列名 = NULL」 や 「列名 <> NULL」 といった通常の比較演算子を用いた方法では検索することができません. NULLを対象として検索するにはIS NULL演算子,もしくはIS NOT NULL演算子を使用します.」

そして、

NULL値はデータが存在しないことを表す値です。大文字と小文字のどちらも使用できます。

NULLはデータが存在しないということなので、文字列における空文字”や数値における0とは異なります。

プログラムで使う変数は宣言をした時に領域が確保されます。

そのあと、変数が持っているアドレスが0.0.0.0の状態がnullです。

あ。これはちょっと広義的になってしまうので・・・・説明はここまでで・・・・

現在、CakePHPでプログラミングをしているので、

今回は

CakePHPのfind条件に「null」「not null」を使う方法を記述しておきます。

上記で記述したとおり、「NULLを対象として検索するにはIS NULL演算子,もしくはIS NOT NULL演算子」を使用すると書きました。これはそれぞれ書き方が違います。

<IS NULL>の場合

$data = $this->Model->find( 'all',
    array(
        'conditions' => array('Model.id' => NULL),
        'fields'     => null,
        'order'      => null,
        'recursive'  => 1,
    )
);

SQLでいうところの、IS NULL の方法。
単純に、 conditions に配列で指定するだけです。

これで WHERE Model.id IS NULL というSQLとなります。

<NOT NULL>の場合

NOT NULL の場合は、ちょっとだけひねって、”NOT”の2次元配列で条件を作成。

$data = $this->Model->find( 'all',
    array(
        'conditions' => array(
            'NOT' => array(
                'Model.id' => NULL)
        ),
        'fields'     => null,
        'order'      => null,
        'recursive'  => 1,
    )
);

カラムにNULL値を持つ事が出来ないように設定する方法になり、

これで、WHERE Model.id IS NOT NULL というSQLとなります。

とりあえずここまでにしますのが、

あと基本的に書き方が同じなfind条件での「IN」、「NOT IN」演算子の使い方については次回にしたいと思います。

 

それでは。。

第二回 PostgreSQL ~SELECT文~

SELECT文は、データベースからデータを取り出すための構文です。

SELECT文では、単にデータを取り出すだけでなく、さまざまなキーワードを組み合わせて取り出すデータを制限したり、条件を付けたりすることができます。

 

SELECT文には、いくつもキーワードがありますが、今回は以下の3つをしっかり覚えてください。

 

  • 「どの項目(列)のデータを検索するか」を指定する:SELECT
  • 「どの表から検索するか」を指定する:FROM
  • 「どのような条件で行を検索するか」を指定する:WHERE

表を指定してデータを取得しよう

 

表のすべての列データを指定するには、SELECTの後に「*(アスタリスク)」を指定します。構文はこちらになります。

SELECT  * ← 全てのデータの列を (SELECT句)

FROM  * ← どの表から (FROM句)

上記のようにSELECTキーワードに続いて列名を指定する部分を「SELECT句」、FROMで表名を指定する部分を「FROM句」と呼びます。

select * from 列名 ;

SELECT文の最後に指定している「;(セミコロン)」は、「ここで1つのSQL文が終わり」ということを示す記号です。重要ですので覚えておきましょう。

また、

select 列名,列名・・・・ ←(どの列のデータを)

from  表明 ←(どの表から)

*SELECTやFROMなどのキーワードや、表名、列名は、大文字、小文字どちらで書いても問題ありません。また、SELECT文が長くなるようであれば、途中で改行しても問題ありません。実際に仕事でSQL文を書くときは、ルールを決めて書き方を統一することをお勧めします。構文の書き方を統一しなければ、処理性能が低下してしまう可能性があるからです。

条件を指定して、特定の行データを検索しよう

全てのデータから、特定の行だけ取り出したいときは、「WHERE句」を使います。

SELECT  列名1, 列名2,           ←どの列のデータを(SELECT句)
FROM    表名                    ←どの表から(FROM句)
WHERE   列名 比較演算子 条件値  ←どのような条件の行を(WHERE句)


続きはまたあとで!

 

 

第一回PostgreSQL

PostgreSQLとは、データベースを管理するために使われるリレーショナルデータベース(RDB)管理システムです。また、オープンソースなため、世界中で使われているRDBです。

初心者が覚えるべき最低限の用語~概念を理解しよう~

概念:スキーマ:プログラミング手法における論理構造や物理構造を定めた仕様です。

似ているものに[mysql]がありますが、

[mysql]は

データベース → テーブル

[PostgreSQL]は

データベース → [スキーマ] → テーブル

と論理構造が違います。

select文とかcreate,where,delete文等は同じです。

しかし、[PostgreSQL]はスキーマ名を記入する必要があり、ドットでスキーマ名とテーブル名を記入しなければいけません。

例)

mysql
SELECT * FROM db_table;

【postgres】
SELECT * FROM schema_name.table_name;

まずはまずはまずは!、これだけ覚えておけば大丈夫でしょう。

次回はいくつかのコマンドを紹介したいと思います。

死活監視システムを置いてみよう

Xymon

死活監視とは、サーバーやサービスが稼動しているかどうかを監視することです。

Web事業を手がけるパラファミリーにとっても死活監視は大事なこと。

今日はその死活監視をしてくれるシステム Xymon を導入します。

(今までも運用していたのですが、今日は今までと別のサーバーにもうひとつ入れます)

“死活監視システムを置いてみよう” の続きを読む

脆弱性への対応は意外と進まない?

先日また明らかになったOpenSSLの脆弱性(CVE-2014-0224、弊社ではもちろん直ぐに対処したのですが、

大手のWebサイトでも対策が遅れているところがあるらしいです。

中間者攻撃は難しいから、そうそうやられるわけがない』などとたかをくくっている……というわけではないと思うのですが。



OpenSSLの脆弱性、いまだに悪用可能なWebサイトが相当数存在 – ITmedia エンタープライズ

“脆弱性への対応は意外と進まない?” の続きを読む

[PostfixAdmin]メールサーバーの建て方

先日の作業はメールサーバーの構築だったんですが、久々すぎて手順をすっかり忘れていました。

手順なんて調べればいくらでも出てきそうですけれど、リマインドも兼ねて手順を書いておきます。

前提として、

  • サーバー環境はCentOS6、root権限あり
  • なるべくyumパッケージを利用する
  • アカウントとメール転送の管理をWeb上から行えるようにする。

    Apacheは既に動いており、PostfixAdmin用にSSL付VirtualHostを追加可能。

以上の条件から、使用するパッケージは Postfix+Dovecot+PostfixAdmin+MySQL に決まり。

“[PostfixAdmin]メールサーバーの建て方” の続きを読む