Omeka Classic2.6.1をVirtualBox+vagrant+ubuntu16.04にインストールする方法

# 1. はじめに
仮想マシン上でOmeka Classicを動かして色々設定を試してみたかったので，VirtualBox+vagrant+ubuntu16.04にOmeka Classic2.6.1をインストールしてみました。

仮想マシン上にインストールすることによって，手元のMacから気軽にゼロから試せるようにできることに主眼を置いています。あくまでもプロトタイプ環境の構築ができればいいやというのが前提です。
ですので，公開するために必要な，ファイアーウオールの設定やドメインの設定などは省いてあります。

2018-12-27にインストールを行った時のメモです。自分用のメモとして作ったのでいくつか足りない部分があるかとは思いますが公開します。

## 1.1 環境など

- ホストOS: macOS High Sierra 10.13.6
- ゲストOS: ubuntu 16.04
- VirtualBox
- vagrant
- PHP 7.0.32
- MySQL 5.7.24
- Apache/2.4.18(Ubuntu)
- ImageMagick 6.8.9-9 Q16 x86_64
- Omeka Classic 2.6.1

## 1.2 例で使う値

* httpポートフォワーディング80を**8084**に
* sshポートフォワーディング22を**2224**に
* vagrant用作業フォルダ　**vagrantwork/vagrantwork20181227-2**
* MySQLのrootのパスワード: **omeka2018**
* MYSQL データベース名:**omeka_db**
* MYSQL ユーザ名:**omeka_user**
* MYSQL パスワード:**upw_omeka2018**

# 2 Mac（ホストOS） での作業

## 2.1 VirtualBoxのインストール

1. https://www.virtualbox.org/ にアクセス
2. [Downloads](https://www.virtualbox.org/wiki/Downloads)をクリック
3. OS X hosts　をダウンロード
4. ・・・　省略

## 2.2 vagrant のインストール
1. https://www.vagrantup.com/ にアクセス
2. [Download](https://www.vagrantup.com/downloads.html)をクリック
3. macOS版をダウンロード
4. Vagrant.dmg をクリック
5. vgarnt.pkg をダブルクリック
6. 「続ける」　パスワード入力などとしてインストール　「閉じる」

## 2.3 vagrant 用の作業ファイル置き場のフォルダを作成する

「ターミナル」を立ち上げて以下のコマンドを実行してフォルダを作る

```sh
$ mkdir vagrantwork
$ mkdir vagrantwork/vagrantwork20181227-2
```
($は入力しません。プロンプトの意味です。以降同様）

(今後いろんな仮想マシンを作ることを想定して，親フォルダも作っています)

## 2.4 OSのたね（ubuntu 16.04）をダウンロードするためのコマンドをコピー

1. https://app.vagrantup.com/boxes/search にアクセス
2. bento で検索し、 [bento/ubuntu-16.04](https://app.vagrantup.com/bento/boxes/ubuntu-16.04) 
をたどる
3. 「new」タブのコマンドをコピーする ![Vagrant box bento ubuntu 16 04   Vagrant Cloud -2-.png](https://qiita-image-store.s3.amazonaws.com/0/333119/17040532-27a7-f2f9-44d5-e02077421342.png)

## 2.5 先ほど作った作業フォルダに移動して，コピーしたコマンドを実行する 

```sh
$ cd vagrantwork/vagrantwork20181227-2
$ vagrant init bento/ubuntu-16.04
``` 

## 2.6 仮想マシンの設定ファイルを修正する

基本は標準のままにしますが，以下の2点のみ修正します。

* ポートフォワーディングの設定(80を8084に; 22を2224に）
* メモリの設定（2048 にします）

仮想マシンの設定ファイル`Vagrantfile`に対して，a) 〜　e) の修正を行います。

```sh
$ vi Vagrantfile
```
（この文書の説明ではviエディタを使っています[^editor]。以下，同様。）

```config:Vagrantfile
  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  # NOTE: This will enable public access to the opened port
  config.vm.network "forwarded_port", guest: 80, host: 8084  
  #　a)↑の冒頭の#を消す、適宜host: の値を修正ここでは8080から8084 に
  config.vm.network "forwarded_port", guest: 22, host: 2224   
  #　b)↑を追加

　　#3メモリの設定（メモリを倍にする（2048MBに））

  config.vm.provider "virtualbox" do |vb|  #　c)　これの冒頭の#を消す
  #   # Display the VirtualBox GUI when booting the machine
  #   vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
    vb.memory = "2048"   #　d)　冒頭の　# を消し，　1024 を2048に変える 
  end     #　e)　これの冒頭の#を消す
```

## 2.7 VM（仮想マシン）の起動

```sh
$ vagrant up
```

これですっぴんOS（ubuntu-16.04）の仮想マシンが起動しました。
動いているかどうかは、virtualboxのアプリを立ち上げると実行中となっているのでわかります。

## 2.8 起動したVMにsshでログインする

```shell
$ vagrant ssh
```

# 3. Ubutsu16.04（ゲストOS）上の作業

現在のOmeka Classic のsystem requirements[^sq] は以下の通り

1. Linux operating system
2. Apache HTTP server (with mod_rewrite enabled)
3. MySQL version 5.0 or greater
4. PHP scripting language version 5.3.2 or greater (with mysqli and exif extensions installed)
5. ImageMagick image manipulation software (for resizing images)

１はクリアしているが，最新にアップデートしておくとよい。2〜5は一つつづインストールや設定を行っていく。

## 3.1 Linux operating system　のパッケージを最新に

まずはOSのパッケージリストの更新，パッケージの更新をします。

### 3.1.1 grub-pc を apt upgrade 時に除外する設定をします。

途中，GRUBで止まっていくつか入力が要求されてしまうので，GRUBは更新しないように指定します。

```sh
$ echo grub-pc hold | sudo dpkg --set-selections
```

ref. [Vagnrat Ubuntu16.04 apt upgrade のGRUBで更新が止まる時の対策](https://qiita.com/ucan-lab/items/1608b4140ac0b1797144)

### 3.1.2 パッケージリストの更新とインストールされているパッケージの更新

```shell
$ sudo apt-get -y update
$ sudo apt-get -y upgrade
```
(少し時間かかります)

-y は，常に，Yesで答えるという意味です[^1]。


ref. [[Ubuntu] apt-get まとめ](https://qiita.com/white_aspara25/items/723ae4ebf0bfefe2115c)

## 3.2 Apache HTTP server (with mod_rewrite enabled) をインストールと設定

### 3.2.1 まず，Apacheをインストールする。

```sh
$ sudo apt-get -y update
$ sudo apt-get -y install apache2
```

マニュアルもインストールしておきます。

```sh
$ sudo apt-get install apache2-doc
```

インストールできたので，ブラウザで　http://localhost:8084/ にアクセスしてみる

無事，表示されたら！できたってこと！ (:8084なのは，仮想マシンの設定でポートフォワーディングするようにしたから)

ref. [Ubuntuでapacheを使ったwebサイトのローカル環境を作ってみる（基礎）](http://d.hatena.ne.jp/bicycle1885/20110508/1304871358)

### 3.2.2 mod_rewirte をenabled にする

まずはmod_rewriteが利用可能となっているかを確認する。

```sh
$ cat /etc/apache2/mods-available/rewrite.load
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
```

```/etc/apache2/sites-enabled/000-default.conf ```を編集します。
（このファイルを編集するには管理者権限いるのでsudo でエディタ（この例ではvi）を立ち上げて編集します）

```sh
$sudo vi /etc/apache2/sites-enabled/000-default.conf
```

```<Directory /var/www/html/>から</Directory>```の行を```</VirtualHost>```の前に挿入。

```conf:/etc/apache2/sites-enabled/000-default.conf
    <Directory /var/www/html/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>
```

ref. [How to Install Omeka Classic 2.4 CMS on an Ubuntu 16.04 LAMP VPS](https://www.vultr.com/docs/how-to-install-omeka-classic-2-4-cms-on-an-ubuntu-16-04-lamp-vps)

a2enmodというコマンドを実行します。

```sh
$ sudo a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
  service apache2 restart
```

忘れずにapacheをrestartします

```sh
$ sudo service apache2 restart
```
これで有効になったはず（確かめかたわからん）。

（.htaccess については，あとでOmeka ClassicのダウンロードデータからコピーしたものでOKなのでここでは作業ありません）

ref. [Ubuntu版Apache2でmod_rewriteを有効にする](https://qiita.com/u-akihiro/items/c7a5bb38c34858d00c2a)

注：httpd.conf = Ubuntu/Debianだったらapache2.conf[^2]

## 3.3 MySQL version 5.0 or greater のインストール

現在インストールされているものを確認します。

```sh
$ sudo ufw app list
 Apache
  Apache Full
  Apache Secure
  OpenSSH
```

ref. [Ubuntu 16.04におけるmysqlのインストールと設定、エラー対応のまとめ](https://qiita.com/donaldchi/items/afeabaffc8be39577ef0)

MySQLをインストールします。ここで，mySQLのパスワードも設定します。コマンド発行後に，`Y`，`rootのパスワード`，`rootのパスワード（確認）`を入力することになります。
ここでは，rootのパスワードは `omeka2018` としています。

```sh
$ sudo apt-get install mysql-server
After this operation, 162 MB of additional disk space will be used.
Do you want to continue? [Y/n]Y

New password for the MySQL "root" user: omeka2018
Repeat password for the MySQL "root" user: omeka2018
```

sudoなしでmysqlにアクセスできるようにするために
まずは　一旦 sudo で root にログインして，root の認証方法を変更する。

```sh
$ sudo mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'omeka2018';
mysql> FLUSH PRIVILEGES;
mysql> exit
```

念のため、別のターミナルを開いて sudo 無しでログインできるか確認する。先ほど登録した`rootのパスワード`を入れる。

```sh
$ mysql -u root -p
Enter password:omeka2018
mysql> exit
```

ref.  [MySQL 5.7 で sudo 無し root ログイン [Ubuntu] ](https://note.mu/junf/n/na40fbca9e6ea)

MySQLにあらかじめインストールされているセキュリティスクリプトを実行し，
セキュリティ向上を図ります。このコマンドでrootパスワードを忘れたときもパスワードの再設定できます。`rootのパスワード`と`Y`を入れることになります。ただし，`Would you like to setup VALIDATE PASSWORD plugin?`に`Y`と答えるとrootのパスワードを複雑なものに変える必要があるなどあったので，今回はNとしています。また，`Change the password for root ? `にYと答えるとrootのパスワードを変えることになるのでこちらもNとしています。


```sh
$ sudo mysql_secure_installation

Enter password for user root:  omeka2018
Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:  N

Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : N  (rootパスワードを変えたいなら Y）

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y 

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) :y 

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) :y

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) :y
```

ref1. [MySQL 5.7 で sudo 無し root ログイン [Ubuntu]](https://note.mu/junf/n/na40fbca9e6ea)
ref2. [MySQL 5.7 をインストールしたら最初に行うセットアップ](https://weblabo.oscasierra.net/mysql-57-init-setup/)
 
## 3.4  PHP scripting language version 5.3.2 or greater (with mysqli and exif extensions installed)　のインストール

```sh
$ sudo apt-get -y install php php-gd php-mbstring php-common php-mysql php-imagick php-xml libapache2-mod-php php-curl php-tidy php-zip
```

ref. [How to Install Omeka Classic 2.4 CMS on an Ubuntu 16.04 LAMP VPS](https://www.vultr.com/docs/how-to-install-omeka-classic-2-4-cms-on-an-ubuntu-16-04-lamp-vps)

apacheが最初に探すファイルを”index.php”にするように```/etc/apache2/mods-enabled/dir.conf```を編集します（前の方に移動します）。
（このファイルを編集するには管理者権限いるのでsudo でエディタ（この例ではvi）を立ち上げて編集します）

```sh
$ sudo vi /etc/apache2/mods-enabled/dir.conf
```

```config:/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
```

apacheを再起動します。

```sh
$ sudo service apache2 restart
```

Apacheの状態を確認するには以下のようにします。

```sh
$ sudo service apache2 status
```

以下のような確認用のファイル```/var/www/html/info.php```をエディタで作ります。
（このファイルを編集するには管理者権限いるのでsudo でエディタ（この例ではvi）を立ち上げて編集します）

```sh
$ sudo vi /var/www/html/info.php
```

```php:/var/www/html/info.php
<?php
phpinfo();
?>
```

http://localhost:8084/info.php をブラウザからアクセスしてみます。

PHP Version 7.0.32-0ubuntu0.16.04.1 などエラーっぽくないものが表示されたらOK

接続が確認出来たら先ほど作った確認用のファイルを削除したほうがよいでしょう。

```sh
$ sudo rm /var/www/html/info.php
```

ref. [ubuntu18.04にLAMP環境をインストールする](https://officeyuai.com/ubuntu18-04/ubuntu18-04%E3%81%ABlamp%E7%92%B0%E5%A2%83%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/?fbclid=IwAR3-4pOojKlhQTtsJaFTuASFO-tIDz2TyebLNnRNY4mJYV1cKviF5Xubub4)

## 3.5  ImageMagick image manipulation software (for resizing images)のインストール

```sh
$ sudo apt-get -y install imagemagick
```

ref. [How to Install Omeka Classic 2.4 CMS on an Ubuntu 16.04 LAMP VPS](https://www.vultr.com/docs/how-to-install-omeka-classic-2-4-cms-on-an-ubuntu-16-04-lamp-vps)

## 3.6 MySQLのデータベースを作る

設定例：データベース名:omeka_db, ユーザ名r:omeka_user,パスワード:upw_omeka2018

```shell
$ mysql -u root -p
Enter password: omeka2018  (rootのパスワード）

mysql> CREATE DATABASE omeka_db CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'omeka_user'@'localhost' IDENTIFIED BY 'upw_omeka2018';
GRANT ALL PRIVILEGES ON omeka_db.* TO 'omeka_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
```

bye が表示されてプロンプトが戻ってきたら成功

ref. [How to Install Omeka Classic 2.4 CMS on an Ubuntu 16.04 LAMP VPS](https://www.vultr.com/docs/how-to-install-omeka-classic-2-4-cms-on-an-ubuntu-16-04-lamp-vps)

注： macで入力した時に ' が  ‘ に勝手に変換されてて，うまくいかなかった場合は，以下のようになったりする

エラー例：

```sh
mysql> CREATE DATABASE omeka_db CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER 'omeka_user'@'localhost' IDENTIFIED BY ‘upwomeka2018';
    '> GRANT ALL PRIVILEGES ON omeka_db.* TO 'omeka_user'@'localhost';
    '> FLUSH PRIVILEGES;
    '> EXIT;
    '> 
    '> 
```

## 3.7 omekaインストールファイルのダウンロードと解凍

ファイルダウンロードのためwget，解凍のためzip, unzipコマンドのインストール

```sh
$ sudo apt-get install wget
$ sudo apt-get install zip unzip
```

https://omeka.org/classic/download/ にアクセスし，`Get Omeka Classic v2.6.1`のリンク先URL: https://github.com/omeka/Omeka/releases/download/v2.6.1/omeka-2.6.1.zip をコピーし，wgetコマンドでそのURLを使ってダウンロード。

```sh
$ wget https://github.com/omeka/Omeka/releases/download/v2.6.1/omeka-2.6.1.zip
```

インストールファイルの解凍

```sh
$ unzip omeka-2.6.1.zip
```

omeka-2.6.1 というフォルダ以下に必要なファイル群が展開される

## 3.8 omeka classic の言語設定

言語設定を日本語にするために設定ファイルを修正する

`omeka-2.6.1/application/config/config.ini`をエディタで修正する

```config:omeka-2.6.1/application/config/config.ini
locale.name = “ja”  # "" -> "ja"というように修正する
```

ref. [Installation - Omeka Classic User Manual](https://omeka.org/classic/docs/Installation/Installation/)

## 3.9 omeka classic CMS のデータをインストールする

公開ディレクトリに移動

```sh
$ cd /var/www/html/
```

apatcheインストール時のindex.html を待避

```sh
$ sudo mv index.html ~/index.html.org
```

omeka CMSファイルを移動

```sh
$ sudo mv ~/omeka-2.6.1/* /var/www/html
$ sudo mv ~/omeka-2.6.1/.htaccess /var/www/html
```

注！.htaccess がコピーされないので明示的にコピー必要（参考にしたチュートリアルにない）。

パーミッションを変更

```sh
$ sudo chown -R www-data:www-data * ./
```

apacheの再起動

```sh
$ sudo service apache2 restart
```

ref. [How to Install Omeka Classic 2.4 CMS on an Ubuntu 16.04 LAMP VPS](https://www.vultr.com/docs/how-to-install-omeka-classic-2-4-cms-on-an-ubuntu-16-04-lamp-vps)

## 3.10 Omeka Classic CMS database設定ファイルの修正

設定ファイルをエディタで開き修正します。MySQLの設定で，設定したusername, password, データベース名に修正します。
（このファイルを編集するには管理者権限いるのでsudo でエディタ（この例ではvi）を立ち上げて編集します）

```shell
$sudo vi ./db.ini
```

```config:./db.ini
[databese]
host     = "localhost"  # XXXXXXX --> localhost
username = "omeka_user"  # XXXXXXX --> omeka_user
password = "upw_omeka2018"  # XXXXXXX --> upw_omeka2018
dbname   = "omeka_db" # XXXXXXX --> omeka_db 
prefix   = "omeka_"
charset  = "utf8"
;port     = ""
```

## 3.11 アクセスしてみる

http://localhost:8084/

以下のような画面だったらどこかかできてないので再設定する
（mod_rewirteとは限らない，.htaccess がないということもある）

![スクリーンショット 2018-12-28 16.41.04.png](https://qiita-image-store.s3.amazonaws.com/0/333119/eb8b9668-6ee7-feaa-ac2e-5abd39cbeea3.png)

うまくいったら以下のような画面が出る

![スクリーンショット 2018-12-28 17.16.58.png](https://qiita-image-store.s3.amazonaws.com/0/333119/0b5a2de2-7543-99b0-cdd8-be781d594705.png)

## 3.12 omekaの管理者情報，サイトの情報を登録する

必須項目（入力例）：

- ユーザー名 admin2018
- パスワード adminpw2018
- Email {mail}
- 管理者のEmail　 {mail} 
- サイト名 OMEKA2018インストールテスト

ref. [How to Install Omeka Classic 2.4 CMS on an Ubuntu 16.04 LAMP VPS](https://www.vultr.com/docs/how-to-install-omeka-classic-2-4-cms-on-an-ubuntu-16-04-lamp-vps)

```インストール``` ボタンをクリック

できた！

![スクリーンショット 2018-12-28 17.30.38.png](https://qiita-image-store.s3.amazonaws.com/0/333119/73d6d386-16ee-a0ba-0953-743c78a89071.png)

```Admin Dashbord``` をクリック

![スクリーンショット 2018-12-28 17.32.42.png](https://qiita-image-store.s3.amazonaws.com/0/333119/4da43fd4-0c2e-b5f5-bd62-8b04afc8783d.png)


```ユーザー名``` と ```パスワード``` を入力してログインボタンをクリック

ログインできた！

![スクリーンショット 2018-12-28 17.32.21.png](https://qiita-image-store.s3.amazonaws.com/0/333119/5f31cc5a-f663-7f5a-4938-ad3adac8e446.png)

## 3.13 画像を一つ登録してみる。

画像ファイルが登録できないということがあり得るので，それだけでも試しにやっておく。

1. 左メニューの`アイテム`をクリック
2. 左上の`アイテムを追加`をクリック
3. 上の`ファイル`リンクをクリック
4. `ファイルを選択`をクリック
5. 画像ファイルを選択
6. 右の`アイテムを追加`をクリック
7. 登録した画像のサムネイルが表示されたらOK![スクリーンショット 2018-12-29 3.46.54.png](https://qiita-image-store.s3.amazonaws.com/0/333119/229a0984-8541-9ca6-d707-fdef849e022d.png)



## 3.14 インストール時のシステム情報

![スクリーンショット 2018-12-28 18.09.35.png](https://qiita-image-store.s3.amazonaws.com/0/333119/f85d373b-a4f0-c089-219e-e9db02724631.png)

[^editor]: エディタは好きなのを使えば良いと思いますが，この文書ではviにしてます。nanoってのがあるんですね。ちょこっと修正するだけでいいなら，コマンドも覚えなくていいし，初心者にはいいかもと思いました。

[^sq]: ref. [System Requirements - Omeka Classic User Manual](https://omeka.org/classic/docs/Installation/System_Requirements/)

[^1]: -y 無しの場合は，途中，　After this operation, 34.8 kB of additional disk space will be used.　Do you want to continue? [Y/n] というような問いが出てくるのでYと答える必要が出ます。

[^2]: ref. [Apache httpd.confの場所について](https://teratail.com/questions/1239)   （Ubuntu/Debianだったらapache2.conf）