Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

AWS Cloud9でLaravel環境を構築その壱

Macでも・・・Windowsでも・・・開発環境を構築できない場合、Cloud9しかないかなあ〜と思ったのでやってみました。
ミドルウェア達は手動で入れます。

マシンスペック

  • Mac mini 2018
  • macOS Catalina(10.15.x)
  • Intel Core-i7 3.2GHz 6コア
  • メモリ 32GB
  • SSD 512GB

Laravel環境

  • Nginx 最新版
  • PHP(PHP-FPM) 7.2.x
  • MySQL 5.7
  • Composer 最新版
  • Laravel 5.6

やること

  • Cloud9でLaravel環境構築
  • ミドルウェア達は手動構築

AWS Cloud9の準備

下記を参考に準備する。
AWS Cloud9+Docker ComposeでLaravel環境を構築その壱#AWS Cloud9の準備

ミドルウェアなどの準備

PHPインストール

PHPはインストール済み。

$ php -v
PHP 7.2.24 (cli) (built: Oct 31 2019 18:27:08) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

でも、Laravelを動かすライブラリが不足してるので、インストールし直す。

$ sudo yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ sudo yum -y install --enablerepo=remi,remi-php72 php php-devel php-mbstring php-pdo php-gd php-xml php-pecl-mcrypt php-mysqlnd php-fpm php-pecl-zip php-bcmath
・・・
Complete!

Nginxインストール

$ sudo vi /etc/yum.repos.d/nginx.repo
★点線内をコピペ
---
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
enabled=0
gpgcheck=0
---
:wq

$ sudo yum -y --enablerepo=nginx install nginx

設定ファイルの編集

PHP-FPM
/etc/php-fpm.d/www.conf
$ sudo vi /etc/php-fpm.d/www.conf
★下記を点線内に編集
user = apache
group = apache
listen = /run/php-fpm/www.sock
;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660
↓
---
user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
---
:wq
Nginx
/etc/nginx/conf.d/default.conf
$ sudo vi /etc/nginx/conf.d/default.conf
★全行を削除
:%d

★点線内をコピペ
---
server {
    listen 8080;
    server_name laravel.cloud9;

    charset UTF-8;
    access_log  /var/log/nginx/access.log;
    location / {
        root /home/ec2-user/environment/laravel/public;
        try_files $uri /index.php?$query_string;
    }

    #error_page 404 /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504  /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        root /home/ec2-user/environment/laravel/public;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
---
:wq
起動および自動起動設定
$ sudo systemctl start php-fpm
$ sudo systemctl enable php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
Nginxが/home/ec2-user配下を実行できるようにする
$ chmod 701 /home/ec2-user

MySQLインストール

MariaDBのアンインストール
$ rpm -qa | grep aria
mariadb-common-10.2.36-1.amzn2.0.1.x86_64
mariadb-config-10.2.36-1.amzn2.0.1.x86_64
mariadb-libs-10.2.36-1.amzn2.0.1.x86_64
mariadb-10.2.36-1.amzn2.0.1.x86_64

$ sudo yum -y remove mariadb*
$ sudo rm -rf /var/lib/mysql
MySQLインストール
$ sudo rpm -Uvh https://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm
$ sudo yum -y install --enablerepo=mysql57-community mysql-community-server
$ mysqld --version
mysqld  Ver 5.7.30 for Linux on x86_64 (MySQL Community Server (GPL))
$ sudo systemctl enable mysqld.service
$ sudo systemctl start mysqld.service
$ sudo grep 'temporary password' /var/log/mysqld.log
2020-06-14T11:56:34.296676Z 1 [Note] A temporary password is generated for root@localhost: XXXXXX
$ sudo mysql_secure_installation
Enter password for user root: XXXXXX
★パスワードは「英字小文字、英字大文字、数字、記号」の組み合わせにしたら通る
 例)cloud9#CLOUD9
New password: cloud9#CLOUD9
Re-enter new password: cloud9#CLOUD9
〜 以降の質問は全て y で回答し、パスワード聞かれたら上記パスワードを入力する 〜
All done!
データベース作成など
$ mysql -u root -p
Enter password: cloud9#CLOUD9

★DB:hoge、USER:fuga、PASSWORD:cloud9#CLOUD9(※好きなのに変える)
mysql> create database hoge default character set utf8 collate utf8_general_ci;
mysql> CREATE USER fuga@'%' IDENTIFIED BY 'cloud9#CLOUD9';
mysql> GRANT ALL ON hoge.* TO fuga@'%';
mysql> CREATE USER fuga@'localhost' IDENTIFIED BY 'cloud9#CLOUD9';
mysql> GRANT ALL ON hoge.* TO fuga@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit

Composerインストール

$ curl https://getcomposer.org/installer | php
$ sudo mv -i composer.phar /usr/local/bin/composer
$ composer -v
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.0.13 2021-04-27 13:11:08
・・・

Laravelインストール

プロジェクト作成
$ composer create-project --prefer-dist laravel/laravel laravel "5.6.*"
パッケージ追加とパーミッション変更
$ cd laravel
$ composer require --dev barryvdh/laravel-ide-helper
$ composer require --dev squizlabs/php_codesniffer
$ chmod -R 777 storage
$ chmod -R 777 bootstrap/cache
データベース接続設定
.env
$ vi .env
★下記を点線内に編集
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
↓
---
DB_DATABASE=hoge
DB_USERNAME=fuga
DB_PASSWORD=cloud9#CLOUD9
---
:wq
マイグレーション&シーダー実行
$ php artisan migrate:fresh --seed
キャッシュとか色々クリアするシェル作成&実行
bin/clear-laravel.sh
$ mkdir bin
$ vi bin/clear-laravel.sh
★下記を点線内をコピペ
---
#!/bin/bash
php artisan view:clear
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan clear-compiled
php artisan config:cache
composer dump-autoload
php artisan ide-helper:generate
php artisan ide-helper:models -N
php artisan ide-helper:meta
---
:wq
$ chmod 755 bin/clear-laravel.sh
$ bin/clear-laravel.sh

ブラウザで動作確認

「Preview」 → 「Preview Running Application」を選択する。
スクリーンショット 2021-05-11 22.43.41.png

ブラウザを別タブで開く。
スクリーンショット 2021-04-20 2.41.00.png

下記ページが表示されればOK。
スクリーンショット 2021-04-20 2.44.17.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?