WordPressのバージョンのデフォルト

WordPressの設置依頼を受けたときは、PHPのバージョンにより、以下のバージョンを採用しています。

(2021年10月現在)
特にWordPressのバージョン指定がない場合、
PHP 5.5以下では、WordPress 5.1系の最新版をインストールします。
PHP 5.6~7.0未満では、WordPress 5.5系の最新版をインストールします。
PHP 7.0~7.4未満では、WordPress 5.6系の最新版をインストールします。
PHP 7.4では、WordPress 5.7系の最新版をインストールします。

※PHP 5.6以上なら WordPress 8.0以上を設置できます。特別に指定がある場合のみ設置します。

基本的に何でも新しいバージョンのほうがいいとは限らないです。
基本的に何でも新しいバージョンのほうが重くなりますし、評判が聞こえてくるまでの初期、過渡期はバグのリスクがありますので当サービスではできるだけ最新バージョンは避けることにしています。

ミドルウェアのバージョンのデフォルト

2021年3月より CentOS Stream 8 のサポート開始をいたします。

以下のサービスカテゴリに対象OSを追加しました。
サーバー初期構築/各種設定
サーバーマネージメント(保守契約)

(2021年3月現在)
特にミドルウェアのバージョン指定がない場合、
CentOS 7 では Apache 2.4 / PHP5.6 / MySQL 5.6 をインストールします。
CentOS 8 では Apache 2.4 / PHP7.4 / MySQL 8.0 をインストールします。

カスタムサーバー初期設定にてミドルウェアはバージョン指定が可能です。
ただし、バージョン指定は、OSの制限やミドルウェア同士の依存関係に制限がある等の理由でその組み合わせができないこともあります。

Apache で大量アクセスが来たとき負荷を上げない設定

Apache で同時接続数の設定(2.2 では MaxClients、2.4 では MaxRequestWorkers)より大量アクセスが来たとき負荷を上げないためのちょっとした工夫について書きます。

MaxClients をいくら下げてもサーバー負荷が下がらないじゃないか!とお困りの諸氏に …

それはとても簡単で、ListenBacklog を少なめ(例えば 1 とか)に設定します。

Apache のマニュアルには、こう書かれていますが・・・
———-
ListenBacklog
保留状態のコネクションのキューの最大長です。 一般的には調整する必要はありませんし、調整は望ましくありません。 しかし、TCP SYN フラッドアタックの状況下におかれる場合に、 増やした方が望ましいシステムもあります。 listen(2) システムコールのバックログパラメータを ご覧下さい。
———-
これを読むと、ListenBacklog は調整不要、するとしても大きくする方向で、と思ってしまいますよね。
でも違います。逆です。
続きを読む

Apache2.4 PHP7等ミドルウェア各種対応

下記ミドルウェアの取扱が可能になりました。
以下は CentOS7 はもちろん、CentOS6 においてもインストール/設定が可能です。
(現使用環境の条件によってはできない場合があります)

・Apache 2.4
(Prefork / Worker / Event ともに可)

・PHP 7
(mod_php / php-fpm ともに可)

・MySQL 5.6
(旧バージョンからのアップデートではデータベースが引き継げないことがあります)

mod_dosdetector でDoS攻撃を503 ビジーにする方法

WebサイトへのDoS攻撃に対処するため mod_dosdetector-fork をインストールしてみたけど、RewriteRule で 503 に飛ばせないとお嘆きの諸氏に。

■ mod_dosdetector-fork インストール

(1) ビルド環境などの準備

yum -y install make gcc gcc-c++
yum -y install unzip
yum -y install httpd-devel
yum -y install git

(2) Apache2.2環境にインストール

Apache 2.2で使用したい場合は maint-1.0.0 を入れる。

cd /usr/local/src
wget https://codeload.github.com/tkyk/mod_dosdetector-fork/zip/maint-1.0.0
mv maint-1.0.0 mod_dosdetector-fork-maint-1.0.0.zip
unzip mod_dosdetector-fork-maint-1.0.0.zip
cd mod_dosdetector-fork-maint-1.0.0

make
make install

(3) Apache2.4環境にインストール

Apache 2.4で使用したい場合は git で最新を入れる。

cd /usr/local/src
git clone git://github.com/tkyk/mod_dosdetector-fork.git
cd mod_dosdetector-fork

make
make install

続きを読む

Apache 2.4 LocationでBasic認証

ちょっとした小ネタです。

例えば phpPgAdmin.conf がこんなふうになってるとき、

Alias /phpPgAdmin /usr/share/phpPgAdmin

<Location /phpPgAdmin>
    <IfModule mod_authz_core.c>
        # Apache 2.4
        Require all granted
    </IfModule>
</Location>

この場所に .htaccess を置いてBasic認証書いても効きません。
それは、Location の “Require all granted” が優先だから。

そんなときは、Location を Directory に変更すれば、.htaccess が優先されます。

Alias /phpPgAdmin /usr/share/phpPgAdmin

<Directory /usr/share/phpPgAdmin>
    <IfModule mod_authz_core.c>
        # Apache 2.4
        Require all granted
    </IfModule>
</Directory>

Apache2.4 インストールと設定(CentOS 6)

CentOS 6 に Apache2.4 PHP 5.6 を yum でインストールする方法を紹介します。

■ Apache2.4インストール (IUS版)

(1) 外部リポジトリIUSを使用

リポジトリIUSからインストール可能です。

# rpm -Uvh https://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/ius-release-1.0-14.ius.centos6.noarch.rpm

(2) Apache2.4インストール

リポジトリIUSを使用するとパッケージ名が違います。
httpd は httpd24u、mod_ssl は mod24u_ssl です。

# yum install httpd24u mod24u_ssl

httpdの自動起動(CentOS 6)

# chkconfig httpd on

続きを読む

Webサーバーの同時接続数と Google Analytics セッション数(訪問数)の違い

Webサーバーの同時接続数と Google Analytics セッション数(訪問数)の違いについて書きます。

■ Webサーバーの同時接続数とは

Webサーバー(Apache や Nginx)の同時接続数とは、同時アクセス数と言い換えてもいいですが、その言葉の通り Webサーバーに同時に接続しているブラウザ数(=ユーザー数)です。
これは表示されたページを眺めている人の数でなく、今まさにページを読み込んで表示している人の数です。

この数値はサーバーの負荷分析と必要十分なスペックを考察する上で非常に重要な値です。
同時接続数がいくらの時にサーバーのロードアベレージがいくらかはだいたい比例します。
サーバーがアクセスピーク時に瞬間的にどれだけの負荷に耐えられるかを決めるのは、瞬間的にどれだけの同時接続数をさばけるかにかかっています。

Webサイト運営の指標に1日のトータルのページビューや Google Analytics のセッション数やリアルタイムのアクティブユーザー数がありますが、これはWebサイト運営に必要なサーバースペックを決める観点からは参考程度にしかならず、本当に必要なデータは同時接続数です。

続きを読む

自己署名SSLサーバー証明書の作成

自己署名のSSLサーバー証明書の作成方法を書きます。

前提条件として OpennSSL は普通に使える環境であるものとします。

■ 自己署名のSSLサーバー証明書とは

通常 SSLサーバー証明書は然るべき認証局(VeriSignとかジオトラストとか)が発行し、それには電子署名が施されており、コモンネーム(運用するFQDN=フルドメイン名)が確かなものであると証明します。
この電子署名を認証局にやってもらわずに自分で OpennSSL の機能で施すことが自己署名です。

自己署名の証明書は信頼性に欠けるとしてブラウザなどのクライアントソフトウェアではエラーや警告メッセージが表示され、フィッシングサイト、怪しいサイトであるような印象を与えます。
しかしながらデータの暗号化という観点だけを見れば認証局が署名したものと全く同等であり、暗号化の観点でセキュリティは劣りません。
ですからデータの暗号化が目的なだけなら自己署名でよい場合もあります。
続きを読む

キャッシュサーバーで大規模サイト構築

以前、お客様のご要望で、複数台の負荷分散で毎秒数千リクエスト、数ギガbpsのトラフィックを延々とさばくようなシステムを作るための試行錯誤を重ねておりました。
そのときの試行錯誤や最終的に落ち着いた方法についてまとめておくことにします。

やりたいことはこうです。

・画像や動画ダウンロードが主体のファイル置き場のサーバーを運営して膨大な数のリクエストに対応したい。

考慮するポイントは以下の通り
・動画は1本10MB程度~20MB。コンテンツの更新時にはこれが10本程度は増える。初期は全体で1.5TB程度。
・トラフィックは数ギガbpsになるので、1Gbps回線が複数必要。必要な本数を用意する。コストはかかってもよい。
・リクエストは毎秒1000以上はあるので、負荷分散は必須。マシンを複数台用意する。コストはかかってもよい。

考えられる方法は以下の通り
・DNSラウンドロビン
・ロードバランサー(専用機器)
・ロードバランサー(ソフトウェア)
・リバースプロキシ&キャッシュ兼ロードバランサー
またはこれらの併用。

続きを読む