メモ書き

CentOS に nodejs を インストールして、

```Plain
メモ書き
ホームページから取ってくるのではなく、コマンドラインからインストールする。
グーグル検索するときは　会話する感じでキーワードを適当に打ち込むのが　情報に当てやすい。
How to install a nodejs on CentOS?
とか。
Web記事も英語で会話してたりするので。日本語は会話表現がいろいろあって　情報に当てづらい気がする。
キーワードだけを打ち込むと　キーワード狙い撃ちのアフィリエイト記事に当たりやすい気がする。
```

```Shell
http-server -p 80
```

とでもコマンドを打てば ポート80番で Webサーバーは立ち上がるが
これだと ブラウザでアクセスしたときに nodejs が手抜きなしで頑張ってしまうため、
nginx でも間に立たせる。

```
これもやはり
How to install nginx on CentOS?
```

昔のＰＣ事情とかお前ら知らんだろうが おっさんには最近のＰＣ事情は
リポジトリをローカルＰＣに作る分散処理型コンピューティングで　へぇ　とか思ったりする。
昔は ダウンロードしてインストールするだけだった。

[なんか昔の記事](https://ch.nicovideo.jp/kifuwarabe/blomaga/ar1711035)

とりあえず 自分のＰＣなのでルートを取る。

```
sudo su -
cd /
ls
cd etc
ls
cd yum.repos.d
ls
vi nginx.repo
```

もう書いてた。

```vim
:q!
```

```Shell
ls -l /etc/yum.repos.d/

cd /
yum info nginx
```

やっぱり ごちゃごちゃしているので嫌になった。 home に行こう。

```
exit
```

```
how to use systemctl?
```

```Shell
systemctl list-unit-files --type=service
```

nginx は動いてない。

```
How do you link nginx and nodejs?
```

```
sudo su -
cd etc
cd nginx
ls
vi nginx.conf
```

```vim
events {
    worker_rlimit_nofile 10240;
    worker_connections  1024;
}
```

nginx と nodejs の連携うまくいかね。

nginx なしでやろう。

```
http-server -p 80
```

つながらね。

```
exit
```

```
pm2 start
```

```
how to start server nodejs by pm2?
```

だいたい nodejs のリポジトリが見当たらない。どこにいった。
作り直すか。

```
mkdir xxx
cd xxx
```

```
how to install nodejs on centos?
```

```
node -v
v11.5.0
```

入ってる。


[[Node.js] Webサーバ＋アプリ構築が速すぎる件 〜 JSおくのほそ道 #004](https://qiita.com/hosomichi/items/1991567e56dea41d1021)

めんどくせ。 WinSCP 入れよ。

[WinSCP](https://forest.watch.impress.co.jp/library/software/winscp/)

Windows で JavaScript 書いて CentOS に投げ込むことにする。

```
var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello Kifuwarabe!\n');
}).listen(80, 'http://192.168.xx.xx');
```

動かない。

```js:hello.js
console.log("Hello js!");
```

```Shell
node hello.js
```

動く。

```
var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello Kifuwarabe!\n');
}).listen(80, '192.168.xx.xx');
```

```Shell
sudo node start-server.js
```

権限付けたら動いた。しかし 家の中のLANの中でしか見えてない。

Google chorome で [Ctrl]+[F5] でスーパーリロード。やはり見えない。
ヘアピンルーターが要るのだろうか。めんどくせ。IPアドレスでアクセス。見える。

ターミナルから `exit` すると Webサーバーも落ちる。こんなのは Webサーバーではない。

```Shell
pm2 start start-server.js
```

無理。

```Shell
pm2 stop start-server
```

```Shell
npm install express
npm install express-generator
./node_modules/.bin/express
ls
```

```Shell
sudo yum install tree
y
tree -I node_modules
.
├── app.js
├── bin
│   └── www
├── hello.js
├── package-lock.json
├── package.json
├── public
│   ├── images
│   ├── javascripts
│   └── stylesheets
│       └── style.css
├── routes
│   ├── index.js
│   └── users.js
├── start-server.js
└── views
    ├── error.jade
    ├── index.jade
    └── layout.jade
```

bin ディレクトリの中に www があるな。
説明も読まずに打鍵してしまう。

```Shell
pm2 start bin/www
```

無理。

```Shell
pm2 stop www

npm install
npm audit fix
npm start
```

これまた無理。

```
curl http://localhost:3000
curl: (7) Failed connect to localhost:3000; 接続を拒否されました

curl http://127.0.0.1:3000
curl: (7) Failed connect to 127.0.0.1:3000; 接続を拒否されました
```

```Shell
pm2 start bin/www
curl http://127.0.0.1:3000
```

いけた。
しかし、これではローカルホスト。外から見えない。 nginx 仕事してない。

LANの内側からも見えない。 CentOS の中でしか見えない。

[NginxからNode.jsへリバースプロキシする](https://keruuweb.com/nginx%E3%81%8B%E3%82%89node-js%E3%81%B8%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E3%81%99%E3%82%8B/)

分かんね。引用記事見る。

[Set Up Nginx as a Reverse Proxy Server](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-16-04)

```
vi /etc/nginx/nginx.conf
```

書いている内容がだいぶ違う。

```Shell
vi /etc/nginx/conf.d/default.conf
```

こっちか。設定を見てみると……。

```config
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
```

usrディレクトリの方を見ている。デフォルトか。
動的生成される express の何を指定するのか。

さっぱり分からん。書き足してみる。

```
sudo vi default.conf
```

```
server {
    location @node {
        proxy_pass http://node;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_cache_bypass $http_upgrade;
    }
}
```

```
pm2 restart www

curl http://localhost
curl: (7) Failed connect to localhost:80; 接続を拒否されました
```

どうも　読んでる記事とＯＳが違うらしい。

```
systemctl restart nginx
```

無理。違う記事を読む。

[CentOSにNodeJS+nginxの環境を構築する](https://qiita.com/polidog/items/e94f9cbb32b603042698)

```
sudo /etc/init.d/nginx restart
sudo: /etc/init.d/nginx: コマンドが見つかりません
```

```
sudo nginx -s reload
nginx: [emerg] "worker_rlimit_nofile" directive is not allowed here in /etc/nginx/nginx.conf:10
```

サンプルプログラム通りに書いたらエラーを起こしている。

[nginx起動、再起動](https://qiita.com/Kaisyou/items/dadf6fe9ee93fb69e76c)

```
sudo nginx -s reload
nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
```

そもそも起動してない。

## nginx起動

```
systemctl start nginx

curl http://localhost:80
```

ローカルでは見れる。

```
500 Internal Server Error
nginx/1.14.2
```

外からnginxが反応するようになった。
HTTPにヘッダ付ければいいのか？

```
http {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_redirect off;
}
```

```
400 Bad Request
Request Header Or Cookie Too Large
nginx/1.14.2
```

まあヘッダー付けたからな。

nginx がエラーを返しているということは、nginxのログを見ればいいのか。

```
cd /var/log/nginx/
ls
vi error.log
認可がありません
sudo vi error.log

2019/03/10 02:27:50 [alert] 53970#53970: *5202 socket() failed (24: Too many open files) while connecting to upstream, client: 127.0.0.1, server: xxxxxxxxxxxxx, request: "GET / HTTP/1.0", upstream: "http://127.0.0.1:80/", host: "backend_node"
2019/03/10 02:27:50 [crit] 53970#53970: *5202 open() "/usr/share/nginx/html/50x.html" failed (24: Too many open files), client: 127.0.0.1, server: xxxxxxxxxxxxxxx, request: "GET / HTTP/1.0", upstream: "http://127.0.0.1:80/", host: "backend_node"
```

nodeに転送はしてるのか。

```
:q
pm2 list
```

expressは起動中。

```Shell
sudo vi /etc/nginx/conf.d/default.conf
```

```
upstream backend_node {
    ip_hash;
    # Nodejs express port.
    server 127.0.0.1:3000;
}
```

node express のポートは 3000 なのでは。

```
systemctl restart nginx
```

```
An error occurred.
Sorry, the page you are looking for is currently unavailable.
Please try again later.

If you are the system administrator of this resource then you should check the error log for details.

Faithfully yours, nginx.
```

エラー画面がころころ変わる。
なんというか　逆走している。

```
cd ~
```

```
curl http://localhost:80
```

は enginx のエラー画面で、

```
curl http://localhost:3000
```

は Welcome to Express 画面なので、連携がまだ。
やることがない。

```
sudo npm install -g npm-check-updates
ncu
ncu -u
npm install
npm audit fix
```

https://www.nginx.com/resources/wiki/start/topics/examples/full/

うーむ。

default.conf をいじる。

```
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.
```

デフォルト画面に戻ってしまう。

また記事を変える。

[Nginx を Node.js のリバースプロキシとして使う](http://dotnsf.blog.jp/archives/1058466329.html)

また記事を変える。

[CentOS7.1にNginx+NodeJS(nvm)環境の導入(Vagrant環境下)](https://qiita.com/fagai/items/f615c9e45c8c24743aae)

```
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
```

nginx を止める。

```
systemctl stop nginx

sudo http-server -p 80
```

つながる。

```
sudo node start-server.js
```

これもつながる。

```
 curl http://localhost:3000
```

つながる。

```
curl http://localhost:80
curl: (7) Failed connect to localhost:80; 接続を拒否されました

curl http://localhost:8080
curl: (7) Failed connect to localhost:8080; 接続を拒否されました
```

すると nginx が仕事してないだけに見えるが……。

```
curl http://localhost/page.html
```

```
<!DOCTYPE html>
<html>
<head>
<title>Error</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>An error occurred.</h1>
<p>Sorry, the page you are looking for is currently unavailable.<br/>
Please try again later.</p>
<p>If you are the system administrator of this resource then you should check
the <a href="http://nginx.org/r/error_log">error log</a> for details.</p>
<p><em>Faithfully yours, nginx.</em></p>
</body>
</html>
```

無いページを指定しても nginx が反応している。

記事を変える。

[tkm_71のブログ](http://tkm-71.hatenablog.com/entry/2016/03/22/003517)

記事を変える。

[nginx連載4回目: nginxの設定、その2 - バーチャルサーバの設定](https://heartbeats.jp/hbblog/2012/04/nginx04.html)

記事を変える。

[CentOS7にnginxの設定](https://qiita.com/chokosuki4400/items/2d92ea5a23eea2a970a1)

```
#状態確認
systemctl status nginx


● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since 日 2019-03-10 04:10:18 JST; 3min 1s ago
     Docs: http://nginx.org/en/docs/
  Process: 55904 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 55907 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
 Main PID: 55908 (nginx)
   CGroup: /system.slice/nginx.service
           ├─55908 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx....
           ├─55909 nginx: worker process
           ├─55910 nginx: worker process
           ├─55911 nginx: worker process
           ├─55912 nginx: worker process
           ├─55913 nginx: worker process
           ├─55914 nginx: worker process
           ├─55915 nginx: worker process
           ├─55916 nginx: worker process
           ├─55917 nginx: worker process
           ├─55918 nginx: worker process
           ├─55919 nginx: worker process
           └─55920 nginx: worker process

 3月 10 04:10:18 localhost.localdomain systemd[1]: Starting nginx - high per...
 3月 10 04:10:18 localhost.localdomain systemd[1]: Started nginx - high perf...
Hint: Some lines were ellipsized, use -l to show in full.
```

記事を変える。

[nginx proxy_pass if pm2 is running](https://stackoverflow.com/questions/46883838/nginx-proxy-pass-if-pm2-is-running)

記事を変える。

[react+next.js+pm2+nginxを使ってアプリをデプロイ](https://qiita.com/MikihiroSaito/items/e68acc53a6e303206720)

```
node -v
v11.5.0
npm -v
6.4.1
```

理屈が少し分かった。（どの記事も理屈を説明してくれないが……☆）

```
/etc/nginx/conf.d/default.conf
/etc/nginx/conf.d/xxxxx.conf
```

と複数の設定ファイルを作ることができ、ローカルホストなどドメイン別に server { } ディレクトリを書くことができる。
設定が重複していると `sudo nginx -t` でエラー行が分かる。

記事を変えてみる。

[CentOSにnode.js+Express環境を構築して動作を試してみるまで](https://qiita.com/sugard12/items/7e51791decc682baf6ea)

記事を変えてみる。

[nodeをデーモン化してnginxをリバースプロキシとして連動させる](https://www.kumapress.com/?p=4234)

```
sudo nginx -t
nginx: [emerg] "proxy_redirect" directive is not allowed here in /etc/nginx/conf.d/ip.conf:25
nginx: configuration file /etc/nginx/nginx.conf test failed
```

`proxy_redirect` を書けない場所がある。

記事を変えてみる。

[開発サーバーでもこれだけはやっておくnginxの設定](https://qiita.com/yuse/items/fe05cec1a331306eac19)

```
grep processor /proc/cpuinfo | wc -l
4

ulimit -n
1024
```

記事を変える。

[[nginx] （nginxに）跪くまで5分だけ！！](https://qiita.com/okkn/items/016474c7fa3af3b6a3b2)

記事を変える。

[Node.js + Express + forever を構成して nginx から流す](https://qiita.com/ogwmtnr/items/03996d3798facbc600da)


```
proxy_redirect                          off;
```

は書けるはずなんだが、これが `"proxy_redirect" directive is not allowed` になるのが　原因な気もする。

記事を変える。

[[雑記] nginx の proxy_set_header の扱い](https://blog.kteru.net/nginx-proxy-set-header/)

変化なし。

記事を変える。

[nginx: Linux packages](https://nginx.org/en/linux_packages.html)

```
sudo yum install yum-utils

パッケージ yum-utils-1.1.31-50.el7.noarch はインストール済みか最新バージョンです
何もしません
```

```
vi /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
```

中身が違う。

```
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
```

書き換える。

```
sudo yum-config-manager --enable nginx-mainline
sudo yum install nginx
```

nginxのバージョンが変わる。

記事を変える。

[Starting, Stopping, and Reloading Configuration](https://nginx.org/en/docs/beginners_guide.html#control)

nginx を起動するのは１回だけ、そのあとは nginxのコマンド４つ を使う。

```
nginx -s stop
nginx -s quit
nginx -s reload
nginx -s reopen
```

初回起動の説明が無いが `systemctl start nginx` で起動する。

```
nginx -s quit
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
2019/03/10 06:42:08 [warn] 57176#57176: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
2019/03/10 06:42:08 [notice] 57176#57176: signal process started
2019/03/10 06:42:08 [alert] 57176#57176: kill(57150, 3) failed (1: Operation not permitted)
```

```
sudo nginx -s reload
```

うーむ。権限が要るか。

```
ps -ax | grep nginx

 57150 ?        S      0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
 57180 ?        S      0:00 nginx: worker process
 57181 ?        S      0:00 nginx: worker process
 57182 ?        S      0:00 nginx: worker process
 57183 ?        S      0:00 nginx: worker process
 57185 pts/1    S+     0:00 grep --color=auto nginx
```

なんの仕事もしていない nginx が居る。

```
cd /usr/share/nginx/html
ls -l
合計 12
-rw-r--r--. 1 root root 494  2月 27 00:47 50x.html
-rw-r--r--. 1 root root 612  2月 27 00:47 index.html
```

記事を変える。

[nginxの所有者・グループ・パーミション](https://gakumon.tech/nginx/nginx_permission_main.html)

じゃあ仮に ローカルのファイルが見れる設定ができるか試してみよう。

```
    server {
        location / {
            root /home/muzudho/public-html;
        }
    }
```

```
nginx -s reload
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
2019/03/10 12:28:19 [warn] 58407#58407: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
2019/03/10 12:28:19 [notice] 58407#58407: signal process started
2019/03/10 12:28:19 [alert] 58407#58407: kill(57150, 1) failed (1: Operation not permitted)
```

ユーザーホームは指定するな、と出てきた。ほかのディレクトリを指定する。

```
    server {
        location / {
            root /usr/share/nginx/html;
        }
    }
```

```
nginx -s reload
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
2019/03/10 12:32:43 [warn] 58428#58428: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
2019/03/10 12:32:43 [notice] 58428#58428: signal process started
2019/03/10 12:32:43 [alert] 58428#58428: kill(57150, 1) failed (1: Operation not permitted)
```

```/usr/share``` もダメ。だったらどこが見れるんだ。

```
sudo nginx -s reload
```

だといける。ログが ルート権限なのか？

```
sudo nginx -s stop
```

むりやり止める。

```
systemctl start nginx
```

自分で起動。

```
nginx -t
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
2019/03/10 12:40:25 [warn] 58508#58508: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
2019/03/10 12:40:25 [emerg] 58508#58508: open() "/var/run/nginx.pid" failed (13: Permission denied)
nginx: configuration file /etc/nginx/nginx.conf test failed
```

エラーログを書き込めない権限とは何か。

記事を変えてみる。

[nginx.confの設定でエラー](https://teratail.com/questions/14588)

nginx をルートで起動するのが普通らしい。

```
sudo su -
systemctl start nginx
```

そのあと　ひとまず

```
    server {
        location / {
            root /home/muzudho/public-html;
        }
    }
```

は フォーベドン、

```
    server {
        location / {
            root /usr/share/nginx/html;
        }
    }
```

はいける。

そういえば HTMLページが 文字化けを起こしているな。

```
    server {
        charset utf-8;
        location / {
            root /usr/share/nginx/html;
        }
    }
```

```charset utf-8;``` を追加してどうか？

Google chrome で [Ctrl]+[F5] キーでスーパーリロード。
nginx の静的ページが見れるのは nginx の機能なので普通。バックエンドの node にアクセスを渡さないのが異常。

```
502 Bad Gateway
nginx/1.15.9
```

upstream を書き忘れた。

```
        if ( !-f $request_filename ) {
            proxy_pass http://backend_node;
            break;
        }
```

上の4行を追加すると 500番台エラーになることが分かった。

```
upstream backend_node {
    ip_hash;
    # Nodejs express port.
    server 127.0.0.1:3000;
}
```

すると これが働いていないはずで。

```
# curl http://127.0.0.1:3000
<!DOCTYPE html><html><head><title>Express</title><link rel="stylesheet" href="/stylesheets/style.css"></head><body><h1>Express</h1><p>Welcome to Express</p></body></html>
```

個別には動く。

```
# curl http://127.0.0.1:3000/users
respond with a resource

# curl http://127.0.0.1:80/users
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
```

バックエンドに投げていない。

ひとまず node の方もスーパーユーザーで起動しなおしてみる。

```
pm2 list
```

何も起動してない。

```
exit
pm2 list
```

いろいろ起動している。

```
pm2 stop www
pm2 delete start-server
pm2 delete www
```

すると /home ディレクトリ下に node を置いても意味ないのでは。

```
mv /home/muzudho/html /usr/share/html
```

`/usr/share/` の下に Webアプリなんか置いていいのか？

```
mkdir /usr/local/webapps
mv /usr/share/html /usr/local/webapps/xxx
```

気に入らないので移動。

```
cd /usr/local/webapps/xxx
sudo su -
pm2 start www
```

```
# curl http://localhost:80/users
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

# curl http://localhost:3000/users
respond with a resource
```

さてなぜか。

```
vi /var/log/nginx/error.log
```

情報なし。

```
cd /var/log/nginx
vi access.log
```

アクセスの記録も無し。

nginx がリバースプロキシとして仕事をしていないので

```
    location / {
        proxy_pass http://localhost:3000;
```

丸投げしてどうか？

```
curl http://localhost:3000/users
curl http://localhost:80/users
```

500エラー。

proxy_pass が働いていない。ググる。

```
proxy_pass does not work between nginx and node.
```

[NodeJS & Nginx Proxy not working](https://stackoverflow.com/questions/37981853/nodejs-nginx-proxy-not-working)

[How To Secure Nginx with Let's Encrypt on Ubuntu 14.04](https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04#step-3-%E2%80%94-configure-tlsssl-on-web-server-(nginx))

```
# nano /etc/nginx/sites-available/default
```

そんなディレクトリは無い。

記事を変える。

[Configuring NGINX as Reverse Proxy for Node.js Application](https://radiostud.io/configuring-nginx-reverse-proxy-node-js-application/)

ググる。

```
proxy_pass does not work between nginx and node on centos.
```

[How To Set Up a Node.js Application for Production on CentOS 7](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-centos-7)

```
sudo systemctl restart nginx
sudo systemctl enable nginx
```

ルートユーザーで nginx を起動しない方法が示されている。

```
sudo yum install epel-release
```

これはインストール済み。

記事を変える。

[Initial Server Setup with CentOS 7](https://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7)

SSH で ルートユーザーで入る。

アカウントを増やす。

```
adduser demo
```

その前に ユーザー一覧を確認する。

```
cat /etc/passwd
```

すると nginx 用のアカウントをもう作ってある。

```
gpasswd -a demo wheel
```

ユーザーのグループの一覧を見てみる。

```
cat /etc/group
```

とりあえず wheel のグループに追加。

```
ssh-keygen
```

ファイル名とパスワードを適当に入れる。

するとローカルユーザーのホームディレクトリに `<ファイル名>` と、 `<ファイル名>.pub` というファイルができている。
秘密鍵と公開鍵だろうか。

```
ssh-copy-id demo@SERVER_IP_ADDRESS

/bin/ssh-copy-id: ERROR: failed to open ID file '/root/.pub': そのようなファイルやディレクトリはありません
        (to install the contents of '/root/.pub' anyway, look at the -f option)
```

じゃあ　セキュリティはパスで。

ローカルホストの ポート 3000 と 80 がまずつながってないし、プライベートIPアドレスなので外からも見えない。
DNS の方もつながっていない。２つつながっていない。

```
ipconfig
Windows IP 構成


イーサネット アダプター イーサネット:

   接続固有の DNS サフィックス . . . . .: xxxxxxxxxxxxxxxx
   IPv6 アドレス . . . . . . . . . . . .: xxxxxxxxxxxxxxxxxxxx
   一時 IPv6 アドレス. . . . . . . . . .: xxxxxxxxxxxxxxxxxxxx
   リンクローカル IPv6 アドレス. . . . .: xxxxxxxxxxxxxxxxxxxxxxx
   IPv4 アドレス . . . . . . . . . . . .: xxxxxxxxxxxxxxxxxxx
   サブネット マスク . . . . . . . . . .: xxxxxxxxxxxxxxxxxxxx
   デフォルト ゲートウェイ . . . . . . .: xxxxxxxxxxxxxxxxxxx
                                          xxxxxxxxxxxxxxxxxx
```

このデフォルト ゲートウェイは Windows 10 につながっていて、それを CentOS に向けていて、
CentOSの中の nginx が受け取るルートと、
CentOS のプライベートIPアドレス を叩く別ルートを１本化してると思ったが　めんどくさいんで
外側から入るのは後回しにしよう。

プライベートIPアドレスを叩くと ルーターのログイン画面が出てくる。
CentOSのプライベートIPアドレスを叩くと 500エラーが出てくる。
購入したドメインを叩くと タイムアウトしてしまう。

とりあえず やることもないんで Team viewer で Windows 10 に入ってみる。パートナーに接続する。

ルーターが 1 番を取っていて、プライベートIPアドレスの振り分けはルーターが勝手にやってくれてるので
やることがない。

Hyper-Vマネージャーの中で CentOS 動かしているだけだしな。Windows10は空の箱と言ってもいい。
こんなとこ入ってきても何もない。空っぽの冷蔵庫を開けたり閉めたりするようなもの。

問題は CentOS の中だけだし。

記事を変える。

[Nginx を Node.js のリバースプロキシとして使う](http://dotnsf.blog.jp/tag/loopback)

nginx は 500エラーを出していて、そのエラーログが出ていないのは　どういうことなのか？

```
2019/03/10 03:23:43 [crit] 55248#55248: *3 connect() to 127.0.0.1:3000 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: *********, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "localhost"
```

協定世界時というわけでもなく、夜中にいじっていたエラーログで途切れている。

```
127.0.0.1 - - [10/Mar/2019:03:24:05 +0900] "GET / HTTP/1.1" 502 537 "-" "curl/7.29.0" "-"
127.0.0.1 - - [10/Mar/2019:03:24:11 +0900] "GET /index.html HTTP/1.1" 200 653 "-" "curl/7.29.0" "-"
127.0.0.1 - - [10/Mar/2019:03:25:38 +0900] "GET / HTTP/1.1" 502 537 "-" "curl/7.29.0" "-"
127.0.0.1 - - [10/Mar/2019:03:27:29 +0900] "GET /users HTTP/1.1" 502 537 "-" "curl/7.29.0" "-"
127.0.0.1 - - [10/Mar/2019:03:37:05 +0900] "GET / HTTP/1.1" 502 537 "-" "curl/7.29.0" "-"
```

アクセスログも古いので止まっている。ログはどこに出力されているのか？

```
nginx: [emerg] "proxy_redirect" directive is not allowed here in /etc/nginx/conf.d/default.conf:31
nginx: configuration file /etc/nginx/nginx.conf test failed
```

これも分からん。例えば locationディレクトリ直下には書けるが、ifのコードブロックの中には書けない。

```
C:\Users\むずでょ>telnet
'telnet' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
```

TELNET とか古すぎて分からん。 PuTTy で SSH じゃダメなのか。

[WindowsのTelnetクライアントの使い方 (1/2)](https://www.atmarkit.co.jp/ait/articles/0207/06/news002.html)

```
ホストを解決しています
接続中
```

外からも相変わらず見えない。