7
8

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.

CPI ACE01 2015へComposerでLaravelをインストールしてログインするまで

Last updated at Posted at 2017-09-25

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 を編集します

[ 変更前 ]

root/html/index.php
require __DIR__.'/../vendor/autoload.php';
.
.中略
.
$app = require_once __DIR__.'/../bootstrap/app.php';

[ 変更後 ]

root/html/index.php
require dirname(__DIR__).'/laravel/vendor/autoload.php';
.
.中略
.
$app = require_once dirname(__DIR__).'/laravel/bootstrap/app.php';

root/html/.htaccess を CPI に合わせて3か所追記します

root/html/.htaccess
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
app/Model/MyUser.php
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での認証に変更します

database/migrations/***_create_users_table.php
    ...前略

    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に変更します。

###⑥ 認証メソッドを追加します

app/Http/Controllers/Auth/LoginController.php
class LoginController extends Controller
{
    ... 中略

    public function username()
    {
        return 'login_id';
    }
}

を追加します

###⑦ アクセスしてログインしてみます
ブラウザでサイトURLを叩いてアクセスしてみます
Loginからログイン操作をしてみます

###⑧ ログアウトします
上手くいけばログアウトもしておきます

7
8
4

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
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?