#ディレクトリの作成
phalconディレクトリを作成し、その中に同期用のsyncディレクトリを作成する。
$cd phalcon
$mkdir sync
$vagrant init CentOS7
作成されたVagrantfileを編集し、以下のようにする。
Vagrant.configure("2") do |config|
config.vm.box = "CentOS7"
#ローカルでアクセスするときのIPアドレス。
config.vm.network "private_network", ip: "192.168.10.10"
#同期先を指定。「カレントディレクトリ(.)を/vagrant以下に同期」と、「syncディレクトリを/var/www/」以下に同期する。
config.vm.synced_folder ".", "/vagrant"
config.vm.synced_folder "sync", "/var/www/"
config.vm.network "forwarded_port", guest: 80, host: 8080
#ここで、epelとremiを使えるようにします。
config.vm.provision "shell", inline: <<-SHELL
sudo yum update -y
sudo yum -y install epel-release
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
SHELL
end
そのあとにvagrantを立ち上げ、sshで中に入る。*
$ vagrant up
$ vagrant ssh
*ここでエラーが出た時はVagrant cannot forward the specified ports on this VM, since they would collide with some other application that is already listening on these ports. の解決方法を確認してください。
vagrantの中に入ったら、ifconfigで先ほど指定した192.168.10.10にアクセスできているか確認する。
$ ifconfig
~~~略~~~~~
inet 192.168.10.10
~~~略~~~~~
のような表記があればOK。なければor違うIPになっていたら、一度vagrantから抜けて、reloadし、再度接続する。
(以下はない人だけね)
[vagrant@localhost]$ exit
$vagrant reload
$vagrant ssh
もう一度確認し、ifconfigで192.168.10.10にアクセスできているかを確認。
#必要なものインストール
php7.2,php-fpm、nginxなど、起動に必要なものをインストールする。
$ sudo yum install --enablerepo=remi-php72 php php-mbstring php-mcrypt php-mysqlnd php-pdo php-fpm nginx -y
php,php-fpmのバージョンを確認します。
$ php -v
$ php-fpm -v
#phalconのインストール
以下のコマンドで、php72に対応した、php-phalcon3をインストールします。
$ sudo yum install --enablerepo=remi-php72 php-phalcon3 -y
#php-fpmの設定の編集
以下はコメントアウトして、
; user = apache
; group = apache
; listen = 127.0.0.1:9000
;listen.owner = nobody
;listen.group = nobody
以下を追記
user = nginx
group = nginx
listen = /run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
#nginxの設定の編集
ドキュメントルートを「root /var/www;」に変更します。
これはngixがホスト側のsyncディレクトリの同期先の/var/wwwを見に行くようにするためです。(vagrantfileで設定した通り)
「location /」というところがあるので、そこも編集します。これは、ルートにアクセスした時にどのファイルを表示するか設定するためです。index.phpを最初に探すように設定します。
また、最後に拡張子が「.php」のファイルを読み込ませるように設定します。
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /var/www; #追記
-------略--------
location / {
index index.php index.html index.htm;
}
-------略--------
#以下を追記
location ~ .php$ {
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
設定を反映させるために、php-fpm,nginxを再起動します。
$ sudo systemctl restart php-fpm
$ sudo systemctl restart nginx
php-fpm,nginxの起動を確認。
$ sudo systemctl status php-fpm
$ sudo systemctl status nginx
「Active: active (running)」みたいな表記があれば成功。
#ファイアーウォール
このままではファイアーウォールによって阻まれアクセスできないため、80番ポート(httpのポート)を解放します。
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --reload
ここで、設定の確認をするために、
syncディレクトリ以下に、index.phpを作成。
<?php phpinfo();
実際に、192.168.10.10にアクセスし、以下のような画面が出てくればOK。
これでphp7.2と、phalconのインストールができたことがわかります。
#fhalconのディベロッパーツール
次にfhalconのディベロッパーツールを作成します。
一旦、vagrantを抜け、phalcon/syncディレクトリまで移動し、そこで、phalcon-devtoolsをgitからクローンします。
これは、ホストマシンと、ゲストマシンが同期しているために可能になります。sync以下にクローンしたレポジトリは、var/wwwに同期されます。
今回はゲストマシンにgitをいれていないため、ゲストマシンから直接クローンはできません。
終了したらvagrantの中に戻ります。
$ cd phalcon/sync
$ git clone git://github.com/phalcon/phalcon-devtools.git
$ vagrant ssh
そのあと、vagrant内でphalcon-devtoolsのあるディレクトリまで行き、「. ./phalcon.sh」を実行。
(. ./phalcon.shの先頭の「.」も忘れないでください。)
$ cd /var/www/phalcon-devtools
$ . ./phalcon.sh
phalcon-devtools/phalcon.phpの場所から、/usr/bin/phalconへのシンボリックリンクを作成し,権限を変更します。
$ sudo ln -s /var/www/phalcon-devtools/phalcon.php /usr/bin/phalcon
$ chmod ugo+x /usr/bin/phalcon
これで、phalconのコマンドが使えるようになっているはずなので、「phalcon commands」で確認します。
以下のようになっていればおk。
$ phalcon commands
Phalcon DevTools (3.4.0)
Available commands:
info (alias of: i)
commands (alias of: list, enumerate)
controller (alias of: create-controller)
module (alias of: create-module)
model (alias of: create-model)
all-models (alias of: create-all-models)
project (alias of: create-project)
scaffold (alias of: create-scaffold)
migration (alias of: create-migration)
webtools (alias of: create-webtools)
serve (alias of: server)
console (alias of: shell, psysh)
#fhalconプロジェクト作成
fhalconプロジェクトを作成します。
var/www以下に作成しようと思うので、var/wwwに、移動して、
以下のコマンドを打ちます。
myappというアプリが作成されます。
$ cd /var/www
$ phalcon project myapp simple
続いて、先ほど変更したnginxのドキュメントルートを/var/www/myapp/publicに変更します。
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /var/www/myapp/public;
設定を反映させるため、nginxを再起動します。
$ sudo systemctl restart nginx
192.168.10.10にアクセスして、
こんな画面になれば完成です!!