PHP, Linux

Laravel5.5 CentOS7インストール

Laravel5.5 CentOS7インストールから妖怪発見まで

寄稿しました。

 

CentOS7にインストールします。

環境

 

基本設定

 

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!

MVC

今回は動作確認として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/

 

 

 

http://myapp.local/youkais/watch/komasan/

 

上手く表示されていますね!

 

お疲れ様です。

 

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)