vagrantで開発環境構築の手順
■前提
Ubuntu14にて実施
すでに、
VirtualBox
Vagrant
がインストール済み
■環境構築
ターミナルに入る
作成エリア(ディレクトリィ例:ubunt12)を作成
mkdir ubunt12 cd ubunt12
イメージファイルをダウンロード
wget https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-i386-vagrant-disk1.box
イメージファイルを作成
vagrant box add ubunt12 ./trusty-server-cloudimg-i386-vagrant-disk1.box
初期化を実施
vagrant init ubunt12
設定を変更
Gestの内容をHostから操作できるように
ポートの設定を変更する
vim Vagrantfile config.vm.network :forwarded_port, guest: 80, host: 8880 config.vm.network :forwarded_port, guest: 3131, host: 13131 config.vm.network :forwarded_port, guest: 4200, host: 14200
vagrantを起動する
vagrant up
エラーになった場合
VirtualBoxを立ち上げ
設定>システム>アクセラレーション
VT-x/AMD-Vを有効化のチェックを外す
再度
vagrant up
sshで入ってみる
vagrant ssh
入れれば、完了
■Cloud9をインストール
Vagrantよりログインする
Vgrantが起動していないときは
cd ubunt12 vagrant up
sshで入ってみる
vagrant ssh
apt-getを最新にする
sudo apt-get update
必要なラブラリィをインストールする
sudo apt-get install -y build-essential g++ curl libssl-dev apache2-utils git libxml2-dev
不要なnodejsを削除する
sudo apt-get remove nodejs
nvmを読み込みインストールする
git clone git://github.com/creationix/nvm.git ~/nvm echo '. ~/nvm/nvm.sh' >> ~/.bashrc && . ~/.bashrc nvm install v0.8.25 nvm use v0.8.25
cloud9を読み込みインストールする
git clone git://github.com/ajaxorg/cloud9.git cd cloud9/ npm install
必要なライブラリィーを追加する
npm install jsDAV socket.io asyncjs vfs-nodefs-adapter v8debug amd-loader async sourcemint-loader-js ace treehugger vfs-architect
起動する
nvm use v0.8.25 cd ../ ./cloud9/bin/cloud9.sh -l 0.0.0.0
ホスト側から動作を確認する
http://localhost:13131
画面が表示されれば、完了
■Xampp(Lammp)をインストール
Vagrantよりログインする
Vgrantが起動していないときは
cd ubunt12 vagrant up
sshで入ってみる
vagrant ssh
ソースをダウンロードする
wget http://sourceforge.net/projects/xampp/files/XAMPP%20Linux/1.8.0/xampp-linux-1.8.0.tar.gz
解凍する
tar xzvf xampp-linux-1.8.0.tar.gz
設置する
sudo mv lampp /opt/lampp
Apacheでのユーザをvagrantに変更を行う
設定ファイル
/opt/lampp/etc/httpd.conf
の、(173行)
User nobody ->vagrant
Group nogroup ->vagrant
に変更する
vim /opt/lampp/etc/httpd.conf User vagrant Group vagrant #User nobody #Group nogroup
権限の設定を行う
sudo chmod -R 777 /opt/lampp sudo chmod 644 /opt/lampp/etc/my.cnf sudo chmod 755 /opt/lampp/phpmyadmin/config.inc.php
起動する
sudo /opt/lampp/lampp restart
ホスト側から動作を確認する
http://localhost:8880
Xamppの画面が出れば、完了です
■Xamppの初期設定をする
セキュリィテーの設定を行う
ホスト側からトップ画面を起動する
http://localhost:8880
セキュリテーを確認する
未設定になっているはず
下部にあるURLを起動する
sudo /opt/lampp/lampp security
設定のYes/Noに全てYesとして、パスワードを設定する
設定したパスワードは忘れないように(例:lampp)
Xamppを再起動する
sudo /opt/lampp/lampp restart
ホスト側から動作を確認する
http://localhost:8880
ユーザとパスワードを聞かれるので
設定したものを入力する
user:lampp
pass:lampp
トップ画面から
セキュリティを確認します
設定されていることを確認
■Xamppから、phpMySqlAdminを確認
ホスト側からトップ画面を表示
http://localhost:8880
phpMySqlAdminを選択
(./config.inc.php)is not readable
エラーが、出た場合
sudo chmod 755 /opt/lampp/phpmyadmin/config.inc.php
開始画面になったら
セキュリティーで設定したパスワードを入力
ユーザ:root
パスワード:lampp
phpMySqlAdmin画面になれば完了
■shellinaboxをインスツール
Vagrantよりログインする
Vgrantが起動していないときは
cd ubunt12 vagrant up
sshで入ってみる
vagrant ssh
ソースをダウンロードする
wget http://archive.ubuntu.com/ubuntu/pool/universe/s/shellinabox/shellinabox_2.14-1_i386.deb
インストールを行う
sudo dpkg -i shellinabox_2.14-1_i386.deb
ホストから入ってみる
ホスト側から動作を確認する
http://localhost:14200
ログイン画面でユーザとパスワードを入力する
ユーザ:vagrant
パスワード:vagrant
ログインできれば完了です
サービスの状態の確認と起動と停止は
sudo service shellinabox status sudo service shellinabox start sudo service shellinabox stop
となります
■candyをインストール
Vagrantよりログインする
Vgrantが起動していないときは
cd ubunt12 vagrant up
sshで入ってみる
vagrant ssh
ソースをダウンロードする
wget https://github.com/yandod/candycane/archive/v0.9.3.tar.gz tar xzvf v0.9.3.tar.gz mv candycane-0.9.3 candycane mv candycane /opt/lampp/htdocs/candycane
データベースを作成する
phpmysqladmin
にアクセスする
データベースを新規作成する
データベース名
candycane
utf8_general_ci
作成ボタン
candycane
を選択
特権を選択
ユーザを追加
ユーザ名:candycane
ホスト名:localhost
パスワード:candycane
データベース candycane に全ての特権を与える
Xamppの画面が出れば、ユーザ作成完了です
コマンドで行う場合には
/opt/lampp/bin/mysql -u root -p mysql> GRANT ALL PRIVILEGES ON candycane.* TO candycane@localhost IDENTIFIED BY 'candycane'; mysql> FLUSH PRIVILEGES; mysql> create database candycane character set utf8;
となります
インストーラを起動
http://localhost:8880/candycane
■netcomonsをインストール
Vagrantよりログインする
Vgrantが起動していないときは
cd ubunt12 vagrant up
sshで入ってみる
vagrant ssh
ソースをダウンロードする
http://www.netcommons.org/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89/%E3%82%B3%E3%82%A2%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8/
ダウンロード
cd ~/ nvm use v0.8.25 ./cloud9/bin/cloud9.sh -l 0.0.0.0 -w /opt/lampp/htdocs
ホストブラウザより
http://localhost:13131/
cloud9アップロード
ドラッグアンドドロップ
cd /opt/lampp/htdocs/ ls tar xzvf NetCommons-2.4.2.0.tar.gz mv NetCommons-2.4.2.0 NetCommons
データベース作成
データベースを作成する
phpmysqladmin
にアクセスする
データベースを新規作成する
データベース名
netcom
utf8_general_ci
作成ボタン
netcom
を選択
特権を選択
ユーザを追加
ユーザ名:netcom
ホスト名:localhost
パスワード:netcom
データベース netcom に全ての特権を与える
Xamppの画面が出れば、ユーザ作成完了です
コマンドで行う場合には
cd ~/ /opt/lampp/bin/mysql -u root -p mysql> GRANT ALL PRIVILEGES ON netcom.* TO netcom@localhost IDENTIFIED BY 'netcom'; mysql> FLUSH PRIVILEGES; mysql> create database netcom character set utf8;
となります
インストーラを起動
http://localhost:8880/NetCommons/html/
データベースを
netcom
に設定して、インスツール完了です
■Wordpressをインストール
wget http://ja.wordpress.org/wordpress-3.9.2-ja.tar.gz
tar xzvf wordpress-3.9.2-ja.tar.gz
mv wordpress-3.9.2-ja.tar.gz wordpress
mv wordpress /opt/lampp/htdocs/wordpress
データベースを作成する
データベース名
wordpress
utf8_general_ci
作成ボタン
データベースを選択する
ユーザを作成する
wordpress
コマンドで行う場合には
/opt/lampp/bin/mysql -u root -p mysql> /opt/lampp/bin/mysql -u root -p mysql> GRANT ALL PRIVILEGES ON wordpress.* TO wordpress@localhost IDENTIFIED BY 'wordpress'; mysql> FLUSH PRIVILEGES; mysql> create database wordpress character set utf8; mysql> exit
となります
インストーラを起動する
localhost:8880/wordpress/
指示にしたがい入力する
完了
■CakePHPをインストールする
Vagrantよりログインする
Vgrantが起動していないときは
cd ubunt12 vagrant up
sshで入ってみる
vagrant ssh
CakePHPをダウンロードし
展開する
「cakephp」
に、名前を変更し
htdocsの下に移動する
wget http://github.com/cakephp/cakephp/archive/2.5.3.tar.gz tar xzvf 2.5.3.tar.gz mv cakephp-2.5.3 cakephp mv cakephp /opt/lampp/htdocs/cakephp
localhost:8880/cakephp
で起動する
sudo /opt/lampp/lampp restart
ホスト側から
http://localhost:8880/cakephp
・core.phpの変更
cakephp/app/Config/core.php
の
Security.salt
Security.cipherSeed
の設定文字を変更(225行、230行)
vim /opt/lampp/htdocs/cakephp/app/Config/core.php
/**
* A random string used in security hashing methods.
*/
Configure::write(‘Security.salt’, ‘DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi’);
/**
* A random numeric string (digits only) used to encrypt/decrypt strings.
*/
Configure::write(‘Security.cipherSeed’, ‘76859309657453542496749683645’);
適当な値に変更する
・cakephp用のデータベースを作成
データベース名:cakephp
ユーザ名:cakephp
パスワード:cakephp
を作成してみます
/opt/lampp/bin/mysql -u root -p (パスワード:lampp) mysql> /opt/lampp/bin/mysql -u root -p mysql> GRANT ALL PRIVILEGES ON cakephp.* TO cakephp@localhost IDENTIFIED BY 'cakephp'; mysql> FLUSH PRIVILEGES; mysql> create database cakephp character set utf8; mysql> exit
・databaseの設定
cakephp/app/Config
にある
database.php.default
を、database.phpに変更(複写)
cp /opt/lampp/htdocs/cakephp/app/Config/database.php.default /opt/lampp/htdocs/cakephp/app/Config/database.php
作成したデータベースの内容
データベース名:cakephp
ユーザ名:cakephp
パスワード:cakephp
に、
database.php
を変更する
TEST用データベースは削除する
vim /opt/lampp/htdocs/cakephp/app/Config/database.php
以下に変更
public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'cakephp', 'password' => 'cakephp', 'database' => 'cakephp', 'prefix' => '', 'encoding' => 'utf8', );
localhost:8880/cakephp
で起動する
DebugKit is not installed.
を消すために
git clone git://github.com/cakephp/debug_kit.git mv debug_kit /opt/lampp/htdocs/cakephp/app/Plugin/DebugKit
app/Config/bootstrap.phpにCakePlugin::load(‘DebugKit’);を追加する。
vim /opt/lampp/htdocs/cakephp/app/Config/bootstrap.php
もう一度
localhost:8880/cakephp
で起動してみましょう
エラーがなくなっているはずです
■ファイルをホストとゲストで共有する
ゲストとデータとホストのデータを共有することで
ホスト側から手軽にゲスト側のデータを編集できるように
してみましょう
mv /opt/lampp/htdocs /vagrant/htdocs ln -fs /vagrant/htdocs /opt/lampp/htdocs
これで、ホスト側から編集が可能になります
■CakePHPでプログラムを作ってみる
Firstと表示されるプログラムを作ってみます
まず、
http://localhost:8880/cakephp/First
にアクセスする
Missing Controller Error: FirstController could not be found. Error: Create the class FirstController below in file: app/Controller/FirstController.php <?php class FirstController extends AppController { }
とのエラーになるので、メッセージに従い、プログラムを作る
vim /opt/lampp/htdocs/cakephp/app/Controller/FirstController.php
でファイルを作り
<?php class FirstController extends AppController { }
を、挿入し(挿入はi)、終了する(終了は「Esc」:wq!)
http://localhost:8880/cakephp/First
にアクセスする
Missing Method in FirstController Error: The action index is not defined in controller FirstController Error: Create FirstController::index() in file: app/Controller/FirstController.php. <?php class FirstController extends AppController { public function index() { } }
とのエラーになるので、メッセージに従い、プログラムを修正する
vim /opt/lampp/htdocs/cakephp/app/Controller/FirstController.php
でファイルを開き
<?php class FirstController extends AppController { public function index() { } }
に修正する
http://localhost:8880/cakephp/First
にアクセスする
Missing View Error: The view for FirstController::index() was not found. Error: Confirm you have created the file: /vagrant/htdocs/cakephp/app/View/First/index.ctp
とのエラーになるので、メッセージに従い、プログラムを作成する
プログラムには、FirstGood
と記述してみる
mkdir /opt/lampp/htdocs/cakephp/app/View/First vim /opt/lampp/htdocs/cakephp/app/View/First/index.ctp
でファイルを作り
FirstGood
と記述する
http://localhost:8880/cakephp/First
にアクセスする
無事表示されました
■CakePHPでデータベースの表示
CakePHPで、データベースの内容を表示してみます
データを作成します
CREATE TABLE posts ( id INT not null AUTO_INCREMENT PRIMARY KEY, title VARCHAR(50), body TEXT, created DATETIME DEFAULT NULL, modified DATETIME DEFAULT NULL ); INSERT INTO posts (title,body,created) VALUES ('タイトル1', '記事1', NOW()); INSERT INTO posts (title,body,created) VALUES ('タイトル2', '記事2', NOW()); INSERT INTO posts (title,body,created) VALUES ('タイトル3', '記事3', NOW());
データベースに接続します
sudo /opt/lampp/lampp restart /opt/lampp/bin/mysql -u root -p (パスワード:lampp) mysql> USE cakephp; mysql> (ここに書き込む) mysql> exit
モデルを作ります
vim /opt/lampp/htdocs/cakephp/app/Model/Post.php <?php class Post extends AppModel { }
コントローラの作成します
vim /opt/lampp/htdocs/cakephp/app/Controller/PostController.php <?php class PostsController extends AppController { public $helpers = array('Html', 'Form'); public function index() { $this->set('posts', $this->Post->find('all')); } public function view($id = null) { if (!$id) { throw new NotFoundException(('Not post')); } $post = $this->Post->findById($id); if (!$post) { throw new NotFoundException(('Not post')); } $this->set('post', $post); } }
ビューの作成します
mkdir /opt/lampp/htdocs/cakephp/app/View/Posts vim /opt/lampp/htdocs/cakephp/app/View/Posts/index.ctp <h1>posts</h1> <table> <tr> <th>Id</th> <th>Title</th> <th>Created</th> </tr> <?php foreach ($posts as $post): ?> <tr> <td><?php echo $post['Post']['id']; ?></td> <td> <?php echo $this->Html->link($post['Post']['title'], array('controller' => 'posts', 'action' => 'view', $post['Post']['id'])); ?> </td> <td><?php echo $post['Post']['created']; ?></td> </tr> <?php endforeach; ?> <?php unset($post); ?> </table>
詳細用のビューを作る
vim /opt/lampp/htdocs/cakephp/app/View/Posts/view.ctp <p>タイトル:<?php echo h($post['Post']['title']); ?></p> <p>内容:<?php echo h($post['Post']['body']); ?></p> <p>作成日: <?php echo $post['Post']['created']; ?></p>
アクセスしてみます
localhost:8880/cakephp/posts
■Jenkinsを組み込みます
GestOSに、Jenkinsをインスツールしてみます
まず、Vagrantを立ち上げる前に
ポートを追加します
ホスト側にて
vim Vagrantfile
で、設定ファイルを開き
config.vm.network :forwarded_port, guest: 8080, host: 8888
を追加します
vagrant up
で起動します
起動後
vagrant ssh
で、ゲストOSに入ります
以下を実行
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
/etc/apt/sources.listに
deb http://pkg.jenkins-ci.org/debian binary/
を追加します
sudo vim /etc/apt/sources.list
にて
deb http://pkg.jenkins-ci.org/debian binary/
を、追加します
sudo apt-get update
で、アップデートし
sudo apt-get install jenkins
にて、jenkinsをインストールします
完了したら
HOST側のブラウザから
localhost:8888
でアクセスすることで、接続できます
■Phing、Phpunutを組み込む
composerにより、Jenkinsで使用するライブラリィーを
インストールする
sudo apt-get install php5-cli curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer
設定用ファイルを作成する
vim composer.json
新規で作成する
{ "require-dev": { "phing/phing": "*", "squizlabs/php_codesniffer": "*" "phpunit/phpunit": "*", "phpmd/phpmd": "*", "pear/pear_exception": "dev-master", "sebastian/phpcpd": "*", "phpunit/phpunit-skeleton-generator": "*" }, "config": { "bin-dir" : "/usr/local/bin/" } }
アップグレードにて組み込みする
composer update
組み込み完了を確認
ls /usr/local/bin phing -v
xdebugをインスツールします
sudo apt-get install php5-xdebug sudo apt-get install php5-xsl
サンプルプログラムを作ってみます
vim Sample.php
簡単なプログラム
<?php class Sample { public function getMessage() { return "hello world"; } } ?>
phpunit-skelgen generate-test Sample Sample.php
■Jenkinsのタイムゾーンの変更
/etc/defaults/jenkins に
JAVA_ARGS=”-Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Tokyo”
を追加します
sudo vim /etc/defaults/jenkins
i(挿入)貼り付け「ECS」:wq(終了)
JAVA_ARGS=”-Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Tokyo”