SakuraインターネットのサーバーにSSHで接続して、EC-Cube Product databaseを拡張する
0. 背景
EC-CUBE商品のデータベースを拡張したり、新たにデータベースを作る必要が生じた。このためには、さくらインターネットのサーバーにSSHでアクセスして、コマンドを打つ必要がある。
0.1 改訂履歴
5/27 一部、表記に誤りがあったので修正 %> 正しくは %
使っているShellとShellの設定で変わる。
1. 準備
1.1 Entity fileを作成する
参考になるサイトをみてEntity fileを作成する。
Product Entityを拡張するのは以下の様なEntityファイルを作り、マイグレーションすれば、管理ページの商品登録のフォームも拡張される。
参考 https://doc4.ec-cube.net/customize_entity
<?php
/*
*
*This file is for extend the columns on dtb_product DB .
*
*/
namespace Customize\Entity;
use Doctrine\ORM\Mapping as ORM;
use Eccube\Annotation as Eccube;
use Eccube\Annotation\EntityExtension;
/**
* @Eccube\EntityExtension("Eccube\Entity\Product")
*/
trait ProductTrait
{
/**
* @var string
* @ORM\Column(name="color", type="string", nullable=true)
* @Eccube\FormAppend(
* auto_render=true,
* options={
* "required": false,
* "label":"メインカラー"
* }
* )
*/
public $color;
}
例は、商品の色を追加する為のEntity
ファイル名はProductTrait.php
1.2 作ったEntityファイルをサーバーへアップロードする
Entity fileをFTPクライアント、またはファイルマネージャをつかって、
/app/Customize/Entityアップロードする
Entityのディレクトリが無いときは作成する。
1.3 EC-CUBEをDebugモードにする
さくらのコントロールパネルにログイン
ホームにあるファイルマネージャをクリックして開く
EC-cubuのルートディレクトリにある.envを右クリック【編集】で開く
7行目付近にある、
APP_ENV=dev <- prod であれば、devに
APP_DEBUG=1 <-0 であれば1
に変更する
注:Debugモードにしないと、後のコマンドによる操作で書き換え等が出来ずに何も表示されないなどが起きる。
2.SSHでログインする
2.1 ターミナルソフトウェアを開く
Macの場合、ターミナルを開く
WindowならTeraterm などのターミナルソフトを開く
以降はMacでの説明です。
2.2 SSHでサーバーへ接続
ターミナル上で
% ssh xxx-at-xxx.sakura.ne.jp
-at- は@に読み替える
bold部分が入力文(xxxはコントロールパネルホームのFTP情報で表示されるユーザー名と接続サーバー名)
パスワードを入力
(パスワードは何もしていなければ初期ドメインのパスワード)
Last login ---------------------------
FreeBSD ----------------------------
Welcome to FreeBSD!
が表示されればlogin成功
3.ターミナルで操作
3.1 ターミナルでEC-CUBEのルートへ移動
% pwd
で、今いるワーキングディレクトリがひょうじされるので確認
おそらくlogin のhome ディレクトリが表示される
% ls
で、ディレクトリリストを表示、確認
www が含まれていれば、
% cd www
で、移動
% ls
で、更に確認して、インストールの際に名前を変えたEC-CUBEにディレクトリ(この例では shop としている)が含まれていれば、
% cd shop
などでEC-CUBEのルートディレクトリに移動する *1
% pwd
/home/xxx/www/shop
この例では、上記の様に返ってくれば、EC-CUBEのルートディレクトリに
入っています。
3.2 データベースを拡張
% bin/console eccube:generate:proxies
と入力(太文字を入力)、proxy fileを作る
gen -> /home/xxx/www/shop/app/proxy/entity/src/Eccube/Entity/Product.php
などと返ってくれば成功 *2
続けて、
% bin/console cache:clear --no-warmup
と入力し、
[OK] Cache for the "dev" environment (debug=true) was successfully cleared.
と、返ってきたら、
次、
% bin/console doctrine:schema:update --dump-sql
と入力して、いろいろ返ってくると思いますが、途中にWarning等がなければ
実際にデータベースに反映させる
% bin/console doctrine:schema:update --dump-sql --force
と入力して、
OK] Database schema updated successfully!
がターミナルに表示されればデータベースの拡張は完了
4.確認
コントロールパネルからデーターベース ボタンをクリック
【phpmyAdminログイン】 をクリック
表示されたlogin パネルのUser名とパスワードを入力してphpmyAdmin に入り、
EC−Cubeにインストール時に設定で作ったDB名をクリック、
拡張したDBにColumnが有ればOK
4.1 途中にErrorやWarning がでる。もしくはgen -> 等が表示されない時
途中でError やWarningがでたり、内も表示されない時は
1)デバッグモードになっていない
2)Entityの書き方
EC-CUBEの4.1から4.2へのバージョンアップ時に利用しているSymfonyのバージョンが変わっているので、注意
5.補足
*1 ディレクトリの移動
ディレクトリを移動する際、自分のホームディレクリにいることが確認されていれば、
% cd www/Shop
で移動出来る。
また、TABキーで補完が効くので、
% cd w[Tabキー]で、
% cd www/
のように補完されるので、そのままEnterキーを入力するか、
更に
% cd www/S[Tabキー]
で補完して、Enterキーで移動できる。
最初の数文字が同じだと補完されない。
例えば、a1ac , a1bc のようなディレクトリ名があると、
% cd a[Tabキー] では補完がされない、
% cd a1a[Tabキー]で、
% cd a1ac
のように補完される(補完の動きについては、試してみてください)
*2 Product.phpについて
EC-CUBEの/(EC-CUBE root)/app/proxy/entity/src/Eccube/Entityに
Product.phpを作った事を意味しているので、このディレクトリに移動して、
less 等のコマンドを使ってファイルの内容を確認できる。
(移動しなくても、パスを含めて記述すれば見える)
移動する場合
% cd /home/xxx/www/shop/app/proxy/entity/src/Eccube/Entity/
% less Product.php
で、内容が表示される。
移動しない場合、
% less /home/xxx/www/shop/app/proxy/entity/src/Eccube/Entity/Product.php
と打てば表示される。長くて改行されているが、1行で入力。
lessはUNIXのファイル内容を表示するコマンド