🍰

Vagrant + Ubuntu 14.04にLAMP環境を積んでCakePHP 2を動かすまでの顛末

2020/09/25に公開

サラの Vagrant + Ubuntu 環境から CakePHP 2 を動かすまでの顛末を、記憶が新しいうちにまとめておきます。

Vagrant + Ubuntu 14.04 を準備

既に Vagrant が動く前提で話します。(以下、全て先頭の$を省略します)

vagrant box add ubuntu14 http://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box
mkdir vagrant/ubuntu14
cd vagrant/ubuntu14
vagrant init

VagrantFile を編集

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # 略
  config.vm.box = "ubuntu14"

  # 略
  config.vm.network :private_network, ip: "192.168.33.10"

  # 略
  config.vm.synced_folder "/Applications/MAMP/htdocs/my-app-folder", "/var/www/html/my-app-folder"

  # 以下略
end
  • config.vm.synced_folder によってシンボリックリンクが作成されます。私は今まで MAMP 環境だったので、htdocsから動かさずにそのまま適用させています。
  • 細かい部分は私も始めたばかりでよく判っていないので、最低限のものです。

VM を起動

cd vagrant/ubuntu14
vagrant up
vagrant ssh

スナップショットを作成

この段階でスナップショットを撮っておくといいかもしれません。

PHP 5.5 系をインストール

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
sudo apt-get install php5 php5-cli
$ php -v
PHP 5.5.11-3+deb.sury.org~trusty+1 (cli) (built: Apr 23 2014 12:15:16)

Apache2 を確認

sudo service apache2 start
ps aux | grep apache2
  • 数行いろいろ表示されたら OK(らしい)
  • ここでローカルのブラウザから以下を確認してみる。
  • http://192.168.33.10/
  • 表示される(はず)
cd /var/www/html
  • 'It works!'の中身はここ。

CakePHP2 を動かすために

CakePHP のパーミッションを設定

http://192.168.33.10/my-app-folder/で繋がるようになるものの、いろいろ怒られます。なのでパーミッションを変更します。Ubuntu 上ではchmodがなぜか効かなかったので、今回 Mac 側で設定しました。設定の過程は省略。

  • lib/Cake/Cache/
  • app/tmp/
  • app/webroot/

この辺りをすべて777にしました。今回はとにかく動くことだけを目指したので、現段階でセキュリティ面は配慮していません。

PHPUnit 3.7 をインストール

「PHPUnit が無い」と怒られるのでインストールしたいのですが、CakePHP 2 は PHPUnit 4 系に対応していないので、あえて 3.7 をインストールする必要があります。

MySQL Server をインストール

おっと、まだ MySQL も入っていません。

sudo apt-get install mysql-server

動作確認。

mysql -u username -p’pass’ -D mysql -e "SELECT version()"

phpMyAdmin をインストール

phpMyAdmin も入れておきます。

sudo apt-get install phpmyadmin

ここで-yオプションを付けると怒られるので付けないように。途中いろいろ聞かれます。OKやらYesを選んだ記憶があるのですが、ちょっと忘れました。

このあとhttp://192.168.33.10/phpMyAdmin/に繋いでも 404 エラーとなり、しばらくハマってしまったんですが、単にインストール先が違っていただけでした。

sudo ln -s /usr/share/phpmyadmin /var/www/html

シンボリックリンクを作成して解決。phpMyAdmin では、MAMP 環境でのユーザー設定などを色々再設定しています。データベースは、今はお遊びなので永続化は考えておらず、簡単にインポートしただけです。

Apache の mod_rewrite を有効にする

最後に一番ハマってしまった箇所を記します。CakePHP のルーティングが全く働かず 404 を連発したのですが、原因は mod_rewrite が無効になっていたせいでした。

sudo a2enmod rewrite
sudo vi /etc/apache2/apache2.conf
<Directory /var/www/>
        Options Indexes FollowSymLinks
#       AllowOverride None
#       以下に変更
        AllowOverride All
        Require all granted
</Directory>
sudo service apache2 restart

これで(恐らく)完了

http://192.168.33.10/my-app-folder/につなぐと MAMP 環境での動作時と同じように動きました! 記憶が残っているうちに本記事を書き殴っているため、記憶に抜けがあったり手順が不足していたりするかもしれませんが、ご容赦下さい。

また、人によって環境が微妙に異なるかもしれません。手順の参考ということでお願いします。それでは。

Discussion