17
23

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 5 years have passed since last update.

さくらのレンタルサーバにLaravelアプリをデプロイしたときのメモ

Last updated at Posted at 2020-02-02

Laravel で作られたWebアプリケーションを**さくらのレンタルサーバ【スタンダード】**にデプロイする機会があったのでメモ。

**レンタルサーバ(共用サーバ)**と **VPS(仮想専用サーバ)**のコストパフォーマンスの差が縮まりつつある今日、レンタルサーバを新規に契約する人も減っているので、このノウハウに需要はあまり無いかもしれないが誰かの参考になれば。

実行環境

ソフトウェア バージョン
OS FreeBSD 11.2-RELEASE-p14
Apache 2.4.41
MySQL 5.7.27
PHP 7.3.12
Laravel 5.6.5 (Laravel6に移行するかは目下検討中)

Web公開フォルダ

さくらのサーバコントロールパネルにおいて、次のように設定されているものとする。
image.png
なお、2019年3月に、サーバコントロールパネルのデザインリニューアルがあった。上図は新コントロールパネルのもの。

構築手順

ホームディレクトリの下に専用ディレクトリを作成

共用サーバなので、自由がきくのは自分のホームディレクトリの下のみである。

cd ~
mkdir bin

curl -sS https://getcomposer.org/installer | php -- --install-dir=bin --filename=composer
chmod 755 bin/composer
mkdir laravel

FTP転送

ローカル環境にあるLaravelプロジェクトルートごと、~/laravelの下にアップロードする。

パーミッション設定とシンボリックリンク作成

PROJECT_ROOTはLaravelのアプリケーション名に読み替えて欲しい。

chmod -R 777 ~/laravel/PROJECT_ROOT/storage
chmod -R 777 ~/laravel/PROJECT_ROOT/bootstrap/cache

ln -s ~/laravel/PROJECT_ROOT/public ~/www/webpath

htaccess の編集

~/www/webpath/.htaccess
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On
    RewriteBase /

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # SSL Redirect
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

パーミッション設定。

chmod 604 ~/www/webpath/.htaccess

Laravel の修正

Laravelのエントリポイントとなるindex.phpの下記2行を修正。

~/laravel/PROJECT_ROOT/public/index.php
require '/home/初期アカウント名/laravel/PROJECT_ROOT/vendor/autoload.php';
$app = require_once '/home/初期アカウント名/laravel/PROJECT_ROOT/bootstrap/app.php';

環境定義ファイルの修正。データベースの接続情報はサーバコントロールパネルから確認する。

~/laravel/PROJECT_ROOT/.env
APP_ENV=production
APP_DEBUG=false

DB_CONNECTION=mysql
DB_HOST=mysql9999.db.sakura.ne.jp
DB_PORT=3306
DB_DATABASE=初期アカウント名_xxxx_db
DB_USERNAME=初期アカウント名
DB_PASSWORD=PASSWORD

プロジェクトの初期化、データベースのマイグレーション。

php artisan key:generate
php artisan clear-compiled
php artisan optimize
php artisan config:cache
php artisan view:clear

php artisan migrate

以上。
ちなみに、さくらのレンタルサーバは一応cronが使える。今回は扱わなかったが、キューワーカーが必要ならサーバコントロールパネルのCRON画面にphp artisan queue:workを設定することになると思う。

17
23
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
17
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?