0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntu 24.04 への Laravel11 のインストール

Last updated at Posted at 2024-07-09

この備忘録は さくらのVPS で CentOS6 から Ubuntu 24.04 に移行したときの、
Ubuntu 24.04 側で何をやったかの記録。(CentOS6の時の知識とネットの知識でどうにかなんとかやる的な)
なので、色々順番がダメダメなので、もう一度くらいやれば多分いい感じになりそうだけど
もう一度やるのは面倒なのでこのままで。
あ、https 対応しなきゃ...って思い出したのでこの記事では https には対応していません。

■ この記事に出てくるヤーツのバージョン

Ubuntu 24.04 LTS
nginx version: nginx/1.26.1
PHP 8.3.9 (cli) (built: Jul  5 2024 12:04:09) (NTS)
MySQL Server version: 8.0.37-0ubuntu0.24.04.1 (Ubuntu)
node v18.19.1
npm 9.2.0

はじめに

■ ubuntu で最初にやること

sudo apt-get update
(と思っていたけど、下記 nginx 手順内で apt update やるから不要だったやつ)

nginx インストール

nginx のインストール

https://nginx.org/en/linux_packages.html#Ubuntu を参考にインストールする
分からん場合は stable を指定して mainline はやらないほうがいいよ。と

手順の最期に sudo apt update あるじゃん。
apt って何?https://aws.amazon.com/jp/compare/the-difference-between-apt-and-apt-get/
なるほど分からん。多分これからは apt-get じゃなくて apt 使おうね的な感じかな
apt に対応していないパッケージもあるから注意してね、的な。

# 手順は URL にある通りで省略。

# サービス起動する
$ sudo systemctl start nginx
$ sudo systemctl status nginx
$ nginx -v
nginx version: nginx/1.26.1

こいつ自動起動してくれるかな。後回しで。

https://nginx.org/en/docs/beginners_guide.html あった。けど google chrome の翻訳動かないでやんの。。くそう

status で以下が出ていたので、/etc/nginx/ に設定ファイルがあるっぽい

Process: 2092 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)

とりあえずの index.html の置き場

/home/ubuntu/html/index.html があるとして。
/home/ は色々制約があるので 昔からの /var/www/ 配下が良さげ。

sudo mkdir /var/www
mv /home/ubuntu/html /var/www/

sudo vim /etc/nginx/conf.d/default.conf で location root を変更

location / {
    root   /var/www/html;

で reload する(絶対忘れる)

sudo systemctl reload nginx

見れた!

index.html 変えたい欲...

php インストール

php のインストール 8.3 系

コレやる。https://php.watch/articles/php-8.3-install-upgrade-on-debian-ubuntu#php83-ubuntu-quick

## Save existing php package list to packages.txt file
sudo dpkg -l | grep php | tee packages.txt

# Add Ondrej's PPA
sudo add-apt-repository ppa:ondrej/php # Press enter when prompted.
sudo apt update

# Install new PHP 8.3 packages
sudo apt install php8.3 php8.3-cli php8.3-{bz2,curl,mbstring,intl}

# Install FPM OR Apache module
sudo apt install php8.3-fpm

## Remove old packages
# sudo apt purge php8.2*

確認する

$ php -v
PHP 8.3.9 (cli) (built: Jul  5 2024 12:04:09) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.9, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.9, Copyright (c), by Zend Technologies

入った!

composer のインストール

参考サイト:https://getcomposer.org/download/

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
# で
sudo mv composer.phar /usr/local/bin/composer

composer -v # 確認

nodejs のインストール

どのバージョンが入るか分からんけどとりま入れる。

$ sudo apt install nodejs npm

$ node -v
v18.19.1
$ npm -v
9.2.0

ん。18.19 なら良いか

Laravel に必要な php 拡張ライブラリを入れる

参考: https://qiita.com/honeytrap15/items/c614b49c2702b82efa9c#laravel%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B

sudo apt install php-dom php-curl php-mbstring
sudo apt install unzip

は? E: Package 'php-dom' has no installation candidate ってエラー出たけど??
ちゃんと確認しなきゃダメか?
まぁいいや、エラーのときは別途。

この 参考の qiita 順番が少し前後してる。まぁええか。わかるようにやろ。

Laravel デプロイ

Laravel 配置

$ cd /var/www/
$ git clone git@github.com:takemitsu/RecordingAnniversaries8.git
fatal: could not create work tree dir 'ra8': Permission denied

sudo で clone はしたくないので /var/www のオーナーを nginx にして nginx にユーザを切り替えて実行する

まずは そのユーザがいるかを確認

$ cat /etc/passwd | grep nginx
nginx:x:999:988:nginx user:/nonexistent:/usr/sbin/nologin
$ cat /etc/group | grep nginx
nginx:x:988:
$ cat /etc/group | grep www
www-data:x:33:

ユーザ切り替え

$ sudo su nginx
This account is currently not available.

はい。無理でした!

仕方がないので /home/ubuntu で git clone して /var/www に入れるようにしよう。

cd ~/
git clone git@github.com:takemitsu/RecordingAnniversaries8.git ra8
# pubkeyとかは別途で設定済み。で移動する
sudo mv ra8 /var/www

オーナーとパーミッション変更

# オーナーを nginx に
sudo chown -R nginx:nginx /var/www/ra8
# Laravelのディレクトリパーミッション変更のやつ 
# nginxオーナーにしたから不要か?php-fpmが実行なのか?良く分からんけど
sudo chmod -R 777 storage
sudo chmod -R 777 bootstrap/cache

■ 動作まで

$ composer update
Your requirements could not be resolved to an installable set of packages.

# 足りねぇって言われたので足す
$ sudo apt install php8.3-xml
$ sudo apt install php8.3-dom

$ composer update
file_put_contents(./composer.lock): Failed to open stream: Permission denied
# はい。めんどくせぇ

$ composer install
/var/www/ra8/vendor does not exist and could not be created:
# ですよね、知ってます。準備してから持ってこれば良かったな。

# ちょっとめんどいけど、root で作って ユーザ変更する感じにする。
$ sudo su
# composer install
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Continue as root/super user [yes]? No!
# そうだね。ダメだね。

# ユーザ変えよ。
# cd /var/www/
# chown ubuntu:ubuntu -R ra8
# exit

$ composer install
# できた。mv のときに permission おかしくなったんかな?まぁいいや。
$ php artisan serve

   INFO  Server running on [http://127.0.0.1:8000].

  Press Ctrl+C to stop the server

動いたっぽい。

nginx での Laravel の設定

■ nginx の設定

公式 https://laravel.com/docs/11.x/deployment#nginx を確認しながらいい感じにやってく。

$ sudo vim /etc/nginx/conf.d/ra.conf
# 設定省略
$ sudo systemctl reload nginx

ログ確認したら php-fpm から permission denid でてる。

*202 connect() to unix:/var/run/php/php8.3-fpm.sock failed (13: Permission denied)

php-fpm の設定確認して変更する。ググったら listenのowner/group変更すれば良さげ

sudo vim /etc/php/8.3/fpm/pool.d/www.conf
# before
listen.owner = www-data
listen.group = www-data
# after
listen.owner = nginx
listen.group = nginx

次に /run/php/php8.3-fpm.sock のオーナーを nginx にしてみる

sudo chown nginx:nginx /run/php/php8.3-fpm.sock

nginx の設定も php-fpm 側の sock の記述に合わせる

# before
/var/run/php/php8.3-fpm.sock
# after
/run/php/php8.3-fpm.sock

それぞれ再起動する

sudo systemctl reload nginx
sudo systemctl reload php8.3-fpm

ページリロードしたら 500 エラーでた。nginx の error.log にはエラーがないので laravel 側のログを確認する

$ tail -f -n 1000 storage/logs/laravel.log
No application encryption key has been specified.

はい。 .env やってなかったので .env 作ります。

$ cp .env.example .env
$ vim .env
# 設定省略

ページリロード!
はい。mysql と mysql のドライバ足りないって。

mysql インストール

mysql のインストール

とりまバージョン知らんけど入れてみる。

sudo apt install mysql-server
sudo mysql_secure_installation
sudo mysql

mysql ユーザの作成

データベース名やらユーザ名やらパスワードはもちろん .env に合わせて適宜変更してね。

mysql> create database ra8;
mysql> create user 'ra_user' IDENTIFIED BY 'password'
mysql> flush privileges ;
# 既存ユーザのパスワードを変更する場合
mysql> -- set password for ra_user@localhost = 'password'
mysql> -- flush privileges;
mysql> grant all on ra8.* to ra_user;
mysql> flush privileges ;
mysql> show grants for 'ra_user';
mysql> exit
# 入れるかテスト
$ mysql -u ra_user -p ra8
mysql> exit

データ流し込み

mysqldumpしたデータが有る場合。
なお、データは local から scp で転送した。

$ mysql -u ra_user -p ra8 < mysqldump_ra_20240708.sql

php-mysql ライブラリインスト

sudo apt install php8.3-mysql

その他 Laravel 関連

フロントの準備

以下メッセージが出たので フロントをどうにかする

Vite manifest not found at: /var/www/ra8/public/build/manifest.json

npm run build すればいいはず。(react/ssr..だったはずの場合。うろ覚え。)

npm install
npm run build

はい、大丈夫そう。

Laravel のキャッシュ系をターンとやる

キャッシュ系はこれだけじゃないけど今回のに必要そうなやつだけ

$ php artisan optimize
$ php artisan config:cache
$ php artisan route:cache

なんか直した時やること

以下から適当にやればいいはず。

$ git pull

# php 側の場合
# composer 追加した
$ composer install
# migrate書いた
$ php artisan migrate
# とりあえず。
$ php artisan optimize
# config 直した時
$ php artisan config:cache
# route 追加したとき
$ php artisan route:cache
# JS(React)側の場合
$ npm run build

おわり!

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?