寄稿しました。
もくじ
CentOS7にインストールします。
環境
- CentOS7
- ローカル環境
- ドメイン:myapp.local
- Windows環境でhosts設定済(http://onocom.net/blog/windows-hosts-file/)
基本設定
SELinuxの無効化
# vi /etc/sysconfig/selinux SELINUX=disabled
基本インストール
# 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リポジトリのインストール
# 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のインストール
# 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のインストール
# cd
# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
Composerセットアップ
# php composer-setup.php Composer (version 1.5.2) successfully installed to: /root/composer.phar Use it: php composer.phar
Composerのコマンド登録
# mv composer.phar /usr/local/bin/composer
Composer削除
# php -r "unlink('composer-setup.php');"
Composerインストール完了の確認
$ composer
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.5.2 2017-09-11 16:59:25
Usage:
command [options] [arguments]
管理ユーザの作成
# useradd laraveldev637 # passwd laraveldev637 # usermod -a -G apache laraveldev637
sudo設定
# visudo ## Allows people in group wheel to run all commands #%wheel ALL=(ALL) ALL laraveldev637 ALL=(ALL) NOPASSWD: ALL
Laravelのインストール
$ 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プロジェクト用ディレクトリの権限設定
$ sudo mkdir -p /var/www/myapp $ sudo chmod 777 /var/www/myapp
Laravelプロジェクト作成
$ composer create-project laravel/laravel /var/www/myapp --prefer-dist
権限の設定
$ sudo chown laraveldev637:apache -R /var/www/myapp/public
Laravelバージョンの確認
$ cd /var/www/myapp $ php artisan --version Laravel Framework 5.5.14
Apacheのインストール
$ sudo yum install httpd httpd-devel mod_ssl
Apacheメインコンフィグ設定
$ sudo vi /etc/httpd/conf/httpd.conf ServerName myapp.local:80
hostsの設定
$ 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
バーチャルホストの設定
$ 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の起動
$ sudo httpd -t Syntax OK
$ sudo systemctl restart httpd $ sudo systemctl enable httpd
Firewallの設定
$ sudo firewall-cmd --permanent --zone public --add-port 80/tcp $ sudo firewall-cmd --reload
80番ポートを開放します。
MariaDBのインストール
# yum install mariadb mariadb-server # systemctl enable mariadb # systemctl start mariadb
DBの作成
# 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
接続設定
$ 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
$ sudo yum install --enablerepo=remi-php71 phpMyAdmin
$ 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>
$ sudo systemctl restart httpd

http://myapp.local/phpMyAdmin/
アクセスして確認

http://myapp.local/
見えました。
Hello Youkai!

今回は動作確認としてControllerとViewだけで、簡単に行います。YoukaiControllerを設定して、参照させることで動作確認したいと思います。
Routes
Routesを設定します。
Route::group( ['middleware' => ['web'] ], function(){
//ここにRouteを設定するよ!
});
$ 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
コントローラを設定します。
$ 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にディレクトリを作成します。
$ mkdir /var/www/myapp/resources/views/youkais
ファイル名の間にbladeが入るので注意しつつ、ビューを作成します。
$ vi /var/www/myapp/resources/views/youkais/index.blade.php
<html>
<body>
<h1>ここらへんには妖怪がいるんだって</h1>
</body>
</html>
こっちも作成します。
$ vi /var/www/myapp/resources/views/youkais/komasan.blade.php
<html>
<body>
<h1>komasan『もしかして?オラのこと見えてるズラ??』</h1>
</body>
</html>
アクセスしてみましょう


http://myapp.local/youkais/watch/komasan/
上手く表示されていますね!
お疲れ様です。

