#はじめに
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
早速消しましょう。
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でサーバー接続するとこのようなエラーが出るようになりました。
<img width="1440" alt="スクリーンショット 2020-05-28 14.35.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487894/299b8a29-0216-fabe-57d2-d8840f90a18a.png">
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が無効に、適用されなくなっていませんか?私は下図のようになりました。
<img width="1440" alt="スクリーンショット 2020-05-28 14.29.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487894/1b6c185e-1a2e-49e7-177a-6cd7a6071b86.png">
原因はファイル読み込みの記述です。```blade.php```の<head>タグ内の記述を下記のように変えましょう。```{{ secure_asset() }}```の部分は全てです。
```<link href="{{ secure_asset('css/app.css') }}" rel="stylesheet">```
↓変更
```<link href="{{ asset('css/app.css') }}" rel="stylesheet">```
下図のように元通りになりました。
<img width="1440" alt="スクリーンショット 2020-05-28 14.29.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487894/700fceb0-3120-5cfc-3863-1e6a041c27c1.png">
#DBを作成する
DB名が'''Tt'''にする場合です。
```$ mysql -u root```
```mysql> create database Tt;```
###migrateする
```DB_USERNAME=root ```なので、そのままmigrateします。
```$ php artisan migrate```
以上で私は問題なく動きました。
#最後に
間違った表現や、実は不要な操作があるかもしれませんが、そこはご了承ください。
よくよく考えたらローカル用のリモートリポジトリ作成すればよかったですね。作成します笑