みなさんこんばんは。
さくら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は有効にしておきましょう