UbuntuにLaravel10のインストール

目次

Composerのインストール

Laravelのインストールするには、composerが必要ですので、まず最初にcomposerのインストール方法を説明します。

Composerとは

PHPのComposerは、PHPプロジェクトにおいて依存関係を管理し、パッケージを簡単にインストール・更新できる便利なツールです。Composerは、Laravelや多くのPHPフレームワークやライブラリの開発に使用されており、依存関係の解決やパッケージの自動ロードを簡単に行えるため、PHP開発の効率性を向上させます。

以下はComposerの主要な特徴と機能です:

依存関係管理

Composerは、プロジェクトで使用する外部ライブラリやパッケージの依存関係を管理します。これにより、必要なパッケージを一括でダウンロード・インストールできます。

自動ロード

Composerは、クラスや関数を自動的にロードするためのオートローダーを提供します。これにより、手動でクラスを読み込む必要がなくなり、コードの記述が簡素化されます。

パッケージのバージョン管理

Composerは、パッケージのバージョン管理をサポートしており、特定のバージョンのパッケージをプロジェクトに追加できます。バージョンの指定が簡単で、依存関係が正確に解決されます。

プロジェクト固有の依存関係

Composerはプロジェクトごとに composer.json という設定ファイルを使用します。このファイルには、プロジェクトで使用する依存関係やバージョン情報が記述されます。

コマンドラインツール

Composerはコマンドラインツールとして提供され、ターミナルから簡単にコマンドを実行できます。例えば、composer install コマンドを実行すると、依存関係のインストールが行われます。

パッケージの更新

Composerを使用すると、プロジェクトの依存関係を容易に更新できます。新しいバージョンのパッケージがリリースされた場合、composer update コマンドを使用して更新できます。

Composerは、PHPコミュニティで広く受け入れられており、PHPプロジェクトの開発とメンテナンスを効率的に行うための不可欠なツールの一つです。LaravelやSymfonyなどの主要なフレームワークやライブラリの開発でも活用されており、最新のLaravelやFlutterを使用する場合にも役立ちます。

依存関係をインストール

composerをインストールする前に、phpの依存関係をインストールします。

sudo apt install curl php-cli php-mbstring git unzip -y

インストーラーのダウンロード

次に、composerのインストーラーを現在のディレクトリにダウンロードします。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

インストーラーSHA-384を確認

セキュリティチェックのため、インストーラSHA-384を確認します。

php -r "if (hash_file('SHA384', 'composer-setup.php') === file_get_contents('https://composer.github.io/installer.sig')) { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

installer verifiedと表示されたらOKです。

インストーラSHA-384を確認するというのは、インストールファイルやアプリケーションのセキュリティを確保するための手順の一部です。SHA-384は、ファイルの内容を一意に識別するためのハッシュ関数の一つであり、ファイルが改ざんされていないことを確認するために使用されます。セキュリティは非常に重要ですので、インストールファイルの正当性を確認することは重要なステップです。

インストーラーの実行

そして、composerのインストーラーを実行します。

php composer-setup.php

インストーラーの削除

最後にインストーラーを削除します。

php -r "unlink('composer-setup.php');"

パスを通す

composerを /usr/local/bin へ移動して、どこからでも使えるようにします。

sudo mv composer.phar /usr/local/bin/composer

これでどこからでもcomposerが起動できます

Laravelのインストール

Laravelプロジェクトの作成

Laravelをインストールするために、Composerを使用します。まず、ターミナルを開いて以下のコマンドを実行します。

composer create-project --prefer-dist laravel/laravel /var/www/laravel

このコマンドにより、Laravelの最新バージョンが /var/www/laravel ディレクトリにインストールされます。

wwwのオーナー変更

Laravelプロジェクトのディレクトリをウェブサーバーのプロセスがアクセスできるように、オーナーを変更します。一般的には、www-data ユーザーとグループに変更します。

sudo chown -R www-data:www-data /var/www

パーミッション変更

Laravelプロジェクトの一部ディレクトリに書き込み権限を設定します。このステップはセキュリティの観点から注意が必要です。以下のコマンドを使用して、必要なディレクトリに適切なパーミッションを設定します。

  • /var/www/laravel/storage ディレクトリに書き込み権限を付与します。
sudo chmod 775 -R /var/www/laravel/storage
  • /var/www/laravel/bootstrap/cache ディレクトリに書き込み権限を付与します。
sudo chmod 775 -R /var/www/laravel/bootstrap/cache

これらの手順により、Laravelを/var/wwwディレクトリにインストールし、必要なファイルとディレクトリに適切なパーミッションが設定されます。ただし、セキュリティに十分注意して、パーミッションを設定することが重要です。

Nginxの設定

LaravelをNiginx上で起動させるためのNginx設定ファイルをlaravel.conf名で作成します。

laravel設定ファイル

/etc/nginx/sites-available にlaravel名のファイルを作成します。

sudo vim /etc/nginx/sites-available/laravel

設定を記述

下記の内容を記述して保存します。

server {
        listen 80;
        server_name laravel.my-domain;
        root /var/www/laravel/public;
        index index.php;

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

        location ~ \.php$ {
                fastcgi_pass   unix:/run/php/php8.2-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include        fastcgi_params;
                fastcgi_intercept_errors on;
        }
}

sites-enabledにシンボリックリンクの作成

sites-availableディレクトリから sites-enabledディレクトリへシンボリックリンクを作成し、この設定を有効にします。

sudo ln -s /etc/nginx/sites-available/laravel /etc/nginx/sites-enabled

Nginxの再起動

設定を反映させるためにNginxを再起動します。

sudo systemctl restart nginx

ブラウザで確認

無事Laravelのトップページが表示されたらOKです。

http://laravel.winroad.biz

laravel.winroad.biz はサブドメインを作成し、IPアドレスと紐付けています。

方法は、XserverのVPSサーバーにドメインの紐付けを参考にしてください。

SSL証明書の設定

SSL証明書の詳細な設定は、Let’s EncryptでSSL証明書の設定 を参考にしてください。

証明書の取得

下記コマンドで証明書を取得します。

sudo certbot --nginx -d my-domain

途中で、1と2の選択するコマンドが出ますので、2を選んでEnterします。

これは、httpでアクセスしたのを1はリダイレクトさせない処理で、2はhttpsにリダイレクトさせる処理です。

Successfully と表示されれば、OKです。

Nginxの設定

Nginxの設定の詳細は方法は、UbuntuにphpMyAdminのインストール の後半あたりに記述していますので、参考にしてください。

Nginxの設定ファイルの作成

sudo vim /etc/nginx/sites-available/laravel

下記の様に記述します。

server {
    server_name laravel.my-domain;

    root /var/www/laravel/public;
    index index.php;

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

    location ~ \.php$ {
        fastcgi_pass   unix:/run/php/php8.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
        fastcgi_intercept_errors on;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/laravel.winroad.biz/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/laravel.winroad.biz/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = laravel.winroad.biz) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    server_name laravel.winroad.biz;
    return 404; # managed by Certbot
}

基本的に、server_nameとlaravelの配置場所であるalias、SSL証明書の配置場所を変更すれば、すぐに使えると思います。

Laravelの初期設定

タイムゾーンとロケールの変更

/var/www/laravel/config/app.php ファイルの下記の箇所を修正します。

'timezone' => 'Asia/Tokyo',
'locale' => 'ja',
'faker_locale' => 'ja_JP',

言語ファイルの導入

Laravelの日本語パッケージは、GitHubの laravel-lang/lang リポジトリで管理されています。ここには多くの言語パッケージがあり、日本語パッケージも含まれています。

プロジェクトのルートディレクトリで以下のコマンドを実行し、laravel-lang/lang パッケージをインストールします。

cd /var/www/laravel
composer require laravel-lang/lang

vendor ディレクトリ内の lang ディレクトリにある ja フォルダを resources/lang ディレクトリにコピーします。

cp -R vendor/laravel-lang/lang/locales/ja resources/lang/

メールの日本語化

先に、ja ディレクトリを作成し、そこに下記ファイルを resources/lang/ja/ja.json 名で保存します。

sudo mkdir -p /var/www/laravel/resources/lang/ja
sudo vim /var/www/laravel/resources/lang/ja/ja.json

下記の内容を記述します。

{
"A fresh verification link has been sent to your email address.": "新しい確認リンクを送りました。",
"All rights reserved.": "",
"Before proceeding, please check your email for a verification link.": "次に進む前に、確認リンクのメールをチェックしてください。",
"click here to request another": "ここをクリックしてメールを再送信してください。",
"Confirm Password": "パスワード(確認用)",
"E-Mail Address": "メールアドレス",
"Error": "エラー",
"Forbidden": "禁止されています",
"Forgot Your Password?": "パスワードを忘れた方はこちら",
"Go Home": "ホームへ",
"Hello!": "こんにちは",
"hi": "こんにちは",
"If you did not create an account, no further action is required.": "アカウントの作成にお心当たりが無い場合は、このメールを無視してください。",
"If you did not receive the email": "メールが届かなかった場合",
"If you did not request a password reset, no further action is required.": "パスワードのリセットにお心当たりが無い場合は、このメールを無視してください。",
"If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser: :actionURL": "\":actionText\" ボタンが機能しない場合は, 次のURLをコピーしてWebブラウザに貼り付けてください。:actionURL",
"Login": "ログイン",
"Logout": "ログアウト",
"Name": "氏名",
"Oh no": "オーノー",
"Page Expired": "期限切れのページ",
"Page Not Found": "ページが見つかりません",
"Password": "パスワード",
"Please click the button below to verify your email address.": "メールアドレスを確認するには、下のボタンをクリックしてください。",
"Regards": "よろしくお願いします",
"Register": "アカウント作成",
"Remember Me": "ログイン状態を保持する",
"Reset Password": "パスワードリセット",
"Reset Password Notification": "パスワードリセット通知",
"Send Password Reset Link": "パスワードリセットリンクを送信",
"Service Unavailable": "サービスは利用できません",
"Sorry, you are forbidden from accessing this page.": "申し訳ありません、このページへのアクセスは禁止されています。",
"Sorry, the page you are looking for could not be found.": "申し訳ありません、探しているページは見つかりませんでした。",
"Sorry, you are making too many requests to our servers.": "申し訳ありません、一定時間内のリクエスト上限回数を超えました。",
"Sorry, you are not authorized to access this page.": "申し訳ありません、このページにアクセスする権限がありません。",
"Sorry, your session has expired. Please refresh and try again.": "申し訳ありません、セッションは期限切れです。更新してもう一度やり直してください。",
"Sorry, we are doing some maintenance. Please check back soon.": "申し訳ありません、メンテナンス中です。あとでもう一度確認してください。",
"Toggle navigation": "ナビゲーションを切り替える",
"Too Many Requests": "大量のリクエストがありました",
"Unauthorized": "認証が必要です",
"Verify Email Address": "メールアドレスを確認",
"Verify Your Email Address": "メールアドレスを確認してください",
"You are receiving this email because we received a password reset request for your account.": "パスワードリセットのリクエストを受け付けました。",
"Whoops!": "おっと!",
"Whoops, something went wrong on our servers.": "おっと、サーバーで何か問題が発生しました。"
}

データベースの設定

Laravelでデータベースを使用するためにデータベースの作成及び環境設定を行う必要があります。

MariaDBにログイン

まず、ターミナルを開き、以下のコマンドを実行してMariaDBにログインします。

sudo mysql -u root -p

データベースの作成

MariaDBプロンプトが表示されたら、以下のコマンドを実行して laravel(任意)という名前のデータベースを作成します。

CREATE DATABASE laravel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

上記のコマンドは、laravelという名前のデータベースを作成し、文字セットと照合順序を utf8mb4 およびutf8mb_unicode_ciに設定します。これはLaravelアプリケーションで推奨される設定です。

ユーザーの作成と権限の付与

新しいデータベースにアクセスするためのユーザーを作成し、権限を付与することもできます。

CREATE USER 'laraveluser'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON laravel.* TO 'laraveluser'@'localhost';
FLUSH PRIVILEGES;

上記のコマンドで、laraveluser(任意)という名前のユーザーを作成し、laravel データベースに対するすべての権限を付与しています。your_password を適切なパスワードに置き換えてください。

終了

最後に、以下のコマンドを実行してMariaDBプロンプトから退出します。

exit

これで、laravelという名前のデータベースが作成され、(オプショナルで)laraveluser という名前のユーザーが権限を持ってアクセスできるようになりました。

.envファイルに記述

上記のデータベースをLaravelに認識させるために、.env ファイルに下記の様に記述します。

sudo vim /var/www/laravel/.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laraveluser
DB_PASSWORD=your_password
  1. DB_CONNECTION=mysql:
    • これは使用するデータベースの種類を指定します。ここでは mydql(または、MariaDB)を使用することが指定されています。LaravelはMySQL以外にも、PostgreSQL、SQLite、SQL Serverなど複数のデータベースシステムをサポートしています。
  2. DB_HOST=127.0.0.1:
    • データベースサーバーのホストアドレスです。127.0.0.1はローカルホストを指すIPアドレスで、これはアプリケーションが同じマシン上のデータベースサーバーに接続することを意味します。
  3. DB_PORT=3306:
    • データベースサーバーがリッスンしているポート番号です。MySQLのデフォルトポートは3306です。
  4. DB_DATABASE=laravel:
    • Laravelアプリケーションが使用するデータベースの名前です。
  5. DB_USERNAME=laraveluser:
    • データベースに接続するためのユーザー名です。この例では laraveluserとなっています。
  6. DB_PASSWORD=your_password:
    • 上記ユーザーのパスワードです。セキュリティ上の理由から、実際のパスワードは .envファイルに直接記述され、通常は外部に公開されません。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次