さくらVPS(CentOS 7)にEC-CUBE 3.0をインストールする

みなさんこんばんは。

さくらVPSを使ってみました。いいですね。一番いいのは、コンソールが表示されること。例えば、firewalldとかの誤設定でSSH接続ができなくなった場合、DTIのServerman@VPSでは、iptablesをリセットするしかなかったけど、コンソールはリモートデスクトップみたいなものなので、OS起動前でも操作ができてしまう。OSのインストーラまで操作できる。

これを体験すると、Serverman@VPSには戻りたくなくなります・・・。

難点は、プランのアップグレードができない点。仮想マシンの再構築・再インストールになってしまいます。

さくらVPSにEC-CUBE 3.03をインストール

いろんなところでひっかかってなかなかうまくいきませんでした。思い出しながら書いてますので、抜けてるところがあるかも。

パッケージの追加

まず、インストーラーを使って、CentOS7をインストール。Basic Webserverにしたので、いろいろ足りないので、まずはモジュールの追加から。

# yum install mariadb-server mariadb perl-Compress-Raw-Bzip2 perl-Compress-Raw-Zlib perl-DBD-MySQL perl-DBI perl-IO-Compress perl-Net Daemon perl-PIRPC
# yum install php php-cli php-common libzip apr apr-util mailcap php-soap php-snmp php-gd php-xml php-xmlepc php-intl php-mbstring php-bcmath php-odbc php-dba php-pdo php-pgsql php-pear php-pecl-memcache
# yum install httpd httpd-tools mod_ssl

PHP関連とmysql(CentOS7はMariaDBです)関連、Apache httpd関連をインストールします。

データベースの初期化と作成

次に、MariaDBのセットアップをします。

# mysql_secure_installation

パスワードのみ、きちんと設定すれば、あとはEnterでいけました(適当)。次に、データベースの作成です。

# mysql -u root -p

パスワードを求められるので、先ほど設定したパスワードを入力。そしてDB作成。

MariaDB > CREATE DATABASE eccube3_db;
MariaDB > GRANT ALL PRIVILEGES ON eccube3_db.* TO eccube3_db_user@localhost IDENTIFIED BY 'パスワード';
MariaDB > EXIT;

データベースの名前、ユーザー名、パスワードはもっとちゃんと考えて入力してください・・・。

EC-CUBEをダウンロード、インストール

# wget /tmp http://downloads.ec-cube.net/src/eccube-3.0.3.tar.gz
# tar -xf /tmp/eccube-3.0.3.tar.gz
# mv eccube-3.0.3 eccube
# mv eccube /var/www

ダウンロードして解凍しますが、解凍後のディレクトリの置き場所について。

絶対に、/var/www/htmlに置かない!

デフォルトで、/var/www/htmlは、Apache httpdの公開ディレクトリになってます。なので、このディレクトリにeccubeディレクトリを置くと、全ファイルが丸見えになってしまう危険性があります。

セキュリティ上よくないので、上記の例ですと、/var/wwwに置いてますが、まあどこでもいいんですが、Webサーバからは見えない場所に置くように心がけてください。

すると、当然、EC-CUBEの公開ファイルも見えなくなりますので、エイリアスを作りましょう。

# vim /etc/httpd/conf.d/eccube.conf

ここにエイリアスのディレクティブを書きます。

Alias /shop/ "/var/www/eccube/html/"
<Directory "/var/www/eccube/html">
   Options ExecCGI Includes FollowSymLinks
   AllowOverride All
   Order allow,deny
   Allow from all
</Directory>

eccubeの下にある、htmlディレクトリを公開したいわけです。上記の例ですと、shopが実際にアクセスできるディレクトリになります。そして、/var/www/eccube/htmlの部分は、実際にインストールしたディレクトリ+/htmlを指定すれば、エイリアスの完成です。

EC-CUBEのインストーラが動かない!

http://example.com/shop/install.phpにアクセスしますが、

Forbidden You don’t have permission to access /shop/install.php on this server.

になる場合があります。ここで注意するべき対策は以下です。

・パーミッション、所有者

# chown -R apache:apache /var/www/eccube
# chmod -R 755 /var/www/eccube

それでもダメ、logを見てみると

# vim /etc/httpd/logs/error_log
(13)Permission denied: /var/www/eccube/html/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable and that '/var/www/eccube/html/' is executable

だそうです。

ここで2日くらい悩みました・・・。

解決策は、まず、上位ディレクトリに.htaccessを置くこと。上位というのは、実際にアクセスできるディレクトリ(エイリアス)の方です。http://example.com/shop/でアクセスできる場合は、ルート(通常は/var/www/html)です。内容は適当で

order deny,allow
allow from all

くらいで大丈夫です。それでも同じエラーが消えない場合は・・・間違いなく、SELinuxです。

# semanage fcontext -a -t httpd_sys_content_t '/var/www/eccube(/.*)?'
# restorecon -R /var/www/eccube

で、アクセスを可能に設定。
それでもだめなら、一時的にSELinuxを無効にしてしまいましょう。(無効のままはアレなので、インストール後に対処しましょう)

# setenforce 0

これでようやく、インストーラーが起動すると思います・・・。

インストール時の警告

mbstring

すでにインストールしていると思いますが、してない場合は念のため。

# yum install php-mbstring

次に、PHPの設定。

# vim /etc/php.ini

ここで、必要な箇所のコメントアウトを解除し、必要な設定を行います。

expose_php = Off
max_execution_time = 300
memory_limit = 256M

default_charset = "UTF-8"

date.timezone = "Asia/Tokyo"

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none;
mbstring.func_overload = 0
mbstring.strict_detection = Off
mbstring.http_output_conv_mimetype=

APC

APCはプログラム実行の際のキャッシュらしいので、インストーラで警告が出た場合は、高速化のためにも入れておきましょう。

# yum install httpd-devel
# pecl install apc

これでインストールできます。次に、設定ファイルですが、これは存在しないので、新規に作ります。

# vim /etc/php.d/apc.ini
extension = apc.so
apc.enabled=1
apc.shm_segments=1
apc.shm_size=128M
apc.optimization=0
apc.ttl=86400
apc.user_ttl=86400
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
apc.cache_by_default=1

ここを参考にさせていただきました。

Mcrypt

php-mcryptは、標準のyumのリポジトリに含まれていないので、追加してからインストールしなければなりません。

# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
# rpm -ivh epel-release-7-5.noarch.rpm
# yum install --enablerepo="epel" php-mcrypt

ようやくインストール終了・・・管理画面が出ない!!

インストールは無事終わっても、その後、管理画面が出ない場合が有ります。これも悩みましたが、解決方法は簡単でした。

インストールしたECCUBEディレクトリの下のhtmlディレクトリの.htaccessに、記述を加えます。

# vim /var/www/eccube/html/.htaccess

order deny,allow
allow from all
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /shop/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpg|css|ico|js)$ [NC]
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

RewriteBaseを加えます。ここで指定するパスは、ECCUBEをインストールした絶対ディレクトリではなく、また相対ディレクトリでもなく、エイリアスで指定したURLのディレクトリ名を入力するのです。仮想フォルダのような機能なので、インストールしたディレクトリを入れても、管理画面は表示されません!

以上、けっこう大変な作業でしたが、無事EC-Cube 3.03をさくらVPSにインストールできました。

※SELinuxは有効にしておきましょう

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です