LoginSignup
1
0

More than 1 year has passed since last update.

Nuxt+Laravelを単一のホストで動かす

Last updated at Posted at 2021-08-01

あらすじ

お金をかけずに(とか諸々の理由で), Laravel+Nuxtで自前でCMSを作ろうということになって, レンタルサーバでNuxtもLaravelも動かしたいという話になりました.

この記事の続きとして書きます.
https://qiita.com/YSY/items/3a0abdc6ec5296373d17

上記の記事では, Nuxt をデプロイするところまで書きました. Nuxt Conoha VPS にデプロイした後に, Laravel と連携するようにしていきます.

まずphpを入れる

https://www.rem-system.com/centos8-php-install/ が丁寧に書いてました.
Conoha vps を使っており, CentOS8 上で作ることになるので, dnf コマンドを使っていきます. 必要があれば yum に置き換えてもらえればと思います.
dnf info php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-mysqlnd php-json
で確認した後、
dnf install -y php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-mysqlnd php-json

で必要なモジュールをインストールします.
php -vでphp7.2が入っていることを確認します.

Composer を入れる

まず公式の言う通りに, インストーラを入れましょう.
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
そんで,
php composer-setup.php
すれば手元に composer.phar が生成されたと思います.

php -r "unlink('composer-setup.php');"
をすればインストーラを削除できます.

次に,
mv composer.phar /usr/local/bin/composer
して, どこからでも composer コマンドを使えるようにしましょう.
composer -Vでバージョンが表示されるようになりました.

Laravel が動くようにする

それはお任せします. envを用意したり, composer installとかしたりしてください.
僕の場合はgit cloneしてcomposer updateしてcomposer installしてcp .env.example .envしてphp artisan key:generateしました.

php public/index.phpで動くことを確認して終わりです.

MySQLの設定

https://qiita.com/yasushi-jp/items/1579c301075d693a2a36 を参考にしました.

dnf localinstall https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
dnf module disable mysql
dnf install mysql-community-server
service mysqld start

そんでmysql_secure_installationを実行してパスワードを変更したりする. .envにパスワードを入れてくおく.

Apache の設定

例えば以下のように設定して、とりあえず Laravel をみれるようにしましょう.

<VirtualHost *:80>
    DocumentRoot 自分で指定したやつ
    <Proxy *>
        Require all granted
    </Proxy>

    ProxyRequests Off
    ProxyPreserveHost On
   # ProxyPass / http://localhost:3000/
   # ProxyPassReverse / http://localhost:3000/
</VirtualHost>

image.png

みれましたね.
/apiで Laravel にリクエストがいくようにしたらゴールとしましょう.

まずは Laravel の.htaccessを有効化するために, httpd.confを以下のようにDirectoryディレクティブ(?)を追加しましょう(confを分けておいた方がいいとは思う)

<VirtualHost *:80>
    DocumentRoot /var/www/project-name/public
    <Proxy *>
        Require all granted
    </Proxy>
    <Directory "/path/to/public">
        AllowOverride All
    </Directory>
    ProxyRequests Off
    ProxyPreserveHost On
   # ProxyPass / http://localhost:3000/
   # ProxyPassReverse / http://localhost:3000/
</VirtualHost>

まだ編集中です
最終的にはポート分けました. それ以外の方法がわからなかった...

Listen 80
NameVirtualHost *:80
Listen 81
NameVirtualHost *:81
~~省略~~
<VirtualHost *:80>
    <Proxy *>
        Require all granted
    </Proxy>
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyVia Off
    ProxyPass /api http://127.0.0.1:81/api
    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/
</VirtualHost>
<VirtualHost *:81>
    DocumentRoot /path/to/public
    <Directory "/path/to/public">
        AllowOverride All
    </Directory>
</VirtualHost>

これで/api/test/とかは Laravel で処理して, それ以外は Nuxt が動くようにしました!!
あーしんどかった...

SSLの設定

まずドメインとってDNSの設定をしましょう。
今回はデフォルトのドメインを使いました.

yum list installed | grep mod_sslをやってもmod_sslがなかったので、インストールする.
yum install mod_ssl
次に certbot を入れる
yum install certbot
yum install python3-certbot-apache
そんでcertbot --apache -d ドメインをやれば、あとは VirtualHost いじるだけ.

/etc/httpd/conf.d/ssl.conf に新しくVirtualHostが設定されるように指定したので、そこを編集していく。

<VirtualHost _default_:443>
# ~~略~~
    <Proxy *>
        Require all granted
    </Proxy>
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyVia Off
    ProxyPass /api http://127.0.0.1:81/api
    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/
</VirtualHost>

と書き足せばok.

firewall の設定忘れてた
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
で設定して、
firewall-cmd --zone=public --list-services
で確認したら, https が有効になっているはずです。

というわけで無事にhttpsで見れるようになりました。

certbot については https://certbot.open-code.club ここがわかりやすかった。(もちろん公式を読むべきだとは思う. 知らない間にコマンド変わってたりするし、プラグイン変わってたりするので.)

・後、sslもモジュールyumで入れるの忘れるなよ

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0