寄稿しました。
もくじ
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/
上手く表示されていますね!
お疲れ様です。