LoginSignup
4
5

More than 1 year has passed since last update.

Laravelをさくらのレンタルサーバで動かしてみた【環境構築】

Last updated at Posted at 2019-12-27

はじめに

こんにちは mako です。

Laravelをさくらのレンタルサーバで外部に公開した方法を簡単に紹介します!!

いつもローカル環境(MAMP)で動かしていて外部に公開するときにデータベースの設定につまずいたので、そこについても紹介していきます。

階層一覧

home/
 ├ bin/
 │ └ composer
 ├ www/
 │ └ {'projectname'}/
 │   └ config/
 │      └ database.php
 │   └ public/
 │   └ など...
 │   └ .env
 └ など...

さくらでサブドメインを作成

さくらレンタルサーバ上に新しいドメインを追加します。
好きなドメイン名とフォルダの階層パスを設定します。

さくらドメイン.jpg

ドメイン名
好きなドメインを決める
パス
指定フォルダの箇所に「/home/{'アカウント名'}/www/{'プロジェクトルート'}/public」で設定する
![pass.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552607/cb82ddfa-d396-477e-d8c7-3ce6ffab4909.jpeg)

ssh接続してlaravel設定

手順

  1. ssh接続
  2. composerのインストール
  3. プロジェクトをclone
  4. .htaccess設定
  5. データベース設定
  6. アプリケーションキーを生成
  7. マイグレーションする

①ssh接続

最初にsshクライアントでレンタルサーバにログインする。

ssh (username)@(hostname).sakura.ne.jp
password : 'password'

②composerのインストール

ライブラリの依存関係を解決するために入れる。
今回は「home/bin」にcomposerをインストールする。

mkdir bin
curl -sS https://getcomposer.org/installer | php -- --install-dir=bin --filename=composer
composer self-update

③プロジェクトをclone

今回はwwwフォルダの配下へ直接配置しますが、セキュリティなどの関係上シンボリックリンクを作って別のところに配置した方がいいらしいです。
個人的にgithubからcloneするのが簡単かなと思います。

cd ~/www/
git clone 'repository'

% composer install
% composer dump-autoload --optimize

④.htaccess設定

「{'project_root'}/public/.htaccess」を設定しないといけないらしい。
参考サイト:https://codezine.jp/article/detail/11370

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

    RewriteEngine On

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

+   RewriteBase /

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

⑤データベース設定

Laravelのhomeディレクトリにある「.env」を編集する。

cd ~/{'projectname'}
vi .env

sakuradb.jpg

「.env」の以下の箇所を変更する

DB_CONNECTION=mysql
DB_HOST=dbhost.db.sakura.ne.jp
DB_PORT=3306
DB_DATABASE=dbname
DB_USERNAME=dbysername
DB_PASSWORD=dbpassword

⑥アプリケーションキーを生成

APP_KEYがデフォルト値のままなので変更する。

php artisan key:generate

⑦マイグレーションする

php artisan migrate

ここでエラーをはかなかったからさくらのMySQLの方にデータベースが正常に作成されているはずです。
シーダーもここで行えます。

マイグレーションが上手くいかなかった(筆者の場合)

データベースが見つからないとエラーがでた

In Connection.php line 664:
SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = database and table_name = migrations)  

データベースのホスト名,ユーザ名,データベース名前,パスワード何回も確認しても間違えてないし調べまくったらどうも「database.php」てのが影響してることが分かった。

それで調べたとうり修正したらマイグレーションが実行できた。
原因として「'unix_socket'」がどうも違ったらしい。
さくらの方でデータベースにログインしてソケット調べたとうりに入力したはずなのにな。。。
(※修正部分「'unix_socket'」部分を空欄にしたらできた。)

        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'dbname'),
            'username' => env('DB_USERNAME', 'dbysername'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

まとめ

さくらのレンタルサーバで作成したLaravelを外部に公開することができました!
レンタルサーバの仕組みとかvimの使い方など勉強になりいい経験となりました!

今回つまずいた原因としてまだしっかりLaravelとMySQLの接続の仕組みを理解してなかったのでしっかり勉強していこうと思います。
「.env」「config / database.php」について参考になったサイト
こちら データベースの環境設定

4
5
2

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