uetennis’s diary

プログラミングについて学んだ事やライフハックについてかきます

5/6 gitの勉強に集中する

5/6 gitの勉強に集中する

目標・やりたい事は何か?何に興味あるか?

git

  • Git clone 作る
  • ブランチの仕組みを理解して作る
  • LTとエディターの勉強は休む。
  • 今日はプラクティスに集中する、

日常メモ・ちょっとした事・何を感じたか?

  • 色々な事を勉強するとあまり集中できないかも。。

何を学んだか?・何がまだ理解できてないのか?

  • Git cloneを作らずに、別のディレクトリからpushして嵌った。
  • そもそもgitの概念を理解してないからもっと理解を深めるようにしっかり読もう。

5/5 勉強メモと失敗した事

git

クローンしたリポジトリからプッシュする

(m・_・bp) mbp-2 16:13 ~/tutorial % ls
sample.txt
#sampletxtaddに文章追加
(m・_・bp) mbp-2 16:13 ~/tutorial % vim sample.txt
#インデックスに登録
(m・_・bp) mbp-2 16:15 ~/tutorial % git add sample.txt
#ファイルにコミット
(m・_・bp) mbp-2 16:15 ~/tutorial % git commit -m "addの説明を追加"
[master 3830d53] addの説明を追加
 1 file changed, 1 insertion(+)
#リモートリポジトリにプッシュ
(m・_・bp) mbp-2 16:16 ~/tutorial % git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 300 bytes | 300.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0

To uetennis.git.backlog.com:/AAA/tutorial.git
   6b32dd2..3830d53  master -> master

リモートリポジトリからプルする

#リモートリポジトリにプッシュした内容を、「tutorial」に取り込む
(m・_・bp) mbp-2 16:56 ~/tutorial % git pull origin master
From xxxxxxxxxxxxxxxxx.com:/AAA/tutorial
 * branch            master     -> FETCH_HEAD

Already up to date.
#履歴をを確認
(m・_・bp) mbp-2 16:57 ~/tutorial % git log
commit 3830d532db6b0c4dfd748f98ef3adbaa9701c73f (HEAD -> master, origin/master)
Author: yoshihiro <xxxxxxxx@gmail.com>
Date:   Tue May 5 16:16:31 2020 +0900

    addの説明を追加

commit 6b32dd2d7d53ffb2b0eb7001fa37ba5842d16c39
Author: yoshihiro <xxxxxxx@gmail.com>
Date:   Mon May 4 16:39:23 2020 +0900

    <first commit>

(m・_・bp) mbp-2 16:58 ~/tutorial % cat sample.txt
git is good
tutorial add

競合状態でプッシュする

clone作ってないから失敗

#内容追加
(m・_・bp) mbp-2 16:59 ~/tutorial % vi sample.txt
1 git is good
2 tutorial add
3 commit    wow

(m・_・bp) mbp-2 16:58 ~/tutorial % cat sample.txt
git is good
tutorial add
(m・_・bp) mbp-2 16:59 ~/tutorial % vi sample.txt
(m・_・bp) mbp-2 17:44 ~/tutorial % cat sample.txt
git is good
tutorial add
commit    wow
(m・_・bp) mbp-2 17:28 ~/tutorial % git add sample.txt
(m・_・bp) mbp-2 17:43 ~/tutorial % git commit -m "commitの内容追加"
[master 39726fb] commitの内容追加
 1 file changed, 1 insertion(+)

#tutoria2ディレクトリの作業
(m・_・bp) mbp-2 17:45 ~/tutorial % cd
(m・_・bp) mbp-2 17:47 ~ % mkdir tutorial2
(m・_・bp) mbp-2 17:47 ~ % cd tutorial2
(m・_・bp) mbp-2 17:47 ~/tutorial2 % vi sample.txt
(m・_・bp) mbp-2 17:48 ~/tutorial2 % cat sample.txt
yossiiiiのGitコマンド
add 変更をインデックスに登録する
pull リモートリポジトリの内容を取得する
#tutorial2でコミット
(m・_・bp) mbp-2 19:04 ~/tutorial2 % git commit -m "pullの説明追加"
[master (root-commit) b82e34a] pullの説明追加
 1 file changed, 3 insertions(+)
 create mode 100644 sample.txt


(m・_・bp) mbp-2 19:10 ~/tutorial2 % git remote add origin uetenxxxxxxxxxx.com:/AAA/tutorial.git

(m・_・bp) mbp-2 19:17 ~/tutorial2 % vim sample.txt
(m・_・bp) mbp-2 19:21 ~/tutorial2 % git commit -m "addの説明を追加2"
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)  (use "git restore <file>..." to discard changes in working directory
)
        modified:   sample.txt

no changes added to commit (use "git add" and/or "git commit -a")
(m・_・bp) mbp-2 19:22 ~/tutorial2 % git restore sample.txt
(m・_・bp) mbp-2 19:24 ~/tutorial2 % git add sample.txt (m・_・bp) mbp-2 19:24 ~/tutorial2 %  git commit -m "addの説明を追加2"

On branch master
nothing to commit, working tree clean

LTの構成を考えたい。

5/5 LTの構成を考えたい。

目標・やりたい事は何か?何に興味あるか?

LTの準備・調べたい事

  • gitとgithubの歴史
  • 人間ドラマ
  • スライドの構成

gitの勉強

  • サル先生のgit入門で勉強してgit理解したい

vscode

  • ショートカット覚える
  • Emacsについて調べる

日常メモ・ちょっとした事・何を感じたか?

  • 何かを作りたくてエンジニアの勉強したのだけれど、だんだんと技術に触る事が楽しくなってきたし、技術を触る事が目的になってきたかも。
  • 運動不足解消が目的で初めたテニスなのに、いつの間にかテニスをやる事が目的になった経験があるから、今エンジニアの勉強やっている経験と似ている感覚!
  • RanCatかわいい!癒やされる!
  • HyperSwithは設定しっかりすると便利

5/4 勉強メモ

ファイルをコミット

# tutorialディレクトリの中に「sample.txt」という名前でテキストファイルを作成
(m・_・bp) mbp-2 16:04 ~/tutorial % vim sample.txt
# statusコマンドを実行してtutorialディレクトリの状態を確認
(m・_・bp) mbp-2 16:07 ~/tutorial % git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    sample.txt    #履歴の追跡対象になっていないファイル

nothing added to commit but untracked files present (use "git add" to track)

#ファイルをインデックスに登録するにはaddコマンドを使用
(m・_・bp) mbp-2 16:08 ~/tutorial % git add sample.txt
# パラメータに「.」を指定すると、すべてのファイルをインデックスに登録することができる
(m・_・bp) mbp-2 16:12 ~/tutorial % git add .
# インデックスに追加されたか確認
(m・_・bp) mbp-2 16:25 ~/tutorial % git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
    new file:   sample.txt   #インデックスに追加されている
# commitする
(m・_・bp) mbp-2 16:25 ~/tutorial % git commit -m "<first commit>"

[master (root-commit) 6b32dd2] <first commit>
 1 file changed, 1 insertion(+)
 create mode 100644 sample.txt
#  確認
(m・_・bp) mbp-2 16:39 ~/tutorial % git status
On branch master
nothing to commit, working tree clean
# リポジトリの変更履歴を確認
(m・_・bp) mbp-2 16:40 ~/tutorial % git log
commit 6b32dd2d7d53ffb2b0eb7001fa37ba5842d16c39 (HEAD -> master)
Author: yoshihiro <xxxxxx@gmail.com>
Date:   Mon May 4 16:39:23 2020 +0900

    <first commit>

リモートリポジトリにプッシュ

# backlogにssh接続
(m・_・bp) mbp-2 20:31 ~/tutorial % ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxxxxyoshihiro/.ssh/id_rsa):
/Users/uekiyoshihiro/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users//.ssh/id_rsa.
Your public key has been saved in /Users/uekiyoshihiro/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:FToJ4RtgEC8WC87bJvgotil65x8bSMfEm08y4Oxtkq8 uekiyoshihiro@mbp-2.local
The keys randomart image is:
+---[RSA 3072]----+
|. +oo o.  .      |
|o. = + . o .     |
| o+ o = + .      |
|..o+ + = o       |
|.o o+ O S        |
| ooo = =         |
|o.. = = .        |
|+ + .+ +         |
|++ oEo+          |
+----[SHA256]-----+
#生成したSSH 鍵の公開鍵の内容はcatコマンドを実行し、中身をbacklogに貼り付け
(m・_・bp) mbp-2 20:32 ~/tutorial % cat ~/.ssh/id_rsa.pub
#  originという名前でリモートレポジトリを登録!
# リモートリポジトリのアドレスは名前を付けて記録できる。記録しておくと、pushするときには毎回長いリモートリポジトリのアドレスを入力する必要がなくなる。
# リモートリポジトリを追加するには、remoteコマンドを使用
(m・_・bp) mbp-2 20:07 ~/tutorial % git remote add origin uetennis@uetennis.git.backlog.com:/AAA/tutorial.git
#リポジトリのプッシュ
# 実行オプションで-uを指定すると、次回以降はそのブランチ名の指定を省略できる。けど一番最初、空のリモートリポジトリにpushするときはリモートリポジトリ名やブランチ名を省略できない
(m・_・bp) mbp-2 20:33 ~/tutorial % git push -u origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 225 bytes | 225.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0

To uetennis.git.backlog.com:/AAA/tutorial.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

参考URL

  1. サル先生のGit入門
  2. git



5/4 LTのテーマはgitとgithubについてにしようと思う(仮)

5/4 LTのテーマはgitとgithubについてにしようと思う(仮)

目標・やりたい事は何か?何に興味あるか?

LT

  • LTに向けての勉強と資料作りの内容を考える。
  • Keynoteにするかgoogleスライドにするか調べる。

    Git

  • サルでもわかるgit入門を通じてgitを理解したい
  • Gitの基本を理解したい

    VScode

  • Vscode実践ガイドを読み、vscodeでgitを使いたい。

    iterm2を勉強

  • 便利らしいから触ってみたい。

日常メモ・ちょっとした事・何を感じたか?

  • Rubymineをちょっとしたメモ帳にするのはあまり向いてないかも。音が気になる。(もしかしたら、vscodeとrubymine同時起動が原意だからかも)
  • そもそも自分のマシンスペックがあまり良くないかも。
  • Vimでメモ取ろうかと思ったが、vimrcの設定が読み込まれなくて、拡張があまり上手くできなかった。今まで通りVScodeでメモをとる。
  • VScode触りたての頃もそれはそれで、苦労したな。vscodeの操作を慣れる為に勉強のメモをしていたら、いつの間にか、メインになったかも。
  • 細かい所を気にしない性格だが、エンジニアにとってはマイナスになることが多いから、半年かけてエンジニアに向いている性格になりたい。
  • 勉強続けていたらだんだんそういう性格になるかも。(願望)
  • 上手くいかない時間がながければ、上手くいった喜びは大きいと感じた。
  • サル先生の博多弁、かわいい。
  • 今は、あえて就活活動するよりも勉強する事に集中しているけど、知人に心配されて理解を得られない事もあり、疲れるから買い物行く時やゴミ捨て行く時もできるだけ知人に会わないような時間を見計らって行っている。
  • 心配されたくないから勉強してもっと実力つけたい。

何を学んだか?・何がまだ理解できてないのか?

  • 指摘されて気付ける事は多い。
  • 丁寧に読むクセが足りないから嵌る事が多いと反省。
  • インデントレベルを意識する事はとても大切。些細な事を意識しないと読みにくいし、エラーになる。
  • 根気強く調べる事って大切だと学んだ。

5/3 勉強メモ

git,ファイルを編集前の状態に戻したい時

  1. 手動管理
  2. あらかじめ編集前のファイルをコピーしておく方法
  3. ファイルを編集するごとに自分でファイルをコピーするというのは大変で、間違いも起こしやすくなる。
  4. チームで共有しているファイルの場合では、二人で同時に編集して先に編集したファイルが消えたら大変!

  5. git管理

  6. Gitとは、分散型バージョン管理システム
  7. ファイルの状態を好きなときに更新履歴として保存しておくことができる。手動より楽で正確!
  8. 他人の編集した最新ファイルを上書きしようとすると、サーバにアップロードした時に警告が出る。
  9. 知らず知らずのうちに他人の編集内容を上書きしてしまうといった失敗は起らないよ。

コミット

  • バグ修正や機能追加などの異なる意味を持つ変更は、できるだけ分けてコミットするようにする。
  • 変更内容のわかりやすいコメントを書く。 1行目 : コミットでの変更内容の要約 2行目 : 空行 3行目以降 : 変更した理由

SourceTree

  • GUIの操作
  • 今回は使わない

gitのインストール コンソール

(m・_・bp) mbp-2 20:11 ~ % brew install git   #brewはmacのパッケージ管理システム

#バージョン確認
(m・_・bp) mbp-2 20:18 ~ % git --version
git version 2.24.1 (Apple Git-126)

初期設定

#ユーザー名
(m・_・bp) mbp-2 20:23 ~ % git config --global user.name "<xxxxx>"
#メールアドレス
(m・_・bp) mbp-2 20:29 ~ % git config --global user.email "<xxxxxxxx@xxxxx.xxx>"
#gitの出力をカラーリングする
(m・_・bp) mbp-2 20:30 ~ % git config --global color.ui auto
#「checkout」を「co」と省略しても実行できるようにaliasを設定
git config --global alias.co checkout

新しいリポジトリをローカルに作成

  • 「tutorial」という名前で空のディレクトリを作成して、Gitの管理下に置く
#tutorialのディレクトリ作る
(m・_・bp) mbp-2 20:43 ~ % mkdir tutorial
#tutorialのディレクトリに移動
(m・_・bp) mbp-2 20:43 ~ % cd tutorial
#tutorialディレクトリをGitの管理下に置く
(m・_・bp) mbp-2 20:43 ~/tutorial % git init
Initialized empty Git repository in /Users/ホームディレクトリ/tutorial/.git/

参考URL

  1. サル先生のGit入門
  2. git

5/3 nginxでSSL対応サイトが作れて嬉しい!

5/3 nginxでSSL対応サイトが作れて嬉しい!

目標・やりたい事は何か?何に興味あるか?

  1. rubymineインストール
  2. rubymineでメモをとる
  3. Gitの勉強
  4. 猿でもわかるgit入門

日常メモ・ちょっとした事・何を感じたか?

  • 問題点を成長だととらえられるフレームワークをちゅっと模索
  • 少しずつ日記に反映したい
  • やりたいことと技術力のバランスが大事かなと最近思う。どっちかに偏りすぎるのはあまりヘルシーじゃないかも
  • sslができて泣いちゃうぐらいに嬉しかった!

何を学んだか?・何がまだ理解できてないのか?

  • 少し前のログから解決策が出てくることを学んだ
  • 証明書の置き場を考えてなかった。PATHを意識せねば
  • プロセスを消すためにKillコマンドした。緊張した。
  • サーバーの再起動でエラー解決。 テラテイルで同じ悩みをもつ人がいた。
  • 先頭にhttps:// をつけるのをしてなくてオレオレ証明書が出来ない原因が他にあると思い嵌った
  • ドメイン変えたら上手くいった。もしかして、オレオレ証明書と Let's Encryptで証明書が1つのドメインに2つ証明書があったらだめかも
  • Deeplの翻訳精度が高くて、Linuxのエラーを読める。

勉強メモ

オレオレ証明書

#rootに行く
(桜・_・VPS) 17:39:50 :~$ su   #sudoだめだった

# 保存先を/etc/sslにしたいから(/etc/nginxでもいい)  /etc/sslのディレクトリに移動
root#  cd /etc/ssl

#  秘密鍵 (Private Key):server.keyを作成
/etc/ssl# openssl genrsa 2048 > server.key
Generating RSA private key, 2048 bit long modulus (2 primes)
........................................................................................................+++++
.............+++++
e is 65537 (0x010001)

#証明書署名要求 (CSR):server.csrを作成
/etc/ssl#  openssl req -new -key server.key > server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP  # 国
State or Province Name (full name) [Some-State]:TOKYO  # 都道府県
Locality Name (eg, city) []:SETAGAYAKU   #市区町村名
Organization Name (eg, company) [Internet Widgits Pty Ltd]:   #会社名。Enterで飛ばしてもOK。
Organizational Unit Name (eg, section) []:   #組織名。Enterで飛ばしてもOK。
Common Name (e.g. server FQDN or YOUR name) []:www.nekonohimitu.work   #Virtual Hostのドメイン名
Email Address []:akatukijun@gmail.com  #meiladress

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:  #Enterで飛ばす
An optional company name []:   #Enterで飛ばす

# 作成されたserver.csrの中身を確認
/etc/ssl#  openssl req -text < server.csr

# # CSRに署名、サーバ証明書(CRT)作成
/etc/ssl#  openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt
Signature ok
subject=C = JP, ST = TOKYO, L = SETAGAYAKU, O = Internet Widgits Pty Ltd, CN = www.nekonohimitu.work, emailAddress = akatukijun@gmail.com
Getting Private key  # getting Private keyと出ればOK

#作成されたserver.crtの中身を確認
/etc/ssl#  openssl x509 -text < server.crt
#  /etc/sslのディレクトリに入っているか確認
/etc/ssl# ls /etc/ssl
certs  openssl.cnf  private  server.crt  server.csr  server.key

#**もし誤って作成したら全部削除してから作り直す必要がある
$ apt-get --purge openssl
#**

# Virtual Hostの設定ファイル修正
(桜・_・VPS) 15:26:04 :~$ sudo vim /etc/nginx/sites-available/nekonohimitu.work


server {
  listen 443 ssl;
  server_name www.nekonohimitu.work;
  ssl on;
  ssl_certificate /etc/ssl/server.crt;
  ssl_certificate_key /etc/ssl/server.key;
  access_log /srv/www.nekonohimitu.work/log/access.log;
  error_log /srv/www.nekonohimitu.work/log/error.log;
  location / {
    root /srv/www.nekonohimitu.work/public/;
    index indexssl.html;
  }
}

# /etc/nginx/server.crtはCRTの置き場
# /etc/nginx/server.keyはkeyの置き場

$ sudo service nginx reload  #   nginx.confを再読込

Let's Encryptで証明書を取ってVirtualhost + SSL対応サイトを作る

  • こちらのサイトでnginx,Debian10と入力するとコマンドを教えてくれる certbot
#  certbotのインストール
sudo apt-get install certbot python-certbot-nginx
## 証明書の取得  80番と443番ポートを開けておく必要がある  nginxをstopして
(桜・_・VPS) 19:12:40 :~$  sudo certbot certonly --nginx


#証明書の場所確認
(桜・_・VPS) 19:18:14 :~$ sudo ls /etc/letsencrypt/live/
enginxnohimitu.work  README  www.nekonohimitu.work
#  発行された証明書たちを確認
(桜・_・VPS) 12:06:12 :~$  sudo ls -l /etc/letsencrypt/live/enginxnohimitu.work
total 4
lrwxrwxrwx 1 root root  43 May  2 20:24 cert.pem -> ../../archive/enginxnohimitu.work/cert1.pem
lrwxrwxrwx 1 root root  44 May  2 20:24 chain.pem -> ../../archive/enginxnohimitu.work/chain1.pem
lrwxrwxrwx 1 root root  48 May  2 20:24 fullchain.pem -> ../../archive/enginxnohimitu.work/fullchain1.pem
lrwxrwxrwx 1 root root  46 May  2 20:24 privkey.pem -> ../../archive/enginxnohimitu.work/privkey1.pem
-rw-r--r-- 1 root root 692 May  2 20:24 README
#  cert.pem    証明書
#  chain.pem   中間証明書
#  fullchain.pem   証明書+中間証明書の連結ファイル
#  privkey.pem   秘密鍵

#  confファイルには
#  ssl_certificate:証明書+中間証明書の連結ファイル(fullchain.pem)
#  ssl_certificate_key:秘密鍵(privkey.pem)
#  を設定する。

#hymlの編集
/srv/enginxnohimitu.work/public/index.html
/srv/enginxnohimitu.work/public/sslindex.html  #ssl用のhtml

#   enginxnohimitu.workの設定ファイル
(桜・_・VPS) 20:43:51 :~$ sudo vim /etc/nginx/sites-available/enginxnohimitu.work

server {
  listen 443 ssl;
  server_name enginxnohimitu.work;
  ssl_certificate /etc/letsencrypt/live/enginxnohimitu.work/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/enginxnohimitu.work/privkey.pem;
  access_log /srv/enginxnohimitu.work/log/access.log;
  error_log /srv/enginxnohimitu.work/log/error.log;
  location / {
    root /srv/enginxnohimitu.work/public/;
    index sslindex.html;   #ssl用のhtmlのパス
  }
}
server {
  listen 80;
  server_name enginxnohimitu.work;
  access_log /srv/enginxnohimitu.work/log/access.log;
  error_log /srv/enginxnohimitu.work/log/error.log;
  location / {
    root /srv/enginxnohimitu.work/public/;
    index index.html;
  }
}



#nginx止める
(桜・_・VPS) 20:43:08 :~$ sudo /etc/init.d/nginx stop
[ ok ] Stopping nginx (via systemctl): nginx.service.
#nginxをスタート
(桜・_・VPS) 20:43:42 :~$ sudo /etc/init.d/nginx start
[ ok ] Starting nginx (via systemctl): nginx.service.
# nginx.confを再読込
(桜・_・VPS) 20:43:46 :~$ sudo service nginx reload

参考

  1. nginxの最近のブログ記事
  2. nginx1
  3. nginx2
  4. nginx3
  5. nginx4
  6. nginx5
  7. nginx6
  8. VirtualHostについて(動画)
  9. memcachedを知り尽くす
  10. 猫とテニス。nginx
  11. 自作のHTMLをインターネットで配信する方法
  12. [033] Nginxのインストール
  13. nginxバーチャルホスト
  14. Nginx NOT FOUNDになる時のログの見方
  15. sslの概念
  16. オレオレ証明書をopensslで作る(詳細版) - ろば電子が詰まっている
  17. プログラミングビギナーNekoteniがあなたに贈る!NginxでSSLの巻
  18. nginx で ssl 設定をする
  19. もう二度とハマらない、SSL証明書の設定
  20. もう二度とハマらない、SSL個人認証局の設定
  21. サーバ証明書の作成

SSLで嵌り倒している事を解決させる事に挑戦したい

SSLで嵌り倒している事を解決させる事に挑戦したい

目標・やりたい事は何か?何に興味あるか?

[....] Starting nginx (via systemctl): nginx.serviceJob for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
 failed!

の問題を解決させたい - こちらの日報で’systemctl status nginx.service”と "journalctl -xe" を調べる事ができるみたいだ。 - $ sudo systemcl status nginx.service$ sudo journalctl -xeを開く

  1. キー(認証と証明書,csr,crt)をホームディレクトリにあるから移動させるか消して作り直す。

  2. オレオレ証明書作りたい

  3. Let’s EncryptSSL証明書取得したい
  4. Rubymineを試したい。vscodeとどっちにしようかなと思う。
  5. エディターの事を調べるのは結構楽しい

日常メモ・ちょっとした事・何を感じたか?

  • 夜に日記や日報を書こうとすると順調な時は書けるけど、何かで嵌り倒すと後回しにしがちだから朝に書く事を試す。
  • Dashのスニペット機能はすごく便利

勉強メモ 復習

nginx で VirtualHost を使って複数のドメインのサイトを立ち上げ

#  locateコマンドはファイルのパスを調べるのに便利
~$ sudo apt install locate
#nslookupのコマンドインストール
root# apt-get install dnsutils
#DNSが設定されているか調べる
~$ nslookup nginxnohimitu.work
Server: 210.188.224.10
Address: 210.188.224.10#5
~$ nslookup nekonohimitu.work
Server: 210.188.224.10
Address: 210.188.224.10#5
# /srv/以下に提供するコンテンツを置く  srvの代わりにpublicでも他の名前でもいい
:~$ sudo mkdir -p /srv/nekonohimitu.work/{public,private,log,backup}
 # index.htmlを作成しhtmlを記述
:~$ sudo vim /srv/nekonohimitu.work/public/index.html
<!DOCTYPE html>
<html lang="ja"
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>yoshihiro-VirtualHost</title>
</head>
<h1>yoshihiro-VirtualHost</h1
<body>
  <h1>yoshihiro-VirtualHost</h1>
  <p>VirtualHost-test</p>
  <p>VirtualHost-test</p>
  <p>VirtualHost-test</p>
  <p>VirtualHost-test</p>
  <p>VirtualHost-test</p>
</body>
</html>
# wwwの/srv/以下に提供するコンテンツを置く
sudo mkdir -p /srv/www.nekonohimitu.work/{public,private,log,backup}
#2つめの index.htmlを作成しhtmlを記述
:~$ sudo vim /srv/www.nekonohimitu.work/public/index.html
<!DOCTYPE html>
<html lang="ja"
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>nginxnohimitu</title>
</head>
<h1>nginxnohimitu</h1
<body>
  <h1>nginxnohimitu</h1>
  <p>VirtualHostですーーー</p>
  <p>VirtualHostですーーー</p>
  <p>VirtualHostですーーー</p>
  <p>VirtualHostですーーー</p>
  <p>VirtualHostですーーー</p>
  <p>VirtualHostですーーー</p>
  <p>VirtualHostですーーー</p>
</body>
</html>
sudo mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled #設定ファイル置き場(available)と設定ファイルを作成(enabled
~$ sudo vim /etc/nginx/sites-available/nekonohimitu.work #設定ファイルを記
server {
  listen 80;
  server_name nekonohimitu.work;
  access_log /srv/nekonohimitu.work/log/access.log;
  error_log /srv/nekonohimitu.work/log/error.log;
  location / {
    root /srv/nekonohimitu.work/public/;
    index index.html;
  }
}
server {
  listen 80;
  server_name www.nekonohimitu.work;
  access_log /srv/www.nekonohimitu.work/log/access.log;
  error_log /srv/www.nekonohimitu.work/log/error.log;
  location / {
    root /srv/www.nekonohimitu.work/public/;
    index index.html;
  }
}

#シンボリックリンクを作成
:~$ sudo ln -s /etc/nginx/sites-available/nekonohimitu.work /etc/nginx/sites-enabled/nekonohimitu.work
サイトを無効化するときにsites-enabled のリンクを消すだけでいい。シンボリックリンクのもう一つの使い方(sites-availavleの設定ファイ
ルは残る)→読み込みはsites-enabledでリンクを読み込んでいる
# /etc/nginx/nginx.confの設定ファイルをコピ-
:~$ sudo cp -p /etc/nginx/nginx.conf /etc/nginx/nginx.conf.org
:~$ sudo vim /etc/nginx/nginx.conf
##
# Virtual Host Configs
#
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
include /etc/nginx/sites-enabled/*.work; #追記 最初記述した時は[;]がなくて構文エラー

:~$ sudo /etc/init.d/nginx start #起動せず
[....] Starting nginx (via systemctl): nginx.serviceJob for nginx.service failed because the control process exited
with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
failed
:~$ sudo nginx -t #構文チェック
nginx: [emerg] unexpected "}" in /etc/nginx/nginx.conf:64
nginx: configuration file /etc/nginx/nginx.conf test faile
include /etc/nginx/sites-enabled/*.work ; #[;]がなかっ
# ネイキッドドメイン(wwwがない)は読み込んでるけど、wwwのドメインは読み込まれない
~$ nslookup www.nekonohimitu.work
Server: 210.188.224.10
Address: 210.188.224.10#5
** server cant find www.nekonohimitu.work: NXDOMAIN #wwwはみつかってないよ
# 原因はお名前ドットコムでDNSの設定していな
nslookup www.nekonohimitu.work #DNSの設定したらOK
Server: 210.188.224.10
Address: 210.188.224.10#5
:~$ sudo nginx -t
nginx: [warn] conflicting server name "nekonohimitu.work" on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name "www.nekonohimitu.work" on 0.0.0.0:80, ignored
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfu
#再起動
~$ sudo /etc/init.d/nginx stop
~$ sudo /etc/init.d/nginx start

ssh接続 rootログインなし、パスワード認証なし、port指定

sshの復習用メモ

  1. sshとは
    1. sshとは、主にUNIXコンピュータで利用される、ネットワークを介して別のコンピュータにログインして操作するためのソフトウェアの一つ。通信経路が暗号化されるため、インターネットなどを経由しても安全にアクセスすることができる。
    2. 公開鍵暗号秘密鍵暗号を組み合わせて通信経路を暗号化し、パスワードなどの認証情報や入力されるコマンド、出力された処理結果などをすべて暗号化して送受信する。
  2. sshd (ssh daemon)
    1. UNIX系OSなどで、外部からのsshによる接続を受け付ける常駐プログラムのことを慣習的にsshdssh daemon/sshデーモン)という。
    2. sshは暗号化された通信経路を構築して外部から安全にコンピュータを遠隔操作するシステムで、sshdsshクライアントからの接続要求を受け付け、通信経路の暗号化や利用者の認証、操作コマンドの受信と実行などを行なう。sshサーバソフトには様々な種類があるが、ほとんどのソフトでは共通してsshdという実行ファイル名となっている。
  3. scp (secure copy/secure copy protocol)
    1. ネットワークを介して別のコンピュータを操作するsshの機能の一つで、手元のコンピュータとの間でファイルをコピーするもの。また、そのためのコマンドおよびプロトコル(通信規約)。
    2. sshは手元のコンピュータから遠隔地のコンピュータへの通信を暗号化し、認証情報やコマンドの発行、応答などの通信内容を安全にやりとりできる。scpはssh上でのファイルコピー機能で、接続先のコンピュータとの間で安全にファイルの送受信が行える。
    3. scpのコマンドの形式などはUNIXの標準ファイルコピーコマンドであるcpやrcpとほぼ同じで、これらと同じ感覚で使うことができる。一方、ssh上でファイル転送を行なうコマンドおよびプロトコルにはSFTPと呼ばれるものもあり、こちらはFTPに似たコマンド体系で操作することができる。
  4. ウェルノウンポートとは

    1. TCP/IPによる通信で利用されるTCPUDPのポート番号のうち、著名なサービスやプロトコルが利用するために予約されている0番から1023番のこと。
    2. インターネットなどのTCP/IPネットワークに接続されたコンピュータは、通信プロトコル(通信規約)のTCP(Transmission Control Protocol)やUDP(User Datagram Protocol)を使用する際に、0番から65535番までの番号で識別される「ポート」(port)と呼ばれる接続の窓口を利用する。
    3. このうち、0から1023までの各ポートはそれぞれ特定のサービスやプロトコルが利用することが広く知られており、インターネットで公開するサーバはその番号を当該サービス、プロトコルで利用することが推奨されている。特に有名なのはHTTPの80番やFTPの20・21番、SMTPの25番、POP3110番DNSの53番などである。また、新しいプロトコルやサービスは1024番以降を利用することが慣例となっている。
    4. ただし、サーバ上でどのサービスをどのポートで動作させるかはソフトウェアによって設定できるようになっていることが多く、必ずしもウェルノウンポートでなければそのサービスを起動・利用できないわけではない。実際、HTTPのプロキシサーバなど、特殊な用途のためにわざと本来とは別のポート番号でサービスを提供する場合もある。
  5. SSHをインストール debianの場合

    • 下記のコマンドでアップデートし最新のSSHをインストール出来るようする。
    • apt update
    • 下記のコマンドでインストール
    • sudo apt install ssh

      sshd_configの設定変更

  6. PermitRootLoginを変更したい
    1. $ sudo vi /etc/ssh/sshd_config を入力してSSHの設定ファイルを開く
    2. Rootログインを禁止する為に
    3. #PermitRootLogin prohibit-passwordを
    4. PermitRootLogin noに変更
  7. port変更
    • ウェルノウンポートは避ける 0番から1023番は設定しちゃ良くないみたい。
    • ポートをデフォルトの22のままにしているとセキュリティー的に危ないそうなので22から別の数字に変更する
    • /etc/ssh/sshd_config
    • #Port 22
      Port *****
    • 最初から書いてある「Port 22」をコメントアウト消して、好きな番号(*****)を書いてやるだけ。
  8. パスワードログインの禁止、公開鍵でのログインのみできるようにする
    1. #PasswordAuthentication yesを
      
    2. PasswordAuthentication noに変更
      
    3. escボタンでコマンドモードに切り替えて、:wq!で保存して終了
      
$ sudo vim /etc/ssh/sshd_config
# Port 22をxxxxに変更 :well-known portから変更
# PermitRootLogin yesのyesをnoに変更 :sshでrootログイン禁止
# PasswordAuthentication yesのyesをnoに変更 :sshでパスワードログイン禁止

$ sudo /etc/init.d/ssh restart # sshd再起動

# MacのTerminalから実行
$ ssh username@IPアドレス -p xxxx # -pでポート番号指定

ssh接続 ・ 手順

手順 サーバー

  1. :~$ mkdir ~/.ssh # ~/.sshディレクトリを作る。
  2. :~$ chmod 700 ~/.ssh # 権限与える
:~$ mkdir ~/.ssh  # ~/.sshのディレクトリを作る。
:~$ chmod 700 ~/.ssh  # 権限与える

手順 ・ クライアント (ターミナル)

  1. $ ssh-keygen -t rsa #鍵を作る
  2. $ ls .ssh #鍵の確認 id_rsaとid_rsa.pubの2つあればいい。
  3. $ scp ~/.ssh/id_rsa.pub ユーザー@アドレス:~/.ssh/authorized_keys #公開認証鍵を送る
  4. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes #yesと入力
  5. Password: #パスワード入力
  6. id_rsa.pub 100% 571 69.9KB/s 00:00 # 鍵が送れた。
#ミスも記載しています。
$ ssh-keygen -t rsa  #鍵を作る
$ ls .ssh     #鍵の確認   id_rsaとid_rsa.pubの2つあればいい。
id_rsa      id_rsa.pub  known_hosts
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxxxxxxx/.ssh/id_rsa): 
Created directory '/Users/xxxxxxxx/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/xxxxxxxx/.ssh/id_rsa.
Your public key has been saved in /Users/xxxxxxxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:vyb0pQ3j3NBRYtGORKUUPen5yn/T/SjvFXKL8ffvXt0 xxxxxxxx@mbp
The key's randomart image is:
+---[RSA xxxx]----+
|           .=*.. |
|           .+.*  |
|           o.* o |
|            o +  |
|        S  . + + |
|        ..+ o * *|
|       . +.O o +E|
|        . *.+ o+B|
|         o.  +++%|
+----[SHAxxx]-----+
$ scp ~/.ssh/id_rsa.pub ユーザー@アドレス:~/.ssh/authorized_keys   # 公開認証鍵を送る。
ssh: connect to host アドレス port 22: Connection refused          #しかし、port番号を変更していて22番にもどした。
lost connection
$ scp ~/.ssh/id_rsa.pub ユーザー@アドレス:~/.ssh/authorized_keys  # 公開認証鍵を送る
The authenticity of host 'アドレス (アドレス)' can't be established.
ECDSA key fingerprint is SHA256:HygdwrWMmJGzJNbqbH6iMGdrAxj5nUcwokoltR+iImk.
Are you sure you want to continue connecting (yes/no/[fingerprint])? # Return押して失敗
Host key verification failed.
lost connection
$ scp ~/.ssh/id_rsa.pub ユーザー@アドレス:~/.ssh/authorized_keys # 公開認証鍵を送る
The authenticity of host 'アドレス (アドレス)' can't be established.
ECDSA key fingerprint is SHA256:HygdwrWMmJGzJNbqbH6iMGdrAxj5nUcwokoltR+iImk.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes #yes入力
Warning: Permanently added 'アドレス' (ECDSA) to the list of known hosts.
Password:    #パスワード入力
id_rsa.pub                                                           100%  571    69.9KB/s   00:00    # 鍵が送れた。

手順・ サーバー

  1. :~$ cd ~/.ssh # ~/.sshディレクトリに移動
  2. :~/.ssh$ ls # authorized_keysがあるか確認。もしあれば、公開認証鍵が送られている。
  3. :~/.ssh$ chmod 600 authorized_keys # authorized_keysに権限を与える。
  4. :~$ sudo vim /etc/ssh/sshd_config # 設定変更
  5. :~$ sudo /etc/init.d/ssh restart #sshの再起動...ちなみにサーバーの再起動では反映されないから注意
:~$ cd ~/.ssh   #  ~/.sshのディレクトリに移動
:~/.ssh$ ls   # authorized_keysがあるか確認。もしあれば、公開認証鍵が送られている。
authorized_keys
:~/.ssh$ chmod 600 authorized_keys # authorized_keysに権限を与える。
:~/.ssh$ cd
:~$ sudo vim /etc/ssh/sshd_config  # 設定変更
:~$ sudo /etc/init.d/ssh restart   #sshの再起動...ちなみにサーバーの再起動では反映されないから注意
[ ok ] Restarting ssh (via systemctl): ssh.service.
:~$ 

ssh接続 ・ rootログインなし・ポート22ログインなし・パスワード認証なしでログイン

$ ssh  root@アドレス  #rootログイン   失敗でOK
ssh: connect to host アドレス port 22: Connection refused
$ ssh  usename@アドレス #デフォルトのport22   失敗でOK
ssh: connect to host アドレス port 22: Connection refused
$ ssh  usename@アドレス -p xxxx  # /etc/ssh/sshd_configに設定したpirt番号      ログイン成功
Linuxxxxxxxxxxxxx-amdxx #1 SMP Debian 4.19.98-1 (2020-01-26) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Apr xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx :~$ 

手を動かしながら 新しいLinuxの教科書を再読するのは楽しい

今日の学習内容・課題の進捗

  • とほほのUnix/Linux入門
  • 「再入門 体で覚えるLinuxの基本」
  • 新しいLinuxの教科書復習

学んだ感想

Keep: 良かったこと(今後も続けること)
  • 手を動かしながら 新しいLinuxの教科書を再読するのは楽しい!
    Problem: 悪かったこと(今後はやめること)
  • コンソールで操作はやりにくい。ターミナルで操作する。
    Try: 次に挑戦すること(Problemの改善策、Keepでさらに改善すること)
  • 引き続き新しいLinuxの教科書を手を動かしながら進める!