こんにちわ、PHPエンジニアのエンジニア婦人(@naho_osada)です。
PHPエンジニアとして9年~の経験があります。
先日、CentOS7の開発環境にNuxt3の開発環境を構築する作業をしました。
そのときにやった作業内容を残します。
前提
- CentOS7
- Apache
- node / npmは入っている(古い)
- ソースは指定の物で、Nuxtjsをイチから入れるわけではない
ゴールは「CentOS7の開発環境へWindows機で外部アクセスが可能になるようにすること」。
node npmのバージョンあげ
元のソースを持ってきてcomposer updateやnpm installをやったところまではよかったのだけれど、Nuxtjsを実行するためのnpm run devができなかった。
原因はnode と npmのバージョンが古かったから。
node -v
v12.22.12
npm -v
6.14.16
自分のローカルマシンで動かしている人の情報によると、node 16以上だった。なので一致させるために16を入れる。
sudo yum install https://rpm.nodesource.com/pub_16.x/el/7/x86_64/nodejs-16.17.0-1nodesource.x86_64.rpm
そして上がったバージョンはこちら。
node -v
v16.17.0
npm -v
8.15.0
以前のリポジトリ指定のやり方ではうまくいかない
調べると良く出てくるこのやり方
sudo curl -sL https://rpm.nodesource.com/setup_14.x | bash -
curlで取ろうとするとすごい警告が出てくる。赤警告。
「これもう使うのやめるから別の方法でやってよね、Gitから取ってきて云々してよね」っていってるだけなのですが、なんとも恐ろしい印象を与えてくる…。
色々探して取ってきたのはこちらのNodesourve Node.js RPMからyum installする方法。こちらもGitHubから取るのを推奨するよ、と書いてある。
ただ、最新バージョン以外をGitHubから取る方法がちょっとよくわからなかった。そのためNode.js RPMでバージョン指定で取った。
CentOS7はnode v18未対応
CentOS7はnodeは18対応できないらしい。
- nodeのv18を使ったらエラーになった(CentOS7) – ITのプロへ
- Node.js v12 -> v16にyumでアップデートしてみた。(CentOS 7) #Node.js – Qiita
そもそもCentOS7自体がもう古いし、どこかで開発環境の更新か、イチから作り直す日が来るかもしれない…
npm run devの起動
nodeとnpmのバージョンをあげてあげたら起動できるはず。
npm run dev
をやってみて動作できたらOK。何か足りなくて入れないとならない、などがあったらその辺りを入れて動くようにする。
内部アクセス(localhost)の確認
CentOS7からアクセスしてみる。コンソールで
curl http://localhost:3000
を実行するとコンソール上にずらっとソースが出てくるはず。
npm run devをやったらIPアドレス上でアクセスできるよ!って言っているから外のWindowsマシンからUPアクセス(xxx.xxx.xxx.xxx:3000)アクセスしてもおそらくできない。
外部アクセス(IP)はhost=0に指定して実行する
HOST=0 PORT=3000 npm run dev
PORT 3000で変更しない場合は省略可能。
設定ファイルに書く方法もあるようだけど、開発中に何かと変わりそうなので開発機で実行するときに指定すればいいや、ということで。
3000ポートを開く
たぶん上のコードでnpm run devしただけだとまだアクセスできないと思う。
3000ポート、普通は開いてませんよね?開けてあげるか、実行するときに別の開いているポートを指定する。
調べてみる。
firewall-cmd --list-all
これでいなければ、開けポート
firewall-cmd --add-port 3000/tcp
ずっと使うなら開きっぱなしで
firewall-cmd --add-port 3000/tcp --permanent
systemctl reload firewalld.service
これでアクセスできるようになる。