はじめに
仕事でEC-CUBE4をさくらのvpsのUbuntu22.04LTSにインストールすることになりまして、その備忘録を書きとめておきます。
きっと誰かのお役に立ってくれるのではないかと思います。
(もちろん備忘録なので自分の役に立つのはもちろんですが...)
ご注意1:以下の説明を参考にしながらEC-CUBE4をインストールされる場合ですが、
必ず上から下へ、番号順に作業を進めていってください。
順番を変えてしまいますと、正しくインストールされない可能性がありますのでご注意ください。
ご注意2:以下の説明の中でインストールコマンドがaptだったりapt-getだったりするところがありますが、
これはいろいろなサイトや書籍を参考にしたためゴチャゴチャになっているだけです。
Ubuntuコマンドをよくご存じの方は適当に変えて実行して下さっても大丈夫かと思いますが、
お分かりにならない方はそのまま実行してください。
ご注意3:以下の内容は実際に私(管理人)がさくらのvpsを契約し、OSをインストールし、
EC-CUBE4をインストールできた内容を記事にしたものですが、この通りにやったからと言って動作の保証をするものではありません。
時間がたてばいろいろバージョンアップされたり削除されたりするものがあるでしょう。
なので、この記事を見て「やってみよう」と思われた方はあくまで自己責任で行ってください。
私(管理人)は一切の責任を負いかねますので宜しくお願い致します。
2022年7月 記
目次
1.動作環境等
機能 | バージョン・仕様等 |
---|---|
サーバー | さくらのvps(レンタルサーバー) ~論理2core, SSD 50GB 環境にインストールしてみました。~ |
OS | Ubuntu22.04LTS |
Apache | Apache 2.4.x |
MySQL | MySQL 5.7.x |
PHP | PHP 7.4.x |
EC-CUBE | EC-CUBE 4.1.x |
2.さくらのvpsを契約
- まずは、さくらのvpsを契約(お試しでも大丈夫です)してUbuntu22.04LTSをインストールしてください。
その際、SSHポートとWebポートは最低限開放してください。
OSをインストールしたらサーバーを起動してください。
- 端末より契約したサーバーへログインしてください。
(ここではWindows11のコマンドプロンプトを想定しています。 Windows11のコマンドプロンプトではsshコマンドが標準で使えると思います。)
コマンドプロンプトより下記コマンドを実行しますとログインできます。 なお、SSHポートはデフォルトの22番であることを前提として話を進めます。ssh ユーザー名@ドメイン名(IPアドレス)
さくらのvpsではデフォルトユーザー名はubuntuで、 ドメイン名は独自ドメインを指定していなければtk2-105-54065.vs.sakura.ne.jpな感じのドメインが割り当てられていると思います。 なので、具体的には下記のようなコマンドを実行することになります。 ドメイン名は契約時に割り当てられたものを用いてください。
ssh ubuntu@tk2-105-54065.vs.sakura.ne.jp
sshコマンドを実行しますと、パスワードを聞かれると思いますので契約時に指定したパスワードを入力してください。 ログイン出来たらOKです。
- スーパーユーザーになる
インストール作業を進めるにあたり、コマンドを実行するときにはスーパーユーザーになっておく必要があります。 スーパーユーザーになるために下記のコマンドを実行してください。sudo su
上記コマンドを実行しますとパスワードを聞かれますので入力してください。
なお、上記コマンドでスーパーユーザーにならずにsudoコマンドでインストール作業を進めた場合ですが、 インストールに失敗する可能性がありますのでご注意ください。
3.Apacheの最新版をインストール
- 現在のApacheのバージョン確認(未インストール)
下記コマンドを実行してデフォルトのバージョンを確認します。apt show apache2
- リポジトリ変更
下記コマンドを実行すると最新バージョンを示すようになります。add-apt-repository ppa:ondrej/apache2
- Apacheのバージョン再確認
もう一度下記コマンドを実行して、最新バージョンになっていることを確認します。 (ちなみに...ですが、【最新バージョンでなくてもいいよ】という方は気にされなくても良いです)apt show apache2
- Apache(最新)をインストール
下記のの2つのコマンドを実行すればApacheをインストールできますので実行して下さい。apt-get update apt-get install -y apache2
- Apache動作確認です。
下記コマンドを実行すると、Apacheの動作状態を確認できます。systemctl status apache2
- インストールされたApacheの確認
apache2ctl -v
- 設定ファイルを編集します。
- 下記のファイルを編集します。
/etc/apache2/sites-available/000-default.conf
- 000-default.confファイルを下記のように編集します。
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. ServerName tk2-105-54065.vs.sakura.ne.jp DocumentRoot /var/www/html ServerAdmin info@example.com <Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride all Require all granted </Directory> # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". # Include conf-available/serve-cgi-bin.conf </VirtualHost>
- 注意点はここです↓
ServerName tk2-105-54065.vs.sakura.ne.jp DocumentRoot /var/www/html ServerAdmin info@example.com <Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride all Require all granted </Directory>
- ServerName tk2-105-54065.vs.sakura.ne.jp にはドメイン名を設定してください。IPアドレスは不可です。
- ServerAdmin は連絡先となるメールアドレス(デフォルトのままでもOKです)。
- DocumentRootはデフォルトでOK(EC-CUBEのインストール先になります)
- Directoryタグ内ですが、これは.htaccessファイルを読み込んで処理するように指定しています。 ブラウザで参照しに行ったときにこれらが無いとエラーになって表示されません。
以上で編集(設定)は終了です。
Apacheを再起動して編集(設定)を有効化してください。sudo service apache2 restart
- 下記のファイルを編集します。
4.MySQLをインストール
- 必要なパッケージをインストールします。
下記の2つのコマンドを実行してください。apt-get update apt-get install wget
- 下記のコマンドでダウンロード先ディレクトリを作成し、ファイルをコピー
mkdir /downloads cd /downloads wget wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
- 下記のコマンドを実行してGUI(?)でリポジトリを変更
dpkg -i mysql-apt-config_0.8.12-1_all.deb
↓ ↓ ↓ ↓ ↓ ↓ ↓
最初の画面【Add repository to unsupported system?】で、 【ubuntu bionic】を選択 次の画面【Which MySQL product do you wish to configure?】で、 【MySQL Server & Cluster (Currently selected: mysql-8.0)】を選択 【which server version do you wish to receive?】画面で、 【mysql-5.7】を選択
- MySQL パッケージリポジトリを更新します
apt-get update
以下のようなエラーが出た場合には、
... NO_PUBKEY 467B942D3A79BD29
下記コマンドを実行後、再度apt-get updateを行ってみましょう!
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29
- 下記のコマンドを実行します。
apt-cache policy mysql-server
下記のような表示が出ます。
一番下の方にバージョン5.7.xが表示されているのをご確認ください。mysql-server: インストールされているバージョン: (なし) 候補: 8.0.29-0ubuntu0.22.04.2 バージョンテーブル: 8.0.29-0ubuntu0.22.04.2 500 500 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages 500 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages 8.0.28-0ubuntu4 500 500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages 5.7.38-1ubuntu18.04 500 500 http://repo.mysql.com/apt/ubuntu bionic/mysql-5.7 amd64 Packages
- インストールコマンドを実行します。
- まずはクライアントパッケージのテストコマンドを実行します。
(コマンド右側のバージョン番号は上の項で表示された番号、上の項で 5.7.38-1ubuntu18.04 と表示されていましたのでそれを入力します。)
apt-get install -s mysql-client=5.7.38-1ubuntu18.04
- エラーが検出されなかったらインストールします。
apt-get install mysql-client=5.7.38-1ubuntu18.04
※どのタイミングだったか忘れましたが、ROOTのパスワードを聞かれるので入力(設定)してください。
このパスワードは後で使用しますのでメモをしておいてください。
- 続けて必要なパッケージをテスト&インストールします。
・テストコマンド apt-get install -s mysql-community-server=5.7.38-1ubuntu18.04 apt-get install -s mysql-server=5.7.38-1ubuntu18.04 ・インストールコマンド apt-get install mysql-community-server=5.7.38-1ubuntu18.04 apt-get install mysql-server=5.7.38-1ubuntu18.04
- インストールされたMySQLのバージョンを確認
mysql -V
以下のように表示されました。
mysql Ver 14.14 Distrib 5.7.38, for Linux (x86_64) using EditLine wrapper
- MySQL サービスのコマンドラインにアクセスします。
mysql -u root -p
(メモしておいた)「ROOTパスワード」を聞かれますので入力してください。
- 文字コードを変更する
mysql> show variables like '%char%';
※デフォルトでは、下記のようになっているので変更します。 +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
編集するファイル名は、
/etc/mysql/mysql.conf.d/mysqld.cnf
で、このファイルの末尾([mysqld]の末尾)に、
character-set-server=utf8
という1行を追加するだけです。
vi /etc/mysql/mysql.conf.d/mysqld.cnf
で、ファイルを開いて、ファイルの末尾に追加してMySQLを再起動します。
再起動コマンドは下記のようになります。systemctl restart mysql
すると下記のようになります。+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
すべてUTF8になりました。(utf8mb3と指定した方が良いのかもしれませんが...)
- まずはクライアントパッケージのテストコマンドを実行します。
(コマンド右側のバージョン番号は上の項で表示された番号、上の項で 5.7.38-1ubuntu18.04 と表示されていましたのでそれを入力します。)
※以上でインストールについては完了です。
続いて、アップグレードの防止作業です。
- まずは、インストールされているMySQLのバージョンを確認します。
dpkg -l | grep mysql
※以下のように表示されました。 ii mysql-apt-config 0.8.12-1 all Auto configuration for MySQL APT Repo. ii mysql-client 5.7.38-1ubuntu18.04 amd64 MySQL Client meta package depending on latest version ii mysql-common 5.8+1.0.8 all MySQL database common files, e.g. /etc/mysql/my.cnf ii mysql-community-client 5.7.38-1ubuntu18.04 amd64 MySQL Client ii mysql-community-server 5.7.38-1ubuntu18.04 amd64 MySQL Server ii mysql-server 5.7.38-1ubuntu18.04 amd64 MySQL Server meta package depending on latest version
- MySQL のアップグレードを防ぐために、必要な構成ファイルを作成します。
ファイル作成(vi)コマンドvi /etc/apt/preferences.d/mysql
ファイルの内容は以下の通りです。
Package: mysql-server Pin: version 5.7.38-1ubuntu18.04 Pin-Priority: 1001 Package: mysql-client Pin: version 5.7.38-1ubuntu18.04 Pin-Priority: 1001 Package: mysql-community-server Pin: version 5.7.38-1ubuntu18.04 Pin-Priority: 1001 Package: mysql-community-client Pin: version 5.7.38-1ubuntu18.04 Pin-Priority: 1001 Package: mysql-apt-config Pin: version 0.8.12-1 Pin-Priority: 1001
- Ubuntu パッケージリポジトリを更新します。
apt-get update
- MySQL パッケージのインストールに関する Ubuntu ポリシーを確認します。
apt-cache policy mysql-server
以下のように表示されました。
mysql-server: インストールされているバージョン: 5.7.38-1ubuntu18.04 候補: 5.7.38-1ubuntu18.04 バージョンテーブル: 8.0.29-0ubuntu0.22.04.2 500 500 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages 500 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages 8.0.28-0ubuntu4 500 500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages *** 5.7.38-1ubuntu18.04 1001 500 http://repo.mysql.com/apt/ubuntu bionic/mysql-5.7 amd64 Packages 100 /var/lib/dpkg/status
- テストとして最新バージョンをインストールしてみてください。
apt-get install mysql-server
以下のように表示されました。
パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 mysql-server はすでに最新バージョン (5.7.38-1ubuntu18.04) です。 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
以上でMySQL5.7.xのインストール作業が完了です。
※最後にデータベースを作成しておきます。
- mysqlにログイン
mysql -u root -p
「ROOTパスワード」を聞かれるので入力してください。
- データベース作成(データベース名をここではeccubedbとしています)
mysql> CREATE DATABASE eccubedb;
- 終了
mysql> exit
- mysqlにログイン
以上でMySQLのインストール作業はすべて完了です。
5.PHP(7.4.x)のインストール
- 下記のコマンドを使用して、必要ないくつかの依存関係をインストールします。
apt install software-properties-common ca-certificates lsb-release apt-transport-https
- Ondrej PPAをシステムに追加します。これには、Ubuntuシステム用のすべてのバージョンのPHPパッケージが含まれています。
LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
- 次に、Aptパッケージマネージャーのキャッシュを更新します。
apt update
- SURYリポジトリには、PHP 8.1、8.0、7.4、7.3、7.2が含まれています。
必要なPHPバージョンのいずれか(ここではPHP7.4)をシステムにインストールします。・PHP8.1をインストールします。 apt install php8.1 ●PHP7.4をインストールします。 apt install php7.4 ・PHP 5.6(EOL)をインストールします。 apt install php5.6
※1つのUbuntuシステムに複数のPHPバージョンをインストールすることもできますが、 ここではPHP7.4を1つだけインストールしてください。
- アクティブなPHPのバージョンを確認する。
php -v
以下のように表示されました。
PHP 7.4.30 (cli) (built: Jun 27 2022 08:21:19) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.30, Copyright (c), by Zend Technologies
- PHPでインストールされているモジュールを一覧表示するコマンドは以下のようになります。
php -m
- 拡張モジュール追加方法
- 追加可能な拡張モジュールの確認コマンド
apt-cache search php
以下、php7.4に関する出力されたモジュール名
php7.4 - server-side, HTML-embedded scripting language (metapackage) php7.4-amqp - AMQP extension for PHP php7.4-apcu - APC User Cache for PHP php7.4-apcu-bc - APCu Backwards Compatibility Module php7.4-ast - AST extension for PHP 7 php7.4-bcmath - Bcmath module for PHP php7.4-bz2 - bzip2 module for PHP php7.4-cgi - server-side, HTML-embedded scripting language (CGI binary) php7.4-cli - command-line interpreter for the PHP scripting language php7.4-common - documentation, examples and common module for PHP php7.4-curl - CURL module for PHP php7.4-dba - DBA module for PHP php7.4-decimal - Arbitrary precision floating-point decimal for PHP php7.4-dev - Files for PHP7.4 module development php7.4-ds - PHP extension providing efficient data structures for PHP 7 php7.4-enchant - Enchant module for PHP php7.4-facedetect - Detect faces with PHP php7.4-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary) php7.4-gd - GD module for PHP php7.4-gearman - PHP wrapper to libgearman php7.4-geoip - GeoIP module for PHP php7.4-gmagick - Provides a wrapper to the GraphicsMagick library php7.4-gmp - GMP module for PHP php7.4-gnupg - PHP wrapper around the gpgme library php7.4-grpc - High performance, open source, general RPC framework for PHP php7.4-http - PECL HTTP module for PHP Extended HTTP Support php7.4-igbinary - igbinary PHP serializer php7.4-imagick - Provides a wrapper to the ImageMagick library php7.4-imap - IMAP module for PHP php7.4-inotify - Inotify bindings for PHP php7.4-interbase - Interbase module for PHP php7.4-intl - Internationalisation module for PHP php7.4-json - JSON module for PHP php7.4-ldap - LDAP module for PHP php7.4-lua - PHP Embedded lua interpreter php7.4-mailparse - Email message manipulation for PHP php7.4-maxminddb - Reader for the MaxMind DB file format for PHP php7.4-mbstring - MBSTRING module for PHP php7.4-mcrypt - PHP bindings for the libmcrypt library php7.4-memcache - memcache extension module for PHP php7.4-memcached - memcached extension module for PHP, uses libmemcached php7.4-mongodb - MongoDB driver for PHP php7.4-msgpack - PHP extension for interfacing with MessagePack php7.4-mysql - MySQL module for PHP php7.4-oauth - OAuth 1.0 consumer and provider extension php7.4-odbc - ODBC module for PHP php7.4-opcache - Zend OpCache module for PHP php7.4-pcov - Code coverage driver php7.4-pgsql - PostgreSQL module for PHP php7.4-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary) php7.4-pinba - Pinba module for PHP php7.4-propro - propro module for PHP php7.4-protobuf - Protocol buffers bindings for PHP php7.4-ps - ps module for PHP php7.4-pspell - pspell module for PHP php7.4-psr - PSR interfaces for PHP php7.4-radius - radius client library for PHP php7.4-raphf - raphf module for PHP php7.4-readline - readline module for PHP php7.4-redis - PHP extension for interfacing with Redis php7.4-rrd - PHP bindings to rrd tool system php7.4-smbclient - PHP wrapper for libsmbclient php7.4-snmp - SNMP module for PHP php7.4-soap - SOAP module for PHP php7.4-solr - PHP extension for communicating with Apache Solr server php7.4-sqlite3 - SQLite3 module for PHP php7.4-ssh2 - Bindings for the libssh2 library php7.4-stomp - Streaming Text Oriented Messaging Protocol (STOMP) client module for PHP php7.4-swoole - Swoole Coroutine Fiber Async Programming Framework for PHP php7.4-sybase - Sybase module for PHP php7.4-tideways - Tideways PHP Profiler Extension php7.4-tidy - tidy module for PHP php7.4-uopz - UOPZ extension for PHP 7 php7.4-uploadprogress - file upload progress tracking extension for PHP php7.4-uuid - PHP UUID extension php7.4-vips - PHP extension for interfacing with libvips php7.4-xdebug - Xdebug Module for PHP php7.4-xhprof - Hierarchical Profiler for PHP 5.x php7.4-xml - DOM, SimpleXML, XML, and XSL module for PHP php7.4-xmlrpc - XMLRPC-EPI module for PHP php7.4-xsl - XSL module for PHP (dummy) php7.4-yac - YAC (Yet Another Cache) for PHP php7.4-yaml - YAML-1.1 parser and emitter for PHP php7.4-zip - Zip module for PHP php7.4-zmq - ZeroMQ messaging bindings for PHP php7.4-zstd - Zstandard extension for PHP
- モジュールすべてをインストールするコマンドは以下のようになります。
apt install php7.4-mysql php7.4-common php7.4-mbstring php7.4-json php7.4-xml php7.4-zip php7.4-curl php7.4-intl php7.4-apcu php7.4-opcache php7.4-sqlite3
上記コマンドでインストールはされるようですが、確認コマンドが実行できなかったので更に、
apt install -y sqlite3
を実行しました。
確認コマンド、
sqlite3 --version
で、バージョン情報が表示されました。
- 追加可能な拡張モジュールの確認コマンド
- php.iniの編集(これをしないとエラーになって表示されないようです)
cd /etc/php/7.4/apache2 cp php.ini php.ini.org vi php.ini
--- 編集キーワードとその内容 --- error_log = /var/log/php.log mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.detect_order = auto expose_php = Off date.timezone = Asia/Tokyo
php.iniの編集が完了したらApacheを再起動します。
service apache2 restart
6.EC-CUBE4インストール
- 作業用フォルダを作成し、移動します。
mkdir ~/ec cd ~/ec
- 以下のコマンドを実行して、composer.pharを作成します。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');"
- unzipコマンドをインストールします。
apt update apt install unzip
- /var/wwwフォルダに移動してください
cd /var/www
- htmlフォルダがすでにあると思いますので念のためリネームしてバックアップをしてください。
mv html html.org
- composer.pharの入っているフォルダに移動し、インストールコマンドを実行します。
cd ~/ec php composer.phar create-project ec-cube/ec-cube /var/www/html "4.1.x-dev" --keep-vcs
- (インストールが正常に行われたら)下記コマンドを実行してTRUSTED_HOSTSとデータベースの設定をします。
cd /var/www/html php bin/console eccube:install
①最初のTRUSTED_HOSTSには「ドメイン名」を入力します。 入力しないと「信頼できないホスト」ということになって、ブラウザから閲覧できません。 ②次のデータベースには、 mysql://root:password@127.0.0.1/eccubedb と入力します(passwordはメモしておいたMySQLのROOTパスワード)。 eccubedbは作成したデータベース名です。 ③その他の設定はそのままでOKなのでEnterキーを押してください。 ④一番最後は yes と入力してEnterキーを押してください。
以上ですべて完了です。ブラウザでアクセスしてみてください。
URLは、http://ドメイン名 です。(ちなみにIPアドレスではアクセスできません)
ブラウザのアドレスバーに入力するとEC-CUBEのデフォルト画面が表示されます。
また管理画面に入るには、http://ドメイン名/admin です。
ログインするには、
ID:admin
パスワード:password
と入力してログインしてください。