Vagrantのprovisionでローカル開発環境をupと同時に整える

#09 Provisioningを使ってみよう (1)

http://dotinstall.com/lessons/basic_vagrant/24109

仮想マシンが立ち上がったあとに実行される処理をProvisioningで指定していきます。

Vagrantfileの編集
config.vm.provision :shell, :inline => “echo hello world”
動作確認

 

で、Provision設定のほう
vagrant init YourBox
と実行すると、実行したとこにVagrantfileっていういつものアレができますけど、
そこに記述していきます
開くと、したの方に記述例があるのでそれを参考に (あとはWebドキュメントね)

config.vm.provision “shell”, :path => “provision_init.sh” :privileged => false
というのを記述します。
pathっていうのが、実行するシェルスクリプトファイルのパスで
privilegedが、実行ユーザーの設定になります。

これが大事だった…。
この指定がないとデフォルトでtrueなんですけど、
そうすると、シェルスクリプトを実行するユーザーがrootなんですよね
なので、rbenvとかのインストールでホームディレクトリがrootになっちゃっておかしくなるんですよねぇ
パスとおすのも/root/.bash_profileとかになっちゃうし

最初はシェルスクリプトでユーザー切り替えようとかおもってたけど、対話式でめんどくせーとか思ってたんですけどね
公式ドキュメントみたらかいてあった(笑)

あとはvagrant upするとupで準備した後に、スクリプトを実行してくれまっす

https://anz-note.tumblr.com/post/105946767956/

vagrantでmountエラー、Failed to mount folders in Linux guest. This is usually beacuse

解決方法
vboxをリビルドする必要があるようです。
まずsshで入ります
vagrant ssh
リビルド実行します。
sudo /etc/init.d/vboxadd setup

Removing existing VirtualBox non-DKMS kernel modules [ OK ]
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module [ OK ]
Building the shared folder support module [ OK ]
Building the OpenGL support module [失敗]
(Look at /var/log/vboxadd-install.log to find out what went wrong)
Doing non-kernel setup of the Guest Additions [ OK ]

一旦macのコンソールに戻ります。
exit
vagrantを再起動します。
vagrant halt
vagrant up

【GitHub】ブランチ(ローカル&リモート)を操作する

【ローカル】

ローカルのブランチを作成したい $ git branch

$ git branch <branchname>

ローカルのブランチ名を変更したい $git branch -m <oldbranch> <newbranch>

$ git branch -m <oldbranch> <newbranch>

ローカルのブランチを切り替えたい $ git checkout <branch>

$ git checkout <branch>

ローカルのブランチ一覧を表示したい $ git branch

$ git branch

ローカルのブランチを削除したい $ git branch -d <branchname>

$ git branch -d <branchname>

ブランチを削除するには、次のオプションがあります。

-d または –delete はマージされたブランチは削除できる

-D は容赦なく(irrespective)ブランチを削除する

 

【リモート】

 

リモートにブランチを作成したい $ git branch

 

リモートのブランチ一覧を表示したい $ git branch -r

$ git branch -r

リモートのブランチ を削除したい $ git push origin :<branchname>

$ git push origin :<branchname>

 

 

SQLの文法に誤りがあるときに表示されるMySQL実行時のエラー:ERROR 1064

ERROR 1064: You have an error in your SQL syntax. Check the manual that corresponds
to your MySQL server version for the right syntax to use near ・・・

 

というエラーが出ました。これはSQLの文法に誤りがあるときに表示されます。

vagrantコマンド一覧

boxの追加
$ vagrant box add NAME URL
boxの確認
$ vagrant box list
boxの削除
$ vagrant box remove NAME PROVIDER
boxのpackage化
$ vagrant box repackage NAME PROVIDER
初期化
$ vagrant init [box-name] [box-url]
起動
$ vagrant up
状態確認
$ vagrant status
停止
$ vagrant halt
破棄
$ vagrant destroy
仮想マシンにログイン
$ vagrant ssh

git log よく使うオプション一覧

オススメ記述

$ git log –oneline –graph –decorate -n10

表示数でログ表示

$ git log -n 10

 

■その他

ファイル毎の削除、追加行数を表示

$ git log –numstat

 

変更したファイルを表示

$ git log –name-status

 

コミット日付で絞り込み

$ git log –since=”4 days ago” –until=”2015/01/22″

 

 

特定のファイルのみ

$ git log — path/to/*.sh

 

 

コミッター名で

$ git log –author=’xxxx’

 

コミットログで

$ git log –grep=’typo’

 

マージコミットのみ

$ git log –merges

 

マージコミットを除く

$ git log –no-merges

 

マージコミットのマージ元を非表示

$git log –first-parent

 

全ブランチ

$ git log –all

【コマンド】「git pull」リモートリポジトリのブランチ内容(変更)をローカルに取り込みたい

$ git pull [リモートリポジトリの位置] [ブランチ]
リモートリポジトリの変更を取り込む.

pull コマンドによって、リモートリポジトリの変更内容がローカルリポジトリのブランチに反映されます。 「pull = fetch + merge」という動きになります。

 

■リモートリポジトリ部分を省略する場合

リモートリポジトリを省略した場合、push同様に現在のブランチが対象となります。

「XAMPP上のMySQL rootパスワード忘れの対応」

0)準備 
MySQLを停止する。
mysqldというプロセスでWindows上で動いています。これも自分はいつもXAMPP Control Panelから手動でプロセスを起動するようにしているのですが、サービスで自動で起動するようにしている環境では明示的に停止する必要があります。今回、自分は、XAMPP Control PanelからMySQLを停止しました。
1) MySQLをフル権限モードで起動する 
コマンドウィンドウを開いて、コマンドプロンプトで以下のコマンドを打ちます。(パスはxamppを導入したフォルダを確認して、環境に合わせて変更ください)
C:\xampp\mysql\bin>mysqld.exe –skip-grant-tables 
MySQLのデーモンを権限を利用しないモード(誰でもフル権限)で起動します。このウィンドウは、コマンドが実行中のままになります。
2)rootでのログイン 
別のコマンドウィンドウを開いて、同じくコマンドプロンプトで以下のコマンドを打ってrootユーザーでDBに接続します。
cd C:\xampp\mysql\bin\
C:\xampp\mysql\bin>mysql -u root mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.8 MySQL Community Server (GPL)
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
rootユーザーのパスワードを”password”に変更します。これは自分のすきなパスワードに設定しても良いです。
mysql> update user set password=password(“password“) where user=’root’; 
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
これで、rootのパスワードが初期化されて、設定したパスワードに変更されました。
3)XAMPP Control PanelからMySQLの停止と起動 
rootのパスワードも設定されたので、今度は、通常のモードでMySQLを起動します。
起動しているMySQLのデーモンの止め方はいろいろありますが、XAMPP Control Panelを開くと、MySQLがrunningになっているので、停止します。(さきほどデーモンを起動したウィンドウが閉じます)
そして、同じく、XAMPP Control PanelからMySQLを起動します。(これで再起動完了)
4)動作確認
改めてログオン。再びrootユーザーでログオンします。
コマンドプロンプトから以下のコマンドでMySQLへ接続します。パスワードはさきほど設定したrootユーザーのパスワードを利用します。
C:\xampp\mysql\bin>mysql -u root -p 
Enter password: ******** 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.8 MySQL Community Server (GPL)
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql>
これで、新しく設定したパスワードでログオンできることを確認できました。

【Core】基本だから覚えよう!Fuelphpのクラス一覧

【第1章】

Agent クラス

Agent クラスは、ブラウザ種別、バージョン、プラットフォーム、OSなど、クライアントのユーザーエージェント文字列に関する情報を取得可能にします。
設定
Agent クラスは、PHP 関数 get_browser() を使用し、 ユーザーのブラウザの機能を調査します。これは、browscap.ini ファイルのブラウザ情報をもとに行われます。

Arr

Arr クラスは、配列を扱うヘルパー関数を集めたものです。

Asset

asset クラスは、アセット (js、css、img) を収集し、グループ化し、表示するために役立つメソッドをまとめたクラスです。
設定
asset クラスのデフォルト設定は、fuel/core/config/asset.php ファイルで設定されています。 デフォルトの設定が有効になっています。あなたのアプリケーションの config ディレクトリに、同名の config ファイルを追加し、 変更したい値を設定することで、設定を上書きできます。 コアの設定を上書きしますが、上書きしたくないものは変更しません。

Autoloader

Autoloader クラスは Fuel の自動読み込み機能です。自動読み込み処理に影響するメソッドも提供します。

Cache

Cache クラスを使用すると、リソースの重い操作の結果をキャッシュすることができます。
設定
Cache クラスは初期状態では fuel/core/config/cache.php の設定ファイルを使用して構成されており、 これは標準の設定が記述されています。アプリケーションの config ディレクトリに同じ名前の設定ファイルを 追加してこの設定の上書きを行い、これらの値を変更することができます。これらの core の設定は上書きを行わないで そのまま使うこともできます。

Cli

コマンドライン上で入力オプション、パラメーター、出力テキストの操作ができます。

Config

Config クラスは、Fuel の設定オプションの殆どすべてを処理することが出来ます。config ファイルの読み込み、値の取得、設定を行う場合、本クラスが常用されます。
設定ファイルの種類
設定を保存するのに、さまざまなファイルレイアウトを使用できます。レイアウトの種類は、ファイル拡張子で決められます。

Cookie

cookie クラスは cookie の値の取得、設定、削除を行うことができます。
設定
cookie クラスの設定はアプリケーションの共通設定ファイル app/config/config.php で行います。設定項目は ‘cookie’ セクションの中にあり、次のように設定されています。

Crypt

Crypt クラスにより文字列を暗号化や複号が可能になります。例えば、Sessions クラスにおいても Crypt クラスが内部で使用されています。
PHPSecLib により提供される暗号化とハッシング関数が使われているため、mcrypt のような外部モジュールに依存していません。
設定
Crypt クラスの設定は app/config/crypt.php にて行います。これは、Crypt クラスを初めて利用するときか、必要な設定ファイルが無い場合に、乱数とともに生成・追加されます。
app/config/crypt.php への書き込み権限が必要です! もし不可能な場合、全ての設定項目が設定されているかどうか確認してください!

 

Database

設定
データベースの操作を行うには、データベース設定を変更する必要があります。 まずは、全ての環境で適用される、グローバルとなる設定を APPPATH/config/db.php に定義します。次に、適切な環境設定フォルダ内の db.php に、環境別のデータベース設定を定義します。 これら2つは、完全なデータベース設定としてマージされます。

DB クラス

DB クラスは、データベースクエリの生成と実行および結果の取得を行います。

DBUtil クラス

DBUtil クラスは、データベースに対するルーチン操作を管理し、行なうことを可能にします。
関数を利用する
DBUtil は、データベースのカラムを作成、リネーム、変更、および削除することを可能にします。

Query Building

注意: Query Builder クラスを書いた時点で、複数の SQL 方言を取り扱うことができるように調整されます。

データベースへの問い合わせ のためのSQL生成の抽象化はQuery Builderによって行われます。 Query Builder は、1セットのクラス群として構成され、各々のクラスは特定のクエリ生成プロセスを扱います。
大抵の場合、DB class が新しい Query Builderオブジェクトを生成するショートカットを提供するため、 Query Builderを使うことに、気づかないでしょう。これらの方法を使うことは正しいQuery Builderを取得するために推奨されます。 これは一般的な慣習で、 あなたのコードを読みやすく維持してくれるでしょう。

 

【第2章】

Date

Date クラスは、日付を扱うヘルパー関数を集めたものです。PHP の DateTime クラスとは異なり、 Fuel Date クラスは、i18n を完全サポートしています。また、タイムゾーンの変換にも使用出来ます。

Debug

Debug クラスは値やオブジェクト、配列などの情報を表示するためのシンプルなユーティリティクラスです。 デバッグに関する機能が全部入りというわけではありませんが、パッと情報を確認したい時には簡単な方法です。

Event

イベントクラスを使うことで Fuel のコアの処理に、コアのファイルを変更することなく介入することができます。
システムに定義されたイベント
FuelPHP は fuelphp インスタンス上にいくつかイベントを定義します。これにより、コアを拡張することなく、 内部の処理へフックきます。

Fieldset

Fieldset クラスは、オブジェクト指向風に、フォームを作ったりそのバリデーションを扱ったりするのに利用されます。 Fieldset クラスは、Form クラスと Validation クラスを利用します。Fieldset クラスそのものは、フィールドセットとそれぞれのフィールドを組み合わせるだけで、 実際には、Form と Validation の 2 つのクラスが仕事をすることになります。
フォームは、Fieldset インスタンスを View に渡すとき、あるいは build() を呼び出すときに生成されます。

File

File クラスは、ファイルとディレクトリを取り扱う各種メソッド一式を提供します。 幾つかのヘルパーメソッド、また、すべてのファイルやディレクトリがオブジェクトにラップされた、より進んだオブジェクト指向のメソッドを通じて、 その処理が行われます。
設定
ファイルクラスでは詳細な設定が可能です。 クラスの動作に対して必要なコントロールをすべて行えます。設定は、ファイルシステムへのアクセス制限からはじまり ファイルタイプドライバの設定に至ります。

Finder

Finder クラスは検索対象パスから指定されたファイルを検索し、同じようにファイルを読み込むことができます。

Form

Form クラスは、個別のフォーム要素を作ることやバリデーションチェック付きのフォーム全体を作ることができます。 後者を作る場合は、 Fieldset クラスと組み合わせて使います。

Format

Format クラスは、XML、JSON、CSV 等の様々なフォーマット間の変換ができます。
設定
Format クラスは、 fuel/core/config/format.php にある設定ファイルで設定をします。デフォルトで設定がされています。設定を変更するには、設定ファイルをアプリケーションの設定ディレクトリにコピーし、そのファイルを変更してください。

Ftp

FTP クラスは、リモートサーバで FTP プロトコルを使用してファイルのアップロード、ダウンロード、移動やミラーを行うことができます。
設定
FTP クラスは、 fuel/core/config/ftp.php にある設定ファイルで設定をします。デフォルトで設定がされています。設定を変更するには、設定ファイルをアプリケーションの設定ディレクトリにコピーし、そのファイルを変更してください。

Fuel

Fuel クラスには、Fuel フレームワークのコアメソッドが含まれています。 本ドキュメントでは、アプリケーションで利用可能な同クラスの public メソッドを纏めています。 ここに記していないメソッドはクラス内部でのみ利用されるものなので、利用してはいけません。
クラス定数
環境定数。config.php においてアプリケーションの動作環境を定めるために用いられます。

 

【第3章】

Html

Html クラスは、HTML タグのほぼすべてに対応する HTML ラッパーです。
Doctypes
doctype はすべて fuel/core/config/doctypes.php に記述されており、同設定ファイルはあらかじめインクルードされています。

Image

Image クラスは、簡単にリサイズ、トリミングのような画像に共通の操作を加えるために使用されます。
制限事項
Image クラスはいくつかの知っておかなければならない制限があります。まず、 GD ライブラリの透過設定はかなりよくありません。 このため、Image::rotate() は、透過度をもった背景を扱うことができません。 imagemagick にも丸い画像の透過している隅が不透過になるという不具合があります。
GD で複数の変換を使用すると、異常な結果になることがあります。
設定
Image クラスは、次の設定オプションを受け付けます。fuel/core/config/image.php から fuel/app/config/image.php へファイルをコピーしてください。

Inflector

Inflector クラスは単数形の単語を複数形に変換し、テーブル名にクラス名を指定したり、クラス名をモジュール化したり、クラス名から外部キー名を生成したりすることができます。

Input

input クラスは、HTTP パラメータやサーバ変数、ユーザエージェント情報へのアクセスを提供します。

Lang

Lang クラスは、アプリケーション内の言語ファイルを使用して言語の変数をセットすることができます。
デフォルトの言語は、app/config/config.php の中で en と設定されています。 値を変更するには、Config の set メソッド を使用してください。

Log

Log クラスを使用すると、ログファイルにメッセージを書き込むことができます。
設定
ログファイルは、 config.php 内の属性 ‘log_path’ で指定されたフォルダに配置されます。また、パラメータとして ‘log_threshold’ 、 ‘log_date_format’ を設定することができます。
これらの設定は Config クラスを使用することによりその場で変更することができます。

Markdown

元は John Gruber 氏 によって作成されたテキストを HTML 形式に変換するものです。 FuelPHP は Michel Fortin 氏 によって PHP に移植、拡張されたものを使用します。

Migrate

Migrate クラスを使用すると、コントローラからマイグレーションの検証を行ったり、戻したりすることができます。 マイグレーションはアプリケーションのモジュールとパッケージでサポートされます。

Model_Crud

データベース操作のほとんどは基本的な CRUD (Create Retrieve Update Delete) 操作に落ち着くことになる。 Model_Crud クラスは標準的な方法でその機能を提供します。このクラスは以下をサポートします:

Module

Module クラスを使用すると、簡単にモジュールの読み込みや開放、読み込まれているモジュールが存在するかどうかの確認、読み込まれている全てのモジュールリストの取得を行うことができます。

 

【第4章】

Mongo_Db

Mongo_Db クラスは、 Mongo データベース とやり取りするメソッドを提供します。
通常の insert、select、delete や update といった機能に加え、 データベース操作を助ける機能を提供します。
設定
すべての Mongo データベースの接続設定は、app/config/db.php の中で mongo という配列に設定されている必要があります。 設定オプションと説明を下にリストアップしました。 すべての設定には、ホスト名とデータベース名が必須となります。

Num

Num クラスは、数値を扱うために付加的なフォーマットを行うメソッドを提供します
設定
Num クラスは、数値を特定のフォーマットへ変換する様々なメソッドを提供します。 フォーマットは文字列で表します (ゼロは返り値の数値の部分となります) 。
注意: num コンフィグを変更する場合、app/config/num.php をコピーして設定を変更します。 そうすれば、あなたのカスタム設定を失うことなく簡単にアップグレードができるようになります。

Package

Package クラスは、パッケージをロードする/アンロードする、パッケージがロードされているか調べる、全てのパッケージをロードする、を容易にします。

Pagination

pagination クラスは、表示したいレコードのページネーションを簡単に設定することができます。
使い方
Pagination クラスの分かりやすい使用方法の例。コントローラのアクションメソッドへ書くことができます。

Profiler

Profiler クラスを使うと、独自のプロファイリング情報をプロファイラに送ることができます。

Redis_Db

Redis_Db クラスは key-value ストアであるRedis とデータをやり取りすることができます。

Request

Request クラスは URI リクエストを処理します。Fuel は index.php 内で、ユーザーからの URI リクエストを処理するために同クラスを使用しています。また、HMVC コンテクストの中でリクエストを生成するためには、このクラスを使う必要があります。

Response

Response クラスは HTTP レスポンスとブラウザ出力を扱うメソッドを含んでいます。

Router

Router クラスは、渡されたリクエストと定義されたルートに従い、どのコントローラが読み込まれるかを決定します。

Security

Security クラスは、あなたのアプリケーションを CSRF から守ります。
設定
Security クラスは、app/config/config.php 設定ファイルのセキュリティセクションで設定できます。

 

【第5章】

Session

セッションクラスを使用することでステートレスな Web 環境において、アプリケーションの状態を管理出来るようになります。 サーバー上の様々なストレージに変数を格納し、それらを次のページリクエストに再度呼び出すことが出来ます。

Str

str クラスは、文字列の操作を手助けするメソッドの集合です。

Theme クラス

Theme クラスは、あなたのアプリケーションにテーマ設定を提供します。
テーマはテンプレート (ビュー) とアセットをグループ化し、アクティブなテーマを切り替える事で、 あなたのアプリケーションのルック・アンド・フィールを切り替える事ができます。
モジュールやパッケージのように、テーマを複数の場所に保存する事ができます。 あなたはこれらのパスをコンフィグファイルに定義するか、実行時にテーマのインスタンスに追加する事ができます。 テーマは名前で識別され、テーマのフォルダ名と同じでなければいけません。 テーマが複数の場所で定義されてる場合、最初に見つかったものが使用されます。

 

Upload

Upload クラスは、アプリケーションにアップロードされたファイルを安全に処理することを可能にします。 様々な方法でアップロードをフィルタすることができます。目的のファイル名を定義したり、ファイルサイズやファイル名の長さでフィルタしたりできます。
設定
Upload クラスは、fuel/core/config/upload.php 設定ファイルで設定します。デフォルト設定されています。設定を変更したい場合は、設定ファイルをアプリケーションディレクトリにコピーし、 そのファイルを変更してください。

Uri

Uri クラスは URI を対話的に扱うことができます。

Validation

Validation クラスは、ユーザ入力をバリデーションする際の手助けをします。 フォームの生成とバリデーションを同時にしたい場合は、代わりに Fieldset クラスを使用してください。

View

View クラスは、”ビュー” と呼ばれる PHP コードが埋め込まれた HTML ページのラッパーとして機能します。 変数は view オブジェクトに割り当てられ、ビューの中でローカル参照できます。