LoginSignup
2
5

More than 3 years have passed since last update.

Laravelのさくらサーバへのデプロイつまづいたので、まとめてみました

Last updated at Posted at 2020-08-23

通っていたプログラミングスクールの特典でさくらサーバが無料で使えたので、Laravelで作ったプロジェクトをGithubを通してさくらサーバにデプロイしてみました。他の記事を参考にしてもどこかしらでつまいちゃったので、つまづいたポイント含めてまとめてみました。

※用語の間違いはご容赦くださり。

やること

  1. ローカルで作成したLaravelのフォルダをGithubにアップロード
  2. Githubにアップロードしたファイルをさくらサーバにデプロイ

Githubへのアップロード

ターミナルを使ってローカルで作成したフォルダの階層まで進み、下記コマンドを入力します。

git init
git add .
git commit -m "first commit" // ""はメッセージなので何でもOK
git remote add origin GitHubのリポジトリURL
(例:https://github.com/Riooon/laravel.git)

URLはリポジトリの作成直後、こちらに表示されます。

スクリーンショット 2020-08-23 15.34.00.png

git push origin master

これでアップロード完成です。詰まったらドラッグ&ドロップでアップロードしても問題ないかと思います。

さくらサーバへのアップロード

サーバへの接続

さくらサーバを契約した時に届いた「仮登録完了のお知らせ」というメールを開いて、下記の情報を控えます。

sakura.png

  • FTPサーバ名
  • FTPアカウント
  • FTP初期フォルダ
  • サーバパスワード

ターミナルから下記コマンドを入力し、さくらサーバにSSH接続します。パスワードを聞かれるので、「サーバパスワード」の値を入力します。

ssh riooon@riooon.sakura.ne.jp //これは例です
(ssh FTPアカウント@FTPサーバ名)

/home/アカウント名 の階層(何もしてなければそのまま)で、LaravelをアップロードしたGithubのリポジトリからコードを引っ張ってきます。

git clone https://github.com/Riooon/laravel.git

ターミナルの階層を移動・確認する時には、以下のコマンドを使うと便利です。

pwd //現在のディレクトリを表示
ls //一段下の階層を表示

/home/アカウント名の下にgit cloneで新たに作成したフォルダの階層が登場します。

ので、そこまで移動。

cd laravel // 階層は各自に合わせて

compserのインストール

compserをインストールしていきます。

curl -sS https://getcomposer.org/installer | php

続けて下記コマンドを入力します。

php composer.phar

Composer って主張を確認できれば、大丈夫です。

スクリーンショット 2020-08-23 16.27.52.png

続けてvendorのデータをインストールします。

php composer.phar install

vendorのフォルダを確認できればOKです。

ls

スクリーンショット 2020-08-23 16.30.55.png

データベース作成・接続

さくらサーバのコントローラパネルにログインして、データベースを作成します。

sakura.png

データベースを作成したら、下記四点の情報を控えます。

  1. データベースサーバ
  2. ユーザ名
  3. 接続先パスワード
  4. データベース名

db.png

続いて.envファイルを作成していきます。

ターミナルに戻って、Laravelプロジェクトのディレクトリ(例:home/riooon/laravel)で下記を入力してます。

cp .env.example .env

vimというやつを開いて、コピーした.envファイルを修正します。

vim .env

vimというやつには、閲覧モードと編集モードがあります。この2つを切り替えながら編集していきます。

(個人的)よく使うvimコマンド

i //編集モードを開く
esc //編集モードを閉じて閲覧モードに戻る

:wq //内容を保存(閲覧モードで使用可)
:q! //内容を保存せず終了(閲覧モードで使用可)

x //1文字削除(閲覧モードで使用可)
dd(連打) //1行切り取り(閲覧モードで使用可)

vim.png

上記のように編集したら、esc  :wq を続けて入力して保存します。

これでデータベースの接続は完了です。

アプリケーションキーを作成

以下を入力します。

php artisan key:generate

マイグレーションをして、データベースの中身を反映させます。

php artisan migrate

/www/に/public/の中身をコピーする

/www/にプロジェクトの一部をコピーして、URLを入力して閲覧できる様にします。

www/のディレクトリ まで移動します。

cd
cd www

下記を入力してpubicフォルダの中身をコピーします。

cp -r /home/アカウント名/Laravelプロジェクト名/public/* /home/アカウント名/www/
(例:cp -r /home/riooon/laravel/public/* /home/riooon/www/)

再びさくらサーバのコントローラパネルにログイン。

file-manager.png

「ファイルマネージャー」を開きます。

index.png

index.phpファイルをクリックして、左下に表示される鉛筆マークを選択します。

require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';

の2カ所を、下記のように変更します。

require __DIR__.'/../laravelプロジェクト名/vendor/autoload.php';
$app = require_once __DIR__.'/../laravelプロジェクト名/bootstrap/app.php';

例)
require __DIR__.'/../laravel/vendor/autoload.php';
$app = require_once __DIR__.'/../laravel/bootstrap/app.php';

先ほどの様にvimでも開けます。(極力触りたくない、、)

ここまで設定すれば、初期ドメインにアクセスするとページが表示される(はず!)です。

トップページ以外が表示されない

このとき、なぜか.htaccessファイルが/www/にコピーされないので(私だけ?)、トップページ以外が表示されません。

ので、こちらも同様に手動で作成していきます。

さくらサーバのコントロールパネルから「ファイルマネージャー」を同様に開いて、「表示アドレスへの操作」「ファイル作成」を選択します。

htaccess.png

下記の内容をコピーして貼り付け、.htaccessという名前をつけて保存します。
(この内容は、publicディレクトリ直下にあります。)

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

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

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

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

これでトップページ以外も表示される(はず!)です。

storageの画像が表示されない

ここまでやっても、storageフォルダにある画像が表示されません。

ローカルで作成したシンボリックリンクがstorage->publicにしか繋がっておらず、wwwに繋がっていないためだと認識しています。

そのため、storage->wwwのシンボリックリンクを別途作成します。

cd //トップの階層まで戻ります
ln -s /home/アカウント名/laravelプロジェクト名/storage/app/public /home/laravelプロジェクト名/www/storage
例) ln -s /home/riooon/laravel/storage/app/public /home/riooon/www/storage

以上で画像も表示される(はず!)です。

修正・追記が必要な点があれば、コメントいただけると嬉しいです。

参照元

https://arrown-blog.com/laravel-sakura-deploy/
https://note.com/koushikagawa/n/n69d534105f07
https://qiita.com/colorrabbit/items/755cfbb0e97d48280775
https://qiita.com/Baisel/items/49b16ce3231c749f6c6f

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