はじめに
cloud9で開発したものをローカルにgit cloneします。つまりコピーします。
cloud9とローカルの2刀流で使用している方向けです。cloud9に移行し開発していたが、ローカルとだいぶ内容が変わってしまったという方多いのではないでしょうか。
私も元々ローカルで開発していましたが、諸事情でcloud9にcloneし、そこでで開発していました。しかし夕方のcloud9は動作が重く効率が悪いので、またローカルに戻すことにしました。ローカルディレクトリとファイルがだいぶ変更されているので、一度削除しcloneすることにしました。
元々ローカルの環境構築がされている前提ということはご了承ください。
初心者&初投稿なのでいろいろ大目にみてやってください。
記事内での略
・DB:データベース
やること
★ローカルの元のディレクトリ(プロジェクト)のDB削除→★同様にローカルのディレクトリ(プロジェクト)削除
→★git clone
→★.envをローカル仕様にする。→★https仕様からhttp仕様にする
→★DB作る→★migrateする
ローカルディレクトリ(プロジェクト)
DB削除
ターミナルを開き、消したいディレクトリ(プロジェクト)まで移動しましょう(cdコマンド)。
そのディレクトリでmysqlを起動しましょう。
mysql -u root
削除したいDBに入りましょう。私のデータベース名は「Tt」なので、
mysql>use Tt
早速消しましょう。
mysql> drop database Tt;
Query OK, 4 rows affected (0.07 sec)
mysqlを終了します。
mysql> quit
Bye
外部制約によるエラー
エラーが出てない方はスルーしてください。もし以下のようなエラーが出たら。
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
「テーブルに外部制約がついていて削除・更新できません」という意味です。外部制約とは、中間テーブルと関係を持ったテーブルは削除できない、という決まりです。以下コードで一時的に外部制約を解除しましょう。
mysql> set foreign_key_checks = 0;
では、削除しましょう。
mysql> drop database Tt;
Query OK, 4 rows affected (0.07 sec)
削除した後は、一時的に無効にした外部制約を有効にしましょう。
set foreign_key_checks = 1;
ローカルのディレクトリ(プロジェクト)削除
現在削除したいディレクトリに移動済みのはずです。なので1つ親のディレクトリに戻りましょう。
$ cd ..
削除したいディレクトリ名は「Tt」なので
$ rm -fr Tt
$ ls
コマンドでディレクトリが消えているか確認しましょう。
git clone
現在いるディレクトリにクローンプロジェクトを設置したいはずですので、gitcloneします。
githubのユーザー名:Twice クローンしたいリモートリポジトリ名:Ttの場合は下記コマンドです。
$ git clone https://github.com/Twice/Tt
.env
ローカルのクローンしたディレクトリ直下(エディタファイルツリーのかなり下の方)に.env.example
があります。cloud9の内容を.env
をコピペして貼りつけ、名前も.example
を消して.env
に変更しましょう。
.env
がなければターミナルから作成しちゃいましょう。
$ touch .env
ちなみに私はいじる部分はありません。なぜならデータベースのuser namerootにしているからです。.env
を開くとDB_USERNAME=root
と書いてあります。このおかげで権限や認証などめんどくさいことをしないで済んでいます。
composerをインストールする
php artisan serve
すると下記エラーが出ませんか?A,Bの2通りのエラーメッセージが報告されています。
A
Warning:
require(/Users/k**********i/Desktop/techboost/Tokumei2/vendor/autoload.php):
failed to open stream: No such file or directory in
/Users/k**********i/Desktop/techboost/Tokumei2/artisan on line 18
Fatal error: require(): Failed opening required
'/Users/k**********i/Desktop/techboost/Tokumei2/vendor/autoload.php'
(include_path='.:') in /Users/k**********i/Desktop/techboost/Tokumei2/artisan on line 18
k**********oAir:Tokumei2 k**********i$ composer install
意味は下記です。
/project/artisan の 18 行目で /project/vendor/autoload.php というファイルが求められますが/project/vendor/autoload.php というファイルは存在しません
これはcomposerがやってくれるので、コマンド実行しましょう。
composer install
B
Could not open input file: artisan
こっちのエラーメッセージの場合は、updateしましょう。
composer update
https仕様からhttp仕様にする
https通信がデフォルト、という設定を消す
cloud9ではURL(通信手段)はhttpsで、ローカルでのURLはhttpです。cloud9を使用している方は、httpsになるよう設定しましたよね?設定しないとサーバーに繋いだ時下記エラーが出ると思います。
cloud9では2020年1月あたりからhttpのURLでサーバー接続するとこのようなエラーが出るようになりました。
Oops VFS connection does not existエラー
その設定は、app/Providers/AppServiceProvider.php
に書いてあります。
下記コードです。コメントアウトしましょう。
public function boot()
{
if (\App::environment('production')) {
\URL::forceScheme('https');
}
}
ファイル(CSS,Javascriptなど)の読み込みをsecure_
じゃなくする
CSSやbootstrapが無効に、適用されなくなっていませんか?私は下図のようになりました。
原因はファイル読み込みの記述です。blade.php
の
{{ secure_asset() }}
の部分は全てです。<link href="{{ secure_asset('css/app.css') }}" rel="stylesheet">
↓変更
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
下図のように元通りになりました。
DBを作成する
DB名が'''Tt'''にする場合です。
$ mysql -u root
mysql> create database Tt;
migrateする
DB_USERNAME=root
なので、そのままmigrateします。
$ php artisan migrate
以上で私は問題なく動きました。
最後に
間違った表現や、実は不要な操作があるかもしれませんが、そこはご了承ください。
よくよく考えたらローカル用のリモートリポジトリ作成すればよかったですね。作成します笑