プログラミング独学day83のアウトプットは?
今日は
【#yps #task1 】AWSでLinuxの環境設定
をアウトプットします!
こんにちは。プログラミングでweb制作ができるようになりたいharuです。
2歳0歳の育児をしながら、22時〜1時に独学しています!
わかったことや、気付きをログに残します。
同じく初学者の人が、これをみてインプットや復習ができるように書いていきます。
#yps1 #task1について
yotaroさん(@yotaro__ok)がTwitter上で開いてくださっている「yps1」というプログラミングスクールに参加(併走)しました!副学長は、あぷり子先生です(@webappli_cot)
ほかにもやるべきことたくさんあるんですが、どうしても学びたかったので土日の深夜のごほうびとして許して…(´・ω・`)w
今回は#task1です。たぶん参加者の中でわたしが一番の初心者な気がします…;
ど初心者ゆえ、誰よりも初歩的な、用語やコマンドのアウトプットをしていきたいと思います。(もし、わたしのような初心者の方が#task1をやる場合、この用語を軽く確認するとスムーズかと思います🙇♀️)
#task1のゴール
このスクールの(仮)カリキュラムは、
- GitHubアカウント作成
- AWSアカウント作成
- EC2上にCentOS7でインスタンス作成
- SSH接続、環境設定、アップデート(←今回ここまで)
- MySQL5.7をインストール、設定
- Nginx1.8をインストール、設定
- PHP7.3をインストール、設定
- Laravel7をインストール、設定
- Welcome画面表示
- SQLでテーブル作成
- バッチ作成
- 簡単なテストWEBアプリケーション作成
- Bootstrapの利用
- MVCでWEBアプリケーション作成
- その他
となっており、今回の#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でやり取りをしよう!」と取り決めることで安全に通信を行います。
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という数字は、
0: (仲間)権限なし
0: (他人)権限なし
という意味だそうです。
パーミッションについてはこちらを参考にしました↓
ディレクトリ作成
mkdir ~/.ssh/
mkdir:ディレクトリを作成
この辺は、コマンドラインの知識をまとめたのがあるのでもし良ければどうぞ↓
ディレクトリへの権限の変更
chmod 700 ~/.ssh/
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を終了します
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さんに確認したところ、
とのことです(`・ω・´)愚痴…?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!!!!しました(ゴール)↓
お疲れさまでした!
あとがき
*もりけん塾に所属しています
師匠「もりけんさん」(@terrace_tec)
もりけんさんのHPはこちら