世界的に人気になっているPHPフレームワーク【Laravel5】をCentOS7にインストールしてみましょ~!
今回はLaravelで簡単なアプリを作ろうと、社内の開発環境に設置したので、ついでに記事にしました。
破竹の勢いのLaravel
@see https://www.webprofessional.jp/the-state-of-php-mvc-frameworks-in-2017/
Laravelがぐんぐん伸びて、Synfonyが上昇傾向にあります。人気があるフレームワークは、多くの人が使うのでより保守され、より安心して利用出来るようになっていきます。
また、フレームワーク選びに迷っているならば、“とにかく人気がある”という観点から、Laravelを検討されるのも良いかもしれません。
CentOS7にインストールします。
https://www.centos.org/download/
環境
- CentOS7
- ローカル環境
- ドメイン:myapp.local
- Windows環境でhosts設定済(http://onocom.net/blog/windows-hosts-file/)
基本設定
SELinuxの無効化
1 2 3 |
# vi /etc/sysconfig/selinux SELINUX=disabled |
基本インストール
1 2 3 4 5 6 7 |
# yum groupinstall "Development Tools" "Base" # yum install gcc gcc-c++ unzip pcre-devel zlib-devel make wget openssl-devel libxml2 libxml2-devel libxslt-devel libxslt libxslt-devel gd-devel perl-ExtUtils-Embed GeoIP-devel gperftools-devel flex libmcrypt libtool-ltdl libtidy libXpm libtiff gd-last autoconf automake gmp gmp-devel libgmp.so.3 libssl.so.6 kernel-devel # yum update # reboot now |
PHPのインストール
Remiリポジトリのインストール
1 2 3 4 5 6 |
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm warning: /var/tmp/rpm-tmp.PL2nPa: Header V4 DSA/SHA1 Signature, key ID 00f97f56: NOKEY Preparing... ################################# [100%] Updating / installing... 1:remi-release-7.3-1.el7.remi ################################# [100%] |
PHP7.1のインストール
1 2 3 4 |
# yum install --enablerepo=epel libmcrypt libwebp RemiからPHP7.1を導入 # yum install --enablerepo=remi-php71 php php-cli php-devel php-common php-mbstring php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-gd php-pdo php-xml php-mcrypt php-fpm php-opcache php-pecl-apcu php-xmlrpc php-intl php-xsl php-soap php-intl php-pecl-zip |
Composerのインストール
1 2 3 |
# cd # php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" |
Composerセットアップ
1 2 3 4 |
# php composer-setup.php Composer (version 1.5.2) successfully installed to: /root/composer.phar Use it: php composer.phar |
Composerのコマンド登録
1 |
# mv composer.phar /usr/local/bin/composer |
Composer composer-setup.php削除
1 |
# php -r "unlink('composer-setup.php');" |
Composerインストール完了の確認
1 2 3 4 5 6 7 8 9 10 11 12 |
$ composer ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 1.5.2 2017-09-11 16:59:25 Usage: command [options] [arguments] |
管理ユーザの作成
1 2 3 4 5 |
# useradd laraveldev637 # passwd laraveldev637 # usermod -a -G apache laraveldev637 |
sudo設定
1 2 3 4 5 |
# visudo ## Allows people in group wheel to run all commands #%wheel ALL=(ALL) ALL laraveldev637 ALL=(ALL) NOPASSWD: ALL |
Laravelのインストール
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
$ composer global require "symfony/event-dispatcher" $ composer global require "laravel/installer" Changed current directory to /home/laraveldev637/.config/composer Using version ^1.4 for laravel/installer ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 11 installs, 0 updates, 0 removals - Installing symfony/process (v3.3.10): Downloading (100%) - Installing symfony/filesystem (v3.3.10): Downloading (100%) - Installing psr/log (1.0.2): Downloading (100%) - Installing symfony/debug (v3.3.10): Downloading (100%) - Installing symfony/polyfill-mbstring (v1.5.0): Downloading (100%) - Installing symfony/console (v3.3.10): Downloading (100%) - Installing guzzlehttp/promises (v1.3.1): Downloading (100%) - Installing psr/http-message (1.0.1): Downloading (100%) - Installing guzzlehttp/psr7 (1.4.2): Downloading (100%) - Installing guzzlehttp/guzzle (6.3.0): Downloading (100%) - Installing laravel/installer (v1.4.1): Downloading (100%) Writing lock file Generating autoload files |
Laravelプロジェクト用ディレクトリの権限設定
1 2 3 |
$ sudo mkdir -p /var/www/myapp $ sudo chmod 777 /var/www/myapp |
Laravelプロジェクト作成
1 |
$ composer create-project laravel/laravel /var/www/myapp --prefer-dist |
権限の設定
1 |
$ sudo chown laraveldev637:apache -R /var/www/myapp/public |
Laravelバージョンの確認
1 2 3 4 |
$ cd /var/www/myapp $ php artisan --version Laravel Framework 5.5.14 |
Apacheのインストール
1 |
$ sudo yum install httpd httpd-devel mod_ssl |
Apacheメインコンフィグ設定
1 2 3 4 |
$ sudo vi /etc/httpd/conf/httpd.conf ServerName myapp.local:80 |
hostsの設定
1 2 3 4 |
$ sudo vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 myapp.local ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 myapp.local |
バーチャルホストの設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ sudo vi /etc/httpd/conf.d/myapp.local.conf <VirtualHost *:80> DocumentRoot /var/www/myapp/public ServerName myapp.local ServerAdmin webmaster@virtual.host ErrorLog logs/virtual.myapp.local-error_log CustomLog logs/virtual.myapp.local-access_log combined <Directory "/var/www/myapp/public"> AllowOverride All Options MultiViews Require all granted Options FollowSymLinks </Directory> </VirtualHost> |
Apacheの起動
1 2 |
$ sudo httpd -t Syntax OK |
1 2 |
$ sudo systemctl restart httpd $ sudo systemctl enable httpd |
Firewallの設定
1 2 |
$ sudo firewall-cmd --permanent --zone public --add-port 80/tcp $ sudo firewall-cmd --reload |
80番ポートを開放します。
MariaDBのインストール
1 2 3 4 5 |
# yum install mariadb mariadb-server # systemctl enable mariadb # systemctl start mariadb |
DBの作成
1 2 3 4 5 6 |
# mysql -u root MariaDB [(none)]> CREATE DATABASE laraveldb; MariaDB [(none)]> GRANT ALL PRIVILEGES ON laraveldb.* TO "laraveldbuser"@"localhost" IDENTIFIED BY 'password'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> exit |
接続設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ vi /var/www/myapp/.env DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret ↓変更 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laraveldb DB_USERNAME=laraveldbuser DB_PASSWORD=password |
phpMyAdmin
phpMyAdminのインストール
1 |
$ sudo yum install --enablerepo=remi-php71 phpMyAdmin |
Apache phpMyAdmin用ホストファイル編集
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$ vi /etc/httpd/conf.d/phpMyAdmin.conf # phpMyAdmin - Web based MySQL browser written in php # # Allows only localhost by default # # But allowing phpMyAdmin to anyone other than localhost should be considered # dangerous unless properly secured by SSL Alias /phpMyAdmin /usr/share/phpMyAdmin Alias /phpmyadmin /usr/share/phpMyAdmin <Directory /usr/share/phpMyAdmin/> AddDefaultCharset UTF-8 <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require ip 127.0.0.1 Require ip ::1 Require all granted ←追加 </RequireAny> </IfModule> |
Apache再起動
1 |
$ sudo systemctl restart httpd |
http://myapp.local/phpMyAdmin/
Laravelにアクセスして確認
http://myapp.local/
見えました。
Hello Youkai!
今回は動作確認としてControllerとViewだけで、簡単に行います。YoukaiControllerを設定して、参照させることで動作確認したいと思います。
Routes
Routesを設定します。
1 2 3 |
Route::group( ['middleware' => ['web'] ], function(){ //ここにRouteを設定するよ! }); |
1 2 3 4 5 6 |
$ vi /var/www/myapp/routes/web.php Route::group( ['middleware' => ['web'] ], function(){ Route::get('youkais/', 'YoukaiController@index'); Route::get('youkais/watch/{name}', 'YoukaiController@watch'); }); |
色々なコントローラの書き方がありますが、参照させるだけなのでRoute::getで大丈夫。
Controller
コントローラを設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$ vi /var/www/myapp/app/Http/Controllers/YoukaiController.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class YoukaiController extends Controller { public function index() { return view('youkais.index'); } public function watch($name) { return view("youkais.{$name}"); } } |
Views
Viewsにディレクトリを作成します。
1 |
$ mkdir /var/www/myapp/resources/views/youkais |
ファイル名の間にbladeが入るので注意しつつ、ビューを作成します。
1 2 3 4 5 6 7 |
$ vi /var/www/myapp/resources/views/youkais/index.blade.php <html> <body> <h1>ここらへんには妖怪がいるんだって</h1> </body> </html> |
こっちも作成します。
1 2 3 4 5 6 7 |
$ vi /var/www/myapp/resources/views/youkais/komasan.blade.php <html> <body> <h1>komasan『もしかして?オラのこと見えてるズラ??』</h1> </body> </html> |
アクセスしてみましょう
http://myapp.local/youkais/watch/komasan/
上手く表示されていますね!
お疲れ様です。