Serversman@VPS Petitを快適に使う方法

Serversman@VPS Petitは、シリーズ最安値のOpenVZ系の仮想化VPSである。選択できるディストリビューションはCentOS 7のみであり、パッケージ名は”PRセット”となっている。
おそらく、本シリーズの意図は、お試しなのだろうと思われる。お試しなので、すべての機能が過不足なく動作してしまうと、上位プランへ移行しにくくなるので、あえて、ストレージ容量を、大幅に削減し、Entry Planの50GBに対し、それの、10分の1の5GBでの設定となっている。

但し、標準構成で、IPv4/IPv6のアドレスが一つずつ付与させるので、使い方次第では便利に使える可能性も出てくる。こんなPetit planなのだが、唯一、現時点では、yum upfdateが完結しないなど、OpenVZとCentOS7の相性問題が解決されなままに状態なので、yum install周辺の操作は、壊滅的で、その根幹であるinitsctiptsの依存関係を解決しない限り、まともにつかうことができない。

今回は、これではあまりにも、不都合か多いから、メモリー上の不足を補いつつ、とりあえず動作するところまでを解説する。

exclude initscriptsの無効化

/etc/yum.conf

exclude initscriots* <--これをコメントアウトしておく
#exclude initscriots*

これで、yum updateが音大なく終了するようになり、yum iinstall epel-releaseも問題なく動作するようになる。

LAMPP周りの整備

関連プログラムのインストール
今回インストールするのは、

・MySQLd
・php 7.0.x with OPCache
・Apache 2.4.x

以上の三点セットとした。

CentOS7なので黙っていると、MariaDBが標準でインストールされるので、今回は、MySQLdのCommunity Editionをyumからインストールし、InnoDBをマスクして、MyISAMで動作させメモリーを節約する。
この三点セットの追加インストールを行えば、Entry Plan契約時のBLOGセット相当の動作となる。

まずは、何もないところから、WordPressを最小限で走らすための設定。

レポジトリの導入編

# yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm -y
# yum install epel-release -y
# yum install -y http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
MySQLまでの導入

標準でサポートされるMariaDBを差し替える設定(ここでは、Mysql55を選択した)
# yum install yum-utils -y
# yum-config-manager --disable mysql56-community
# yum-config-manager --enable mysql55-community
# yum install mysql mysql-devel mysql-server mysql-utilities -y

以上の操作で、MySQL DBまでのインストールが終了しましたので、その確認を行います

# rpm -qa |grep mysql
mysql-community-release-el7-5.noarch
mysql-connector-python-8.0.16-1.el7.x86_64
mysql-community-common-5.5.62-2.el7.x86_64
mysql-community-client-5.5.62-2.el7.x86_64
mysql-utilities-1.6.5-1.el7.noarch
mysql-community-devel-5.5.62-2.el7.x86_64
mysql-community-libs-5.5.62-2.el7.x86_64
mysql-community-server-5.5.62-2.el7.x86_64

MySQL version 5.5.xがインストールされていればOKです。

ここでは、まだ、MySQLdは走らせません。
必要に応じて、InnoDBを無効化したい場合には、この時点で/etc/my.cnfを編集して、以下を追記しておきます。
後からだと、InnoDBテーブルが出来てしまうので、面倒です。

my.cnfの調整

# vi /etc/my.cnf
[mysqld]
中略
skip-innodb
default-storage-engine=MyISAM
#query_cache_limit=1M
#query_cache_min_res_unit=4k
#query_cache_size=24M
#query_cache_type=1
:wq!

この段階で、MySQLdを走らせることが可能なので、初期パスワードなどの設定をします。

MySQLサーバーの初期設定

# systemctl start mysqld
以下2つのパスワードを設定しましょう。
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'
new-passwordの部分に自分の設定するパスワードを入れます。

/usr/bin/mysql_secure_installation
を必要に応じて走らせて設定しても良いですが、Local環境で使うならば、特に必要はありませんので、
このままの状態で使うことが出来ます。

# mysql -u root -p
と入力すると、パスワードを聞いてきますので、今設定したパスワードを入力すると、MySQLサーバーへの接続が
完了するハズです。
mysql> のプロンプトが出れば、OKです。
mysql> quit     <-- 一端抜けます。

とりあえず、WordPressの走行環境までをざっとインストールしてしまいましょう。

PHPのインストール

# yum install php php-mysql php-gd php-devel php-opcache php-fpm php-apcu php-mbstring php-xml php-mcrypt --enablerepo=remi-php70
// php-opcache,php-apcu,php-fpmはphp高速化をする場合に必要 //

MySQLdとhttpdを再起動した場合にもサービスとして立ち上がる様にしておく。

# systemctl enable httpd
# systemctl enable mysqld

Apacheの調整
以下の2箇所を変更しておく
これをやっておかないと、パーマリンクが正しく動作しない。

# vi /etc/httpd/conf/httpd.conf
#
<Directory />
 Options FollowSymLinks
 AllowOverride All
</Directory>
#
<Directory "/var/www/html">
  Options Indexes FollowSymLinks
  AllowOverride All
</Directory>
#
:wq!

ここまでの操作で、必要な物は全て整いました。
とりあえず、Apacheを起動して、アクセス可能かどうかを確かめておきます。
自分のサーバーにhttp://domain.name/とした時に、Apacheの初期画面が表示されればOKです。

それでは、いよいよ、WordPressをインストールします。

データベースの準備

# mysql -u root -p
Enter password: 
-- 中略 --
mysql> create database user01_wp character set utf8;
Query OK, 1 row affected (0.00 sec)

一般ユーザーを作る
user01_*というワイルドカードのデータベースへのアクセスを許可するuser01というユーザーを作る。
CREATE USER 'user01'@'localhost' IDENTIFIED WITH mysql_native_password;
GRANT USAGE ON *.* TO 'user01'@'localhost';
SET PASSWORD FOR 'user01'@'localhost' = password('new-password');
GRANT ALL PRIVILEGES ON `user01\_%`.* TO 'user01'@'localhost';

これで、user01が、user01_wpへのアクセスが可能になる。

他のアドレスからのrootユーザーを許可するには
CREATE USER 'root'@'xxx.xxx.xxx.xxx' IDENTIFIED WITH mysql_native_password;
GRANT USAGE ON *.* TO 'root'@'xxx.xxx.xxx.xxx';
SET PASSWORD FOR 'root'@'xxx.xxx.xxx.xxx' = password('password');
GRANT ALL PRIVILEGES ON *.* TO 'root'@'xxx.xxx.xxx.xxx'WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
GRANT ALLとすると管理者権限とすることができる
他のサーバー上で、phpMyAdminから、rootにアクセスする場合rootを追加する。

WordPressの最新版をインストール

最新のWordPressをダウンロードして/var/www/htmlへ配置する

# cd /var/www/html
# wget -O - 'http://ja.wordpress.org/latest-ja.tar.gz' |tar zxf -
これで、wordpressというディレクトリ内に最新版のWordPressが展開される。
このままでも良いが、html直下に移動しておく。
# cd /vae/www/html/wordpress
# mv * ../
# cd ../
# rmdir wordpress

インストールは、これで、完了しているので、後は、http://domainName.tld/ などとしてアクセスすれば、WordPressのインストール画面へと遷移する。

ここで設定するのは、先のuser01_wpへ、user01でアクセス出来るようにする。
データベース名:user01_wp
ユーザー名:user01
パスワード:new-password
データベースホスト名:localhost
テーブル接頭辞:wp_

後は適宜に。

最短コースのつもりで、仕上げてみたつもりなのだが、なんとなく、まだまだ、やることが多すぎる感があるが、上から順に実施していけば、そこそこ最新のWordPress環境が整うハズ。

後は、ここでは触れないが、php-opcache,php-apcuあたりをインストールしたり、必要に応じてphpMyAdminあたりをインストールすれば、より快適になる。

メモリーの微量性

メインメモリーが256MBと少ないので、できる限りメモリーを節約する設定を施しておく。
Apache周りのLoadModuleを削減して良いが、最も効くところを以下のように設定しておく。

/etc/php.d/10-opcache.ini

; Determines if Zend OPCache is enabled
opcache.enable=1

; Determines if Zend OPCache is enabled for the CLI version of PHP
;opcache.enable_cli=0
opcache.enable_cli=1

; The OPcache shared memory storage size.
opcache.memory_consumption=48
;ここは最初128担っているので、最低限16MBとなるが速度を考慮して48MBとしておく
; The amount of memory for interned strings in Mbytes.
opcache.interned_strings_buffer=8
/etc/php.d/40-apcu.ini
;       This can be set to 0 to disable APCu
apc.enabled=1

;       Setting this enables APCu for the CLI version of PHP
;       (Mostly for testing and debugging).
;apc.enable_cli=0
apc.enable_cli=1

;       Sets the path to text files containing caches to load from disk upon
;       initialization of APCu. preload_path should be a directory where each
;       file follows $key.data where $key should be used as the entry name
;       and the contents of the file contains serialized data to use as the value
;       of the entry.
;apc.preload_path=

;       The size of each shared memory segment, with M/G suffixe
;apc.shm_size=32M
apc.shm_size=32M 
;ここの値も、明示的に、32MBとしておく
 /etc/httpd/conf.d/mpm.conf
<IfModule mpm_prefork_module>
    StartServers        2
    MinSpareServers     2
    MaxSpareServers     3
    ServerLimit         25
    MaxClients          25
    MaxRequestsPerChild 1000 
</IfModule>

余り少なくても速度が落ちるので、上記程度としておく。

これで、初回動作時に、メモリースワップが発生しない程度のメモリー負荷にすることができるハズ。
こういう情報を公開しないのは、やはりPetit Planはお試し的な位置づけにあるためなのだろうけど、全く使えないんじゃ仕方ないので、とりあえず使えるようにしてみたよという訳。

ひと手間かかるので、Entry PlanかStandard Planを借りて、BLOGセットやエンジニアリングセットをインストールしたほうが、楽かな?