Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サーバ構築の勘所が多分わかるハンズオン

 サーバ構築の勘所が多分わかるハンズオン

Yoshiki Kobayashi

September 05, 2020
Tweet

More Decks by Yoshiki Kobayashi

Other Decks in Programming

Transcript

  1. 1) 本日作る環境 & アプリケーション説明 2) サーバの概念 利用するVagrantfileについて 3) (なんとなく使うと)とっても危険なrootユーザ 4)

    必要パッケージのインストール 5) Systemdってなんだ 6) 必要パッケージのインストール② 7) SSHポートフォワーディングとは 8) アプリケーションのデプロイ 9) パーミッションとオーナー 10) トラブルシューティング 11) 最後に アジェンダ 10
  2. スーパーユーザー(英語: Superuser)とは、多くのオペレーティングシ ステムでシステムアドミニストレータが制御する特殊なユーザーアカウン トを指す。オペレーティングシステム (OS) によって実際の呼称は異な り、ルート (root)、アドミニストレータ (administrator)、アドミン (admin)、スーパーバイザ

    (supervisor) などとも呼ばれる。場合によっ ては名称は重要ではなく、ユーザーのプロファイルで権限フラグを設定 することで特権的機能を実行できることもある(管理者権限などと呼ば れる)。 by wikipedia rootユーザとは 34
  3. こんな感じになる MySQL apache Redis systemctl httpd start systemctl mysql start

    systemctl redis-server start httpd -k start mysql.server start redis-server 79
  4. いざMySQLインストール 上からコマンドを実行していくのだ $ sudo yum install -y https://downloads.mysql.com/archives/get/p/23/file/mysql-community-common-5.7.30-1.el7.x86_64.rpm $ sudo

    yum install -y https://downloads.mysql.com/archives/get/p/23/file/mysql-community-libs-5.7.30-1.el6.x86_64.rpm $ sudo yum install -y https://downloads.mysql.com/archives/get/p/23/file/mysql-community-client-5.7.30-1.el6.x86_64.rpm $ sudo yum install -y https://downloads.mysql.com/archives/get/p/23/file/mysql-community-server-5.7.30-1.el7.x86_64.rpm 90
  5. ポートフォワードのイメージ ローカルマシン (MacなりWindowsなり) Vagrantfileより起動した 仮想マシン イメージつきやすいように仮想マシンを別の場所に置いてるけどホントはローカルの一部 SSHトンネル SSH接続した時に 土管ができるイメージ IP:192.168.200.150

    http://localhost:3000/ で Railsに接続や Railsの人 ローカルマシン(の3000ポート)への通信をVagrant側に通信を転送するの が、SSHトンネルの役目。 つまり、左の人が http://localhost:3000/ にアクセスすると、 Vagrant内の3000ポートに通信が転送されるように設定されていた 107
  6. ポートフォワードの応用 ローカルマシン (MacなりWindowsなり) AWSとかその辺のサーバ 転送先はSSHでさえ繋がってしまえばVagrantでなくても応用可能なのです SSHトンネル SSH接続した時に 土管ができるイメージ IP:123.123.123.123 http://localhost:3000/

    で Railsに接続や Railsの人 外のサーバにSSH転送をしてあげることで、 localhost:3000で外の環境に接続することもできる!!!(SSHが繋がってれば) ぶっちゃけあんま使わないけど 109
  7. SSHコマンドで何をしていたか 一個一個分解して考える $ ssh -L 8080:localhost:80 [email protected] -L ポート転送(SSHトンネル)を設定するオプション 8080

    転送元のポートを設定 localhost 転送元の情報 80 転送先のポート vagrant@~~~~ 転送先の情報兼ssh接続先 114
  8. つまり…? こういうこと $ ssh -L 8080:localhost:80 [email protected] localhost の 80ポート(http)

    への通信を vagrant内 の 8080ポート へ転送する 設定を入れた状態で SSH接続するよ!!!!!!! (いやカラフルで逆にわかりづらいな) 115
  9. ① $ ssh -L : : @192.168.0.1 ② $ ssh

    -L 1500:localhost:2000 [email protected] ③ $ ssh -L 13306:1.1.1.1:3306 [email protected] それぞれのコマンドを埋めてみよう ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ①’ ②’ ③’ ④’ ⑤’ 117
  10. ① $ ssh -L 3000:localhost:3000 [email protected] ② $ ssh -L

    1500:localhost:2000 [email protected] ③ $ ssh -L 13306:1.1.1.1:3306 [email protected] それぞれのコマンドを埋めてみよう 119
  11. ① cp test.txt hoge.txt ② cp test.txt hoge/fuga.txt ③ cp

    ~/test.txt ~/hoge/./ Q.このコマンドの実行結果を答えよ 131
  12. ① ディレクトリ内のtest.txt を hoge.txt って名前でコピー ② ディレクトリ内のtest.txt を hogeディレクトリ内、fuga.txtって名前でコピー ③

    ホームディレクトリ内のtest.txt を ホームディレクトリ内の hogeディレクトリ内に test.txt って名前でコピー A. 正解は 132
  13. コピー元のディレクトリ 各々 git clone したディレクトリを指定する この例だと、デスクトップ直下に git clone を 実行しているので、

    ~/Desktop/linux-handson/src/* って感じになる。 もちろん、デスクトップ直下にcloneしていない場合は 適宜読み替えてください! 139
  14. アスタリスクを使わないと $ scp -r ~/Desktop/linux-handson/src/CreateHtml.php ${コピー先} $ scp -r ~/Desktop/linux-handson/src/DBSettingConstructor.php

    ${コピー先} $ scp -r ~/Desktop/linux-handson/src/PDOWrapper.php ${コピー先} $ scp -r ~/Desktop/linux-handson/src/create.php ${コピー先} $ scp -r ~/Desktop/linux-handson/src/delete.php ${コピー先} $ scp -r ~/Desktop/linux-handson/src/index.php ${コピー先} いや、めちゃくちゃめんどくさいな 142
  15. パーミッション(オーナー) is これ!!!!!!! ①ディレクトリとかファイルに 対してどんな権限(書き込み とか読み込みとか)があるか ②どのグ ループが 所有して いるか

    ③だれが 所有して いるか パーミッションの細かい説明はどこかの偉い人に任せるとして、 今回は手っ取り早くデプロイしたいので、 ②③のオーナーを変更しちゃいます! 158
  16. ってなわけで /var/www/html のディレクトリを vagrant ユーザでも操作できるように変更する vagrant にログイン後にこのコマンドを実行! $ sudo chown

    vagrant:vagrant /var/www/html chown は ファイルとかディレクトリのオーナー、 オーナーグループを変更するコマンド 163
  17. • サーバ、rootユーザの概念、rootユーザの権限 • Systemdの概念、簡単な使い方 • パッケージマネージャの概念、簡単な使い方 • ミドルウェアのインストール • ssh、scpコマンドの使い方

    • パーミッションの概念、解消方法 • エラーの読み方、慣れ方 • LAMP環境の構築 • 初学者がLinuxサーバ構築のとっかかりとなるちょっとした勘所 皆さんの今後の知識に繋がれば、とても嬉しいです。 本日勉強したこと 181