edo1z blog

プログラミングなどに関するブログです

CentOSのApacheでAdonisを動かす

$ pm2 start server.js
$ apache proxy 設定(ドキュメントルートをhttp://localhost:3333に飛ばす)

これで大体はいいはずなんだけどうまくいかない。

curl http://localhost:3333とかやると「接続を拒否されました」となる。 firewalldは使われてなくて、iptablesが使われているけど、iptablesをstopしても状況が変わらない。

ということで、仕方ないので、ローカル環境でDockerでテストしてみることにした。

CentOS8のDockerを立ち上げる

環境

  • Windows10 Pro
  • WSLを使っています

立ち上げる

こちらを見てやりました。

$ docker pull centos:centos8
$ docker run -it -d --name centos8 centos:centos8
$ docker exec -it centos8 /bin/bash

CentOS8でcurlでhttp://localhost:3333にアクセスできるようにする

とりあえず、最初の状態だと、curl http://localhost でも接続できなかった。

$ yum install httpd
  • systemctlは使えないらしい。
  • /etc/init.d/は空だし、apachectl start でもダメ。
$ apachectl start
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
  • httpd -k startで起動したっぽい。
$ httpd -k start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
httpd (pid 185) already running

curl http://localhostはアクセスできた。 curl http://localhost:3333は下記になる。

$ curl localhost:3333
curl: (7) Failed to connect to localhost port 3333: Connection refused

Adonisサーバを立ち上げる

$ curl -sL https://rpm.nodesource.com/setup_12.x | bash -
$ yum -y install git nodejs
$ yum -y install npm
$ npm update -g npm
$ npm i -g @adonisjs/cli
$ adonis new hoge
$ cd hoge
$ npm i -g pm2
$ pm2 start server.js
$ curl http://localhost:3333

接続できた。

localhostにアクセスしたら、Adonisが表示されるようにしてみる

$ vim /etc/httpd/conf/httpd.conf

下記を最後に追加。あとhttpd再起動時にエラーメッセージ出るので、ServerNameの設定箇所のコメントを外した。

ProxyPreserveHost On
ProxyPass / http://localhost:3333
proxyPassReverse / http://localhost:3333
$ httpd -k restart
$ curl localhsot
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>Hello Adonis</title>
  <link rel="stylesheet" href="/style.css" />
</head>
<body>
  <section>
    <div class="logo"></div>
    <div class="title"></div>
    <div class="subtitle">
      <p>AdonisJs simplicity will make you feel confident about your code</p>
      <p>
        Don't know where to start? Read the <a href="https://adonisjs.com/docs">documentation</a>.
      </p>
    </div>
  </section>
</body>
</html>

一瞬でできるし。。一瞬でできると思ってたんだよ最初は。うんこうんこ。

centos初期設定だと出来るってことか。やっぱportが空いてないのか。でもiptables止めてもできないんだよな。iptablesを設定して再起動しようと思ったら再起動方法が分からなかった。というか、adonis serveの時点で、curl localhost:3333は出来るわけで、それが出来ないっていうのは、apacheの設定とか関係ないな。

結論

  • Adonis.js側のHost設定がおかしかった。localhostになってなかった。