MySQL/Nginx/PHP/Laravelの設定 #yps1 #task2

AWS

今日のアウトプットは?

今日は

MySQL/Nginx/PHP/Laravelの設定 #yps1 #task2

をアウトプットします!

こんにちは。独学でプログラミングを学習しているharuです。
2歳0歳の育児をしながら、22時〜1時に独学しています!

わかったことや、気付きをログに残します。
同じく初学者の人が、これをみてインプットや復習ができるように書いていきます。

#yps1 #task2 について

yotaroさん(@yotaro__ok)がTwitter上で開いてくださっている「yps1」というプログラミングスクールに参加(併走)しています!

ほかにもやるべきことたくさんあるんですが、どうしても学びたいので深夜のごほうびとして少しずつ進めています(´・ω・`)w

今回は#task2です。

ど初心者ゆえ、誰よりも初歩的な、用語やコマンドのアウトプットをしていきたいと思います。(もし、わたしのような初心者の方が#task2をやる場合、この用語を軽く確認するとスムーズかと思います🙇‍♀️)

前回の#task1 はこちらにまとめました。

#task2 のゴール

このスクールの(仮)カリキュラムは、

  1. GitHubアカウント作成
  2. AWSアカウント作成
  3. EC2上にCentOS7でインスタンス作成
  4. SSH接続、環境設定、アップデート(←前回ここまで)
  5. MySQL5.7をインストール、設定
  6. Nginx1.8をインストール、設定
  7. PHP7.3をインストール、設定
  8. Laravel7をインストール、設定
  9. Welcome画面表示(←今回ここまで)
  10. SQLでテーブル作成
  11. バッチ作成
  12. 簡単なテストWEBアプリケーション作成
  13. Bootstrapの利用
  14. MVCでWEBアプリケーション作成
  15. その他

となっており、今回の#task2では「5.MySQL5.7をインストール」から「9.Welcome画面表示」までをおこないます。

#task2の進め方はyotaro先生のページをどうぞ!

わからない用語を調べる

前回のtask1に引き続き、わからない単語をまとめていきます。(そこからかよ!というツッコミはなしでお願いします(´;ω;`)w)

自分なりにまとめたので、もし間違えていたらご指摘いただけると幸いです。

MySQL5.7

データベース管理システムの一つ。世界で多くの企業が使っていて、大量のデータを安全かつ高速に扱うことができる。データベースとは、”検索や蓄積が容易にできるよう整理された情報の集まり。”(wikipediaより)

また、実務では「LAMP環境」を構築することが多いので扱えると◎(サーバー構築の費用が非常に安い)

LAMP環境 = Linux + Apache+ MySQL + PHP(またはRuby)

詳しくはこちらのサイトがわかりやすいです。

Nginx(エンジンエックス)

Webサーバーのソフトのこと。

コンピュータにnginxを入れると、そのコンピュータはWebサーバとしてのお仕事ができるコンピュータになります。
引用:https://wa3.i-3-i.info/word12859.html

Laravel(ララベル)

PHP主流のフレームワーク。

PHPーFPM

PHPを実行するために必要なもの。FPMとは、FastCGI Process Managerの略。

プログラム動作速度の向上及びサーバ負荷の低下が可能である

引用:https://hacknote.jp/archives/27419/

MySQL/Nginx/PHP/Laravelの設定 #task2をやる

ここからは、実際に#task2をおこなった備忘録です。

ここでは、コマンドの意味と、自分がハマったところを主にまとめます。

MySQL5.7のインストール、設定

MySQLのインストール・設定をおこなっていきます。

まずは、EC2にSSHでログインします。

ssh centos@[パブリックID] -p [ポート番号] -i ~/.ssh/XXX.pem

最初、ポート番号抜きでやっていて、何度やっても接続できなくてしょっぱなからハマりました…。

ログインできたか確認

whoami

centosと返ってくればOK

インストール

MySQL公式のyumリポジトリを利用して、MySQLをインストールします。

sudo yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm 
sudo yum install -y mysql-community-server -y

sudo:他のユーザー権限でコマンドを実行する
yum localinstall [上記URL]:MySQL の yum リポジトリを追加する
yum install パッケージ名 :パッケージをインストールする

インストールできたか&動作確認

mysqld --version

sudo systemctl enable mysqld
sudo systemctl start mysqld
sudo systemctl status mysqld
sudo systemctl stop mysqld

上のコマンドで、バージョンが確認できる=インストールOK

下のコマンドで、動作を確認。エラーが出なければOK

MySQLにログイン

sudo cat /var/log/mysqld.log | grep -i root
root@localhost: パスワード // ←初期パスワードが表示されます

cat:連携する
grep:ファイル内の文字列を検索する
grep -i :大文字と小文字を区別しないで検索

・MySQLの起動

sudo systemctl start mysqld

パスワード変更

mysql -u root -p

mysql -u root:MySQLサーバーにrootユーザーでログインする(接続する)
-p:パスワードを設定する

・このあと、以下のプロンプト(動作をするように促すもの)が表示される

SET PASSWORD = PASSWORD('パスワード');

・”パスワードを変更して〜!”と出るので、変更

// パスワード変更 ※8文字以上で英大文字・小文字・数字・記号を混ぜる // # (ハッシュ) はエラーの元になるので使用しない方が吉 (yotaroさんの手順書より

・変更できたらexitで抜ける

ちなみに、mysqlコマンドの理解が深まるサイトです↓

こちらによると、ターミナルで mysql>と出ているとMySQLコマンドが受付けされている状態。

文字コード設定

my.cnfを開いて、追記をおこなう。

sudo vi /etc/my.cnf

// 最終行に以下を追記

character-set-server=utf8mb4

MySQLを再起動&ログイン

sudo systemctl restart mysqld
mysql -u root -p

文字コード設定の確認

mysql> プロンプトの後に

show variables like "chara%";

で設定確認ができる。

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

赤字のように変わっていればOK!

Nginx1.8のインストール、設定

Nginx(エンジンエックス)のインストール、設定をおこなっていきます。
Nginxとは、用語のところで書きましたが、Webサーバーのソフトのことでした…!

ファイルを作成

sudo vi /etc/yum.repos.d/nginx.repo
以下を入力↓
[nginx]
name=nginx repo
baseurl=https://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

Nginxのインストール

sudo yum install nginx -y //インストール
nginx -v //バージョン表示

sudo systemctl enable nginx//自動起動設定

バージョンが表示されればインストールOK

AWSの画面から、インバウンドルール追加

AWSの画面で、インバウンドルールの追加→「HTTP」「HTTPS」をそれぞれ追加します。

(画像は、yotaroさんの手順から拝借しました)

まるで囲った部分を指定して作成すればOKです。

Nginxの起動

ターミナルに戻ってNginxを起動します

sudo systemctl start nginx

ここまでできたら、ブラウザにパブリックID(インスタンスの画面からコピー)を入力すれば、ブラウザからアクセスできる!

Welcomeー!!!

Nginxの設定

sudo mkdir -p /var/www/html
sudo chown -R centos:nginx /var/www
sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.org
sudo vi /etc/nginx/conf.d/default.conf

mkdir:ディレクトリの作成
chown -p:指定したディレクトリとそれ以下のディレクトリやファイルの所有権を変更
→ここでは、所有権を「nginx」、var/www以下のディレクトリやファイルの権限を変更 という意味。
cp:[コピー元]を[コピー先]にコピーする
vi ファイル名:編集対象のファイルを開く

chownコマンドについて詳しくはこちらがわかりやすいです!

・ファイルを開いたら、変更をおこなう

#root   /usr/share/nginx/html;
↓
root   /var/www/html; //こちらに変更

・Nginx構文チェック

sudo nginx -t

・Nginx再起動

sudo systemctl restart nginx

ここまできたら、先ほどのブラウザを更新→404エラーになっていればOK

PHP7.3のインストール

PHPのインストールです。

//EPELとRemiをインストール
sudo yum install epel-release -y
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum update -y

//ここからPHPのインストール
sudo yum -y install --enablerepo=epel,remi,remi-php73 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-fpm php-mysql php-mysqlnd zip unzip
php -v

【yumの外部リポジトリ EPELとRemiをインストール】

yumのデフォルトリポジトリはパッケージが古いことが多く、最新版のパッケージを使いたい時はEPELとRemiを使う方法がある。

・epel-release:yum用のリポジトリ。これをインストールすることで、EPELという企業用の高品質なパッケージを使用することができる。
・sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
→こちらでRemiをインストールできる。最新バージョンのパッケージが豊富

PHPーFPMの設定

sudo cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.org
sudo vi /etc/php-fpm.d/www.conf
以下を変更↓

user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Nginxの設定

sudo vi /etc/nginx/conf.d/default.conf

configを開いて、以下を変更・追記していく。(手順より)

// 以下を変更してください
index  index.php index.html index.htm;
// 以下を追記してください
try_files $uri $uri/ /index.php?$query_string;

// 以下を追記してください
location ~ \.php$ {
    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;
}
https://twitter.com/yotaro__ok/status/1286316970971811841?s=20

Twitterにスクショ載っていた( ´・ᵕ・ )優しい!

保存して閉じる。

・ディレクトリとファイルの権限を変更

sudo chown -R centos:nginx /var/www/

先ほども出てきましたchown -R!
/var/www以下のディレクトリのファイルの権限を変更できるのでした..!

・php-fpmの自動起動設定をする

sudo systemctl enable php-fpm

 ・Nginx再起動とphp-fpm起動

sudo systemctl restart nginx
sudo systemctl start php-fpm

php情報を表示・・・ブラウザに表示させる

・index.htmlを作成

vi /var/www/html/index.php

作成したファイルに以下を入力

<?php
echo phpinfo();
?>

Esc :wqで保存終了

・再起動 

sudo systemctl restart nginx
sudo systemctl restart php-fpm

ブラウザでページの更新をして、ブラウザの404ページ→PHP情報に変わっていれば完了!

Lalavelのインストール

最後に、メインのLalavelをインストールしていきます!

Comporserのインストール

comporserとは、PHP のパッケージ管理ツール。
PHP を使う時に必要なライブラリをまとめて管理している。

(↓コマンド一覧)

cd /tmp
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer

(↓コマンドの意味の説明入れます)

/tmpディレクトリに移動

cd /tmp

Comporserをダウンロード、インストール

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"

コマンドとして使うために、comporserのファイルを/bin以下に移動+権限変更

sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer

新規プロジェクトを作成する

cd /var/www/html
composer create-project --prefer-dist laravel/laravel yps

htmlディレクトリ内に、
prefer-dist というパッケージのmasterバージョンを使って、laravel/larevel/ypsに新規プロジェクトを作成せよ、という意味

APP-KEYを設定する

セキュリティー上重要なところに使われるKEY

cd yps
cp -p .env.example .env
php artisan key:generate

→ypsディレクトリに移動→KEYを作成→env.ファイルにAPP -KEYを設定する

//env の中の2点を変更する
APP_URL=ブラウザのURL //パブリックID
DB_PASSWORD="パスワード"

NPM,Comporserをインストール、ファイルの権限変更

sudo yum install npm node -y
composer install
npm install
sudo chown -R centos:nginx /var/www/
sudo chmod -R 777 storage/ bootstrap/cache/

これで完了です!!

Laravel7のWelcome画面表示

configを開いて設定変更

sudo vi /etc/nginx/conf.d/default.conf

configを開いて、以下を変更(注意:2箇所です)

/var/www/html;
↓
// 以下に変更
/var/www/html/yps/public;

再起動

sudo systemctl restart nginx
sudo systemctl restart php-fpm

大喜利に参加

cd /var/www/html/yps/
vi resources/views/welcome.blade.php

このファイルをいじれば…

https://twitter.com/fuwafuwahappy/status/1292213999090753537?s=20

完成です〜!!

VSCodeにSSH接続

VSCodeからSSH接続をすると、VSCode上でファイルを編集できて便利です。

↑こちらのとおりに進めればできます!

設定の変更内容は以下のとおりです。

Host yps
HostName XX.XX.XX.XX
User centos
Port XXXXX
IdentityFile /フルパス/XXXX.pem

ちなみにフルパスは、macだとこんなに簡単にgetできますよ〜!

X

あとがき

Lalavelを無事にインストールすることができました!

ただ一人で独学していたら、Lalavelを触っていたかは謎です。多分触ってないと思う。

yotaroさんに感謝〜( ﹡ˆoˆ﹡ )次回も、ゆっっっくり追いかけます。

*ただいま、もりけん塾に所属しています!

Thanks:師匠「もりけんさん」(@terrace_tec)

もりけんさんのHPはこちら