2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ubuntu 22.04環境にnginx + php-fpmでLaravelアプリケーションを構築

Last updated at Posted at 2022-10-20

概要

サーバにインストールしたUbuntu 22.04環境で本番向けのLaravelアプリケーションを動かします。

nginxはhttpのウェブサーバで、php-fpmとはPHPのCGI(ウェブサーバでスクリプトを実行して、動的コンテンツを生成する仕組み)です。
今回はnginxをウェブサーバとして動かして、php-fpmと連携させることでLaravelのアプリケーションが動作するようにしていきます。

今回は、dockerなどのコンテナは使用せずに、ubuntu上に直接必要なソフトウェアをインストールしていきます。

image.png

必要なパッケージのインストール

nginxのインストール

$ sudo apt update
$ sudo apt install nginx

PHPのインストール

$ sudo apt update
$ sudo apt install php

PHPはデフォルトだと、8.1のバージョンがインストールされます。

$ php --version
PHP 8.1.2 (cli) (built: Aug  8 2022 07:28:23) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies

PHP-fpmのインストール

$ sudo apt install php-fpm

composerのインストール

Laravelアプリの構築に必要になります。

$ curl -sS https://getcomposer.org/installer | php
$ mv ./composer.phar /usr/local/bin/composer
$ composer --version
Composer version 2.4.3 2022-10-14 16:56:41

nodejsのインストール

$ sudo apt install nodejs npm
$ node --version
v12.22.9

設定

nginxとphp-fpmの連携の設定

default.confを修正する

$ sudo vim /etc/nginx/sites-available/default
server {
        listen 80;
        root /app/public;

        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-Content-Type-Options "nosniff";

        index index.php;

        charset utf-8;

        location / {
                try_files $uri $uri/ /index.php$query_string;
        }

        location = /favicon.ico {
                access_log off;
                log_not_found off;
        }

        location = /robots.txt {
                access_log off;
                log_not_found off;
        }

        error_page 404 /index.php;

        location ~ \.php$ {
                fastcgi_pass unix:/run/php/php8.1-fpm.sock;;
                fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
                include fastcgi_params;
        }

        location ~ /\.(?!well-known).* {
                deny all;
        }

}

設定変更後はnginxを再起動する

$ sudo systemctl restart nginx

Laravelアプリを配置する

何らかの方法でサーバにソースを配置してプロジェクトに移動する。

PHPの必要なパッケージをインストール

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

unzipがないとワーニングが出るのでインストール

$ sudo apt install unzip

composerで必要なパッケージをインストール

$ composer update

viewをビルドする

$ npm install
$ npm run prod

Laravelのアプリケーションの構築

ドキュメントルートにLaravelのプロジェクトを配置する。
今回の場合は /app

$ sudo mv <prodject> /app
$ cd /app

本番用の .envを生成する

$ sudo cp .env.example .env.prod
$ sudo php artisan key:generate

キャッシュを生成する

$ sudo php artisan config:cache --env=prod
$ sudo php artisan route:cache --env=prod
$ sudo php artisan view:cache --env=prod

コピーしたenvファイルを環境に合わせて修正する。

ストレージにnginxのユーザ(www-data)でアクセスできるようにする。

$ sudo chown www-data:www-data /app

おわり

ユーザの権限など細かいところは端折ってますが、とりあえずここまでやるとnginxとphp-fpmを使ってLaravelのアプリケーションを動かせるようになります。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?