今日のアウトプットは?
今日は
MySQL/Nginx/PHP/Laravelの設定 #yps1 #task2
をアウトプットします!
こんにちは。独学でプログラミングを学習しているharuです。
2歳0歳の育児をしながら、22時〜1時に独学しています!
わかったことや、気付きをログに残します。
同じく初学者の人が、これをみてインプットや復習ができるように書いていきます。
#yps1 #task2 について
yotaroさん(@yotaro__ok)がTwitter上で開いてくださっている「yps1」というプログラミングスクールに参加(併走)しています!
ほかにもやるべきことたくさんあるんですが、どうしても学びたいので深夜のごほうびとして少しずつ進めています(´・ω・`)w
今回は#task2です。
ど初心者ゆえ、誰よりも初歩的な、用語やコマンドのアウトプットをしていきたいと思います。(もし、わたしのような初心者の方が#task2をやる場合、この用語を軽く確認するとスムーズかと思います🙇♀️)
前回の#task1 はこちらにまとめました。
#task2 のゴール
このスクールの(仮)カリキュラムは、
- GitHubアカウント作成
- AWSアカウント作成
- EC2上にCentOS7でインスタンス作成
- SSH接続、環境設定、アップデート(←前回ここまで)
- MySQL5.7をインストール、設定
- Nginx1.8をインストール、設定
- PHP7.3をインストール、設定
- Laravel7をインストール、設定
- Welcome画面表示(←今回ここまで)
- SQLでテーブル作成
- バッチ作成
- 簡単なテストWEBアプリケーション作成
- Bootstrapの利用
- MVCでWEBアプリケーション作成
- その他
となっており、今回の#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の略。
プログラム動作速度の向上及びサーバ負荷の低下が可能である
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; }
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
このファイルをいじれば…
完成です〜!!
VSCodeにSSH接続
VSCodeからSSH接続をすると、VSCode上でファイルを編集できて便利です。
↑こちらのとおりに進めればできます!
設定の変更内容は以下のとおりです。
Host yps HostName XX.XX.XX.XX User centos Port XXXXX IdentityFile /フルパス/XXXX.pem
ちなみにフルパスは、macだとこんなに簡単にgetできますよ〜!
あとがき
Lalavelを無事にインストールすることができました!
ただ一人で独学していたら、Lalavelを触っていたかは謎です。多分触ってないと思う。
yotaroさんに感謝〜( ﹡ˆoˆ﹡ )次回も、ゆっっっくり追いかけます。
*ただいま、もりけん塾に所属しています!
Thanks:師匠「もりけんさん」(@terrace_tec)
もりけんさんのHPはこちら