通っていたプログラミングスクールの特典でさくらサーバが無料で使えたので、Laravelで作ったプロジェクトをGithubを通してさくらサーバにデプロイしてみました。他の記事を参考にしてもどこかしらでつまいちゃったので、つまづいたポイント含めてまとめてみました。
※用語の間違いはご容赦くださり。
#やること
- ローカルで作成したLaravelのフォルダをGithubにアップロード
- 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はリポジトリの作成直後、こちらに表示されます。
git push origin master
これでアップロード完成です。詰まったらドラッグ&ドロップでアップロードしても問題ないかと思います。
#さくらサーバへのアップロード
###サーバへの接続
さくらサーバを契約した時に届いた「仮登録完了のお知らせ」というメールを開いて、下記の情報を控えます。
- 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 って主張を確認できれば、大丈夫です。
続けてvendorのデータをインストールします。
php composer.phar install
vendorのフォルダを確認できればOKです。
ls
###データベース作成・接続
さくらサーバのコントローラパネルにログインして、データベースを作成します。
データベースを作成したら、下記四点の情報を控えます。
- データベースサーバ
- ユーザ名
- 接続先パスワード
- データベース名
続いて.envファイルを作成していきます。
ターミナルに戻って、Laravelプロジェクトのディレクトリ(例:home/riooon/laravel
)で下記を入力してます。
cp .env.example .env
vimというやつを開いて、コピーした.envファイルを修正します。
vim .env
vimというやつには、閲覧モードと編集モードがあります。この2つを切り替えながら編集していきます。
(個人的)よく使うvimコマンド
i //編集モードを開く
esc //編集モードを閉じて閲覧モードに戻る
:wq //内容を保存(閲覧モードで使用可)
:q! //内容を保存せず終了(閲覧モードで使用可)
x //1文字削除(閲覧モードで使用可)
dd(連打) //1行切り取り(閲覧モードで使用可)
上記のように編集したら、 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/)
再びさくらサーバのコントローラパネルにログイン。
「ファイルマネージャー」を開きます。
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
という名前をつけて保存します。
(この内容は、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