AWSでLinuxの環境設定をする #yps1 #task1 【day83】

AWS

プログラミング独学day83のアウトプットは?

今日は

【#yps #task1 】AWSでLinuxの環境設定

をアウトプットします!

 

 

 

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

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

#yps1 #task1について

yotaroさん(@yotaro__ok)がTwitter上で開いてくださっている「yps1」というプログラミングスクールに参加(併走)しました!副学長は、あぷり子先生です(@webappli_cot)

ほかにもやるべきことたくさんあるんですが、どうしても学びたかったので土日の深夜のごほうびとして許して…(´・ω・`)w

今回は#task1です。たぶん参加者の中でわたしが一番の初心者な気がします…;

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

 

#task1のゴール

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

  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. その他

となっており、今回の#task1では「4. SSH接続、環境設定、アップデート」までをおこないます。

 

詳しくは、yotaro先生のスクールの概要をどうぞ。

 

わからない用語を調べる

まず、大量にあるわからない用語を調べます。(そこからかよ!というツッコミが来そうなくらい、わからないことだらけです。w)

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

AWS

アマゾン・ウェブ・サービスの略。簡単にいうと、Amazonがおこなっているクラウドサービスのことです。

このサービスには100以上の種類があって、今回おこなう「仮想サーバーの構築」のほかに「データ保存」や「コンテンツ配信」などたくさんのことができます。

仮想サーバー

1つのPCで、複数のOSを動かす仕組みのこと。

OSとは、オペレーションシステムの略で、コンピューターを動かすためのベースとなるソフトのこと。(Windows・macOS・Linuxなど。)

わたしの場合は、もともとmacOSで、仮想サーバーでLinuxを使おうとしているわけです。

Linux

OSのひとつ。オープンソースと呼ばれる、無料で使えるプログラム。

・無料
・CUIを使って操作する
・OSの中身を書き換えられる(windowsはできない)
・サーバーを自由に何台でも立てられる

EC2

AWS上で仮想サーバーを構築できるシステムのこと。

ちなみに、EC2内での仮想サーバーの単位は「インスタンス」。

→今回のtask1では、「EC2上にインスタンスを作成」するわけです。
最初は、なんのこっちゃでしたが調べたら理解できましたw

 

CentOS

Linuxの種類のひとつで、セントオーエス と読む。企業でよく使われるスタンダードなもの。

SSH

Secure Shellの略。

安全に通信を行って、ネットワークに接続された機器を遠隔操作するための通信手段(プロトコル)の1つです。「通信する側とされる側で、SSHでやり取りをしよう!」と取り決めることで安全に通信を行います。

引用:https://qiita.com/Pana/items/70cc74cd20c8b5b4fe15

SELinux

Linuxのセキュリティを管理する機能。

AWSでLinuxの環境設定 #task1をやる

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

こちらに沿って進めれば、Linuxの環境設定をおこなうことができます。ここに書かれているコマンドを打てば、初心者でも完了することができました!

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

1.GitHubアカウントの作成

わたしはもともと持っていたので飛ばします。

持っていない場合は、こちらをどうぞ!

2.AWS無料枠アカウントの作成

こちらも割愛。yotaro先生の手順で説明があります。

3.EC2上にCentOS7でインスタンス作成

こちらの意味は、先ほどの用語の意味を見れば理解できるかと思います。(わかんなかったの、わたしだけかも。w)

こちらも、yotaro先生の手順のとおり進めれば簡単です。

4.SSH接続、環境設定、アップデート

ここからは、ターミナルでの作業が入ってきます。

Linuxでは、ターミナル上でvimを使って操作します。
Linux標準教科書(無料)の6章でvimのコマンドが勉強できます。

コマンドの説明を主にしていきます。
詳しい流れは、yotaroさんの手順からどうぞ。

pemファイルのアクセス権を変更する

EC2にSSH接続するには、手順3で作ったプライベートキー(鍵)のファイルを使います。

xxxxx.pem(xxxには任意の名前)というファイルを、~/.sshのディレクトリ配下に置く必要があります。

chmod 600 ~/Desktop/XXXX.pem

chmod:ファイルのパーミッション属性を変更するコマンド。
→ファイルやディレクトリにアクセスできるように、パーミッションを600に変更する

ちなみに600という数字は、

6: (自分)読み取り権限4 +書き込み権限2
0: (仲間)権限なし
0: (他人)権限なし

という意味だそうです。

パーミッションについてはこちらを参考にしました↓

 

ディレクトリ作成

mkdir ~/.ssh/

mkdir:ディレクトリを作成

この辺は、コマンドラインの知識をまとめたのがあるのでもし良ければどうぞ↓

 

ディレクトリへの権限の変更

chmod 700 ~/.ssh/
7: (自分)読める4 +  書ける2 + 実行1
0: (仲間)権限なし
0: (他人)権限なし

 

デスクトップにコピーする

cp ~/Desktop/XXXX.pem ~/.ssh/

 

AWSのEC2にログインする

ssh centos@xx.xx.xx.xx -i ~/.ssh/XXX.pem

ssh [IPアドレス] -i秘密鍵ファイル 
→SSHでログイン

 

ログインできているか確認する

whoami

whoami:ログインしているユーザー名を表示

centosとかえってくればOK

 

SELinuxを無効化する

これを無効化しないと、アクセス制限によってインストールとか運用でつまずくそう。

sudo setenforce 0
sudo vi /etc/selinux/config

sudo:他のユーザー権限でコマンドを実行する
setenforce 0 :SELinuxを一時的に無効化する

下のコマンドは、「config」というファイルをviで開くという意味。

configを開いて、

config内の「SELINUX=enforcing」を「SELINUX=disabled」に変更してください :wq でviを終了します

yotaroさんの手順より

viで編集するときは、iを押してインサートモードにしてから編集します。
編集を終えるときは、esc を押してから:wq を打ってエンターです!

vimの操作はよろしければこちらをどうぞ↓

 

無効化されたか確認する

getenforce

Permissive が表示されれば無効化OK

手順に沿ってAWSでインバウンドルールを追加

手順の通りです。

ターミナルでconfigを再度開く

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
sudo vi /etc/ssh/sshd_config

vim操作で2箇所書き換える

⑨で設定したポート番号に書き換えます。#をとるのを忘れない!

#Port 22
↓
Port XXXXX

 

次に、rootユーザーからのログイン禁止する。

#PermitRootLogin yes
↓
PermitRootLogin no

rootユーザーとは、なんでもできてしまう最高権限を持ったユーザーのこと。普段は、一般ユーザーとしてログインして必要なときだけ、root権限を使うのが良いらしい。

変更したら、esc + :wq エンター!でvi終了

 

変更が正しいか確認する→再起動

sudo sshd -t
sudo systemctl restart sshd

何も表示されなければOK

わたしは、ここでこんな文言が出ました…

どうやら権限を変更して欲しいらしい。。上記のsudoコマンドで権限を0600に変更しました。

yotaroさんに確認したところ、

x.com

とのことです(`・ω・´)愚痴…?w

 

スワップ領域を作成する

スワップ領域とは、

使っていないメモリの内容を一時的にしまっておくための場所

引用:https://wa3.i-3-i.info/word1721.html

コマンドは以下

sudo -s /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo -s /sbin/mkswap /var/swap.1
sudo -s /sbin/swapon /var/swap.1

 

手順に沿ってAWSでインバウンドルールを編集

手順の通りです。

別ターミナルを開いて変更したport番号でログインする

ssh centos@xx.xx.xx.xx -p XXXXX -i ~/.ssh/XXX.pem

 

ここで一応ログインできたか確認した後、exit!!!!しました(ゴール)↓

お疲れさまでした!

あとがき

いつか挑戦したいと思っていたLinux。
yotaroさんとあぷり子さんのおかげで、こんなど素人でも1歩を踏み出すことができました!感謝です。ありがとうございます!
ただ、まだまだわからないコマンドや用語が多いので、ひき続き調べながらゆっくり並走させていただきたいと思います。
よろしくお願いいたします!

 

*もりけん塾に所属しています

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

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