CPIのホスティングサービス ACE01 2015 で Laravel を動かす手順メモ。
共用サーバーなので root 権限がなく色々制約はありますが、大丈夫です。
1. composer をインストールします
① SSH でサーバーにログインします
- CPI のコントロールパネルから設定して、SSH 接続します。
- Windows 環境なら TeraTerm でショートカット作っちゃう方法が、Mac 環境なら ~/ssh 以下に .config を設定するとアクセスが楽です。
②composer をインストールします
$ cd ~/
$ mkdir bin
$ curl -sS https://getcomposer.org/installer | php-7.0 -- --install-dir=bin --filename=composer
時間かかるのでその間にローカルのディレクトリ決めたり(S)FTPを設定して待ちましょう
2. Laravel をインストールします
① Laravel をインストールします
$ php-7.0 ~/bin/composer create-project --prefer-dist laravel/laravel
※通常と大きく違う部分です
※パーミッション変更はあまり必要なかったように思います
②圧縮してローカルに落としてきます
$ cd ~/
$ tar zcvf laravel.tar.gz laravel
ダウンロードしてきます
Windows 環境の場合、ローカル側では cygwin を使うと Linux 感覚そのまま作業することができますね!
ローカルで $ tar zxvf laravel.tar.gz
して解凍します
③ルートディレクトリを変更します
ルート権限が無くルートディレクトリを変更できないので、Laravel の設定からルーティングを変更します
public 以下をそのまま、root/html にコピーします
root/html/index.php を編集します
[ 変更前 ]
require __DIR__.'/../vendor/autoload.php';
.
.(中略)
.
$app = require_once __DIR__.'/../bootstrap/app.php';
[ 変更後 ]
require dirname(__DIR__).'/laravel/vendor/autoload.php';
.
.(中略)
.
$app = require_once dirname(__DIR__).'/laravel/bootstrap/app.php';
root/html/.htaccess を CPI に合わせて3か所追記します
AddHandler x-httpd-php71 .php #追記
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
Options +SymLinksIfOwnerMatch #追記
RewriteEngine On
RewriteBase / #追記
.
.
.
root/html 以下をアップロードして、index.html をサーバーから削除します
④アクセスしてみます
ブラウザでサイトURLを叩いてアクセスしてみます
表示がおかしければサーバーログか storage/logs/Laravel.log を参照してみてください
3. 認証を実装します
① SSHでサーバーにログインします
② 認証を有効化します
$ cd ~/laravel
$ php-7.0 migrate make:auth
ちなみにここでブラウザを再読み込みすると、右上にLOGIN, REGISTER のリンクが増えています
③データベース設定を変更します
.env を編集します
DB_HOST=127.0.0.1
DB_PORT=3307
DB_DATABASE=*データベース名*
DB_USERNAME=*データベースユーザー名*
DB_PASSWORD=*データベースパスワード*
※DB_PORTはMySQL5.5なら3306 / 5.6なら3307です
④操作用のモデルを作成します
$ php-7.0 artisan make:model Model/MyUser
class MyUser extends Model
{
protected $table = 'users';
protected $dates = ['deleted_at'];
protected $guarded = ['id'];
protected $hidden = ['password', 'remember_token'];
}
⑤ DatabaseSeeder を設定してマスターデータを登録します。
⑥ DBをmigrateします(同時にSeederを実行してテストデータを入れていきます)
$ php-7.0 artisan migrate --seed
※migration でエラーが出るようなら多分文字数制限の設定だと思います。 解決してから
$ php-7.0 artisan migrate:refresh --seed
※~~ already exists 的なエラー出るようなら、phpMyAdmin 等で一度 DB を空にして、再度 migrate してください
⑦ アクセスしてログインしてみます
ブラウザでサイトURLを叩いてアクセスしてみます
Loginからログイン操作をしてみます
⑧ ログアウトします
上手くいけばログアウトもしておきます
4. メールアドレス以外で認証できるようにカスタマイズしてみます
【参考】 Laravel 5.4 の認証機能とそのカスタマイズ が非常にわかりやすく、大変参考になりました。
① マイグレーションファイルを編集します
今回はlogin_idとpasswordでの認証に変更します
...(前略)
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('login_id', 100); // 追加
③ DatabaseSeeder を更新します
④ DB を migrate します
$ php-7.0 artisan migrate --seed
⑤ ログインフォームを編集します
resources/views/auth/login.blade.php
のE-mail欄をuser_idに変更します。
⑥ 認証メソッドを追加します
class LoginController extends Controller
{
... (中略)
public function username()
{
return 'login_id';
}
}
を追加します
⑦ アクセスしてログインしてみます
ブラウザでサイトURLを叩いてアクセスしてみます
Loginからログイン操作をしてみます
⑧ ログアウトします
上手くいけばログアウトもしておきます