FTPサーバーへのアップロード方法と【docker-compose】コマンドの備忘録

## はじめに
本日も知らないコマンドがいっぱいあったので、備忘録をメインに記載していこうと思います。

今回は主に

- FTPのサーバーへのアップロード方法
- docker-composeコマンド

について触れていこうと思います。

## FTPサーバーへのアップロード方法

記載する手順は、既にサーバーへアップロードしており、Git Hub上でmerge済みである事が前提です。
公開済みのファイルに対して、新たにプロジェクトをクローンからアップロードを行う手順です。

- [Git Hub](https://github.com/)からプロジェクトをクローン
- アップデート確認
- FTPアクセス先入力
- アップロード優先順位
- ファイルアップロード

## プロジェクトを[Git Hub](https://github.com/)からクローン

```ruby:ターミナル
git clone https://~
```

## アップデート確認

```ruby:ターミナル
cd [プロジェクト名]
# プロジェクトをクローン後、該当のディレクトリへ移動
```

```ruby:ターミナル
git log --name-status
    update 2020/07/＊＊
# 上記コマンド後、以下のように変更ファイルの一覧が確認できます。
M       app/common/.php
M       app/models/*****.php
M       app/models/product_*****_model.php
M       app/views/index_view.php
M       app/views/*****_view.php
A       app/views/*****_dem_view.php
D       app/views/product_*****_view.php
M       app/views/product_*****_view.php
A       public/common/*****_dem.gif
A       public/common/*****_dem_hov.gif
A       public/css/product_*****.css
M       public/css/*****.css
A       public/img/*****.jpg
A       public/*****_dem.jpg
# *は該当のファイル名になります。
```
A : ファイル追加
M : ファイル変更
D : deleteのこと
1ファイルずつアップロードしていくので、ターミナルを別タブに出して上記を確認できるようにしておくとやりやすいです。

## FTPアクセス先入力
ここで、該当のFTP情報を入力して、ログインを行います。

```ruby:ターミナル
ftp [FTPアクセス先]
# 入力後、以下のように続けてアカウント名とパスワードの入力を求められるので、入力します。
----------
Connected to ****.jp.
*** ***.*.***.*** FTP server ready
----------
Name (****.jp:＊＊＊): [アカウント]
----------
Password required for ***.com
----------
Password: [パスワード]
----------
*** User ***.com logged in
Remote system type is UNIX.
Using binary mode to transfer files.
# このような表示がされればログイン成功
```

## アップロード優先順位
ファイルをアップロードする前にどのファイルからアップロードを行うのか、先ほど確認したファイル名を基に優先順位を確認していきます。
※未公開等の状況によって順序は異なる可能性があります。

```ruby:ターミナル
git log --name-status
    update 2020/07/＊＊
# 上記コマンド後、以下のように変更ファイルの一覧が確認できます。
M       app/common/.php
M       app/models/*****.php
M       app/models/product_*****_model.php
M       app/views/index_view.php
M       app/views/*****_view.php
A       app/views/*****_dem_view.php
D       app/views/product_*****_view.php
M       app/views/product_*****_view.php
A       public/common/*****_dem.gif
A       public/common/*****_dem_hov.gif
A       public/css/product_*****.css
M       public/css/*****.css
A       public/img/*****.jpg
A       public/*****_dem.jpg
```

①publicファイル
②[A]と表記されたファイル
③modelファイル
④viewファイル(indexファイルを最後にアップロード)
⑤commonファイル
※[D]表記ファイルは保留

上記優先順位の理由としては、publicファイルをアップロードしただけではサイトは変わらないので、まずは部品を先にアップロードしていき、見た目に反映されるviewを更新、最後にcommonファイルをアップロードして更新するイメージだと認識しています。

## ファイルアップロード
優先順位を基に、ファイルを順次サーバーへアップロードしていきます。
アップロードは、アップデート確認で確認したファイル名を「put」コマンドでアップロードができます。

```ruby:ターミナル
# ローカルのディレクトリとサーバーのディレクトリが同一の場合
put [ファイル名]
[例]put app/models/*****.php

# ローカルのディレクトリとサーバーのディレクトリが異なる場合
put [ローカルファイル名] [ファイル名]
[例]put public/*****_dem.gif public_index/*****_dem.gif
# サーバーのディレクトリが[public_index]という名称だった場合
```

ファイルアップロード後、「Transfer complete」と表示されれば、サーバーへアップロードが完了しています。

アップロードが完了したら、更新した箇所、全体のサイトバランスに崩れがないかをチェックして終わりです。

FTPサーバーは[exit]で抜ける事ができます。
初めての作業でしたが、教わりながらなんとかエラーを起こさずに完了しました。

## docker-composeコマンド
docker-composeのコマンドをまだ把握できていなかったので、備忘録を兼ねて記載していきます。

```ruby:ターミナル
docker-compose up
# ディレクトリのプロジェクトをイメージ構築、コンテナ構築・起動までやってくれる

docker-compose stop
# 該当ディレクトリのdockerを停止してくれる

docker-compose start
# 該当ディレクトリのdockerを開始してくれる
```

とりあえずこの辺さえできればlocalhost上での確認ができそうです。
たまにエラーが出るので、その時は調べながら解決していく必要がありそうです。

## さいごに
今までは、お手伝い的な事をしていましたが、プロジェクトへの配属が決まりそうです。
Vue.jsを利用する可能性が高く、私自身、Rubyの知識が底辺程なので、必死に勉強しようと思います。