こんにちは。結局久しぶりになってしまったw

今日はシンプルな静的サイトやLP案件をローカルで作成して完成した後に毎度、FTP系のアプリ開くのめんどくせーなと思ったのでコマンドでやってみたよっていう話ですw ちなみにMac限定です。あとできるならgit管理もしたいと思ってたら良いの見つかったのでシェア。

tnftpでシンプルにftpする

一昔前までならMacでもftpできたらしいけどtnftp取らないと出来ないらしい。やはりセキュリティの問題。

とりあえずHomebrewで使います。

Quitaでいい感じの記事発見。下からhomebrewダウンロードしてくり。

Homebrewダウンロードしたら次はtnftp

tnftpのダウンロードと使い方

brew install tnftp

でダウンロード完了。

tnftpの使い方

ftpと打ってその後にユーザーネームとサーバーを入力。

ftp sampleUser@helloworld.com

のような感じでftp ユーザー名@サーバーで書く。この際にhttpsやftpはドメインの文頭に置かない。

するとパスワードを聞かれるので入力。

Current restricted directory is /
Remote system type is UNIX

上記の文章が表示されて、下記のようにftp>と表示されたら成功。

ftp> 

put ファイル名でそのファイルをアップロード。mputで複数指定可能。

ftp> put index.html
ftp> mput index.html about.html

get ファイル名でそのファイルをアップロード。mgetで複数指定可能。

ftp> get index.html
ftp> mget index.html about.html

quitで終わります。

ftp> quit

git ftpの使い方

次はgithubでバージョン管理しつつディプロイもftpアプリ使わずにできるようにします。

とりあえずgitをpushできる状態まで持っていきます。

静的サイトジェネレーター(Gatsby jsなど)で作ったウェブサイトとかをレンタルサーバーにアップロードする時にコマンド1つでできるようになるので便利です。

とりあえず

git init
git add .
git commit -m "first commit"
git remote add origin URL
git push origin master

でリモートとローカルを紐付けて下のコマンドを上から順番に打ち込みます。ftp://を忘れずに。

git config git-ftp.url ftp://ホスト名(sample.com)/public_html/
git config git-ftp.user ユーザー名(sample)
git config git-ftp.password パスワード(sample)

すると.gitがあるディレクトリの中にconfigファイルができてます。

git ftp init -v

でイニシャライズします。毎回ディレクトリとか設定とか変更するとこれでリセットしないといけません。

git ftp push

を実行すると先程configで指定したファイルにアップロードできるようになります。

ディプロイするディレクトリを指定

Gatsby.jsとか使うとディプロイするのはビルドされたファイルのみで良いのでそれを指定する方法です。

上記のようなフォルダ構成でdist-testのみを本番サーバーに上げたい時は

git config git-ftp.syncroot /dist-test

とするとサーバーにアップロードされるファイルがdist-test内のみの物になります。

サーバーを分ける

たまにテストサーバーと本番サーバーを分けてサイト制作とかWEBアプリ制作することがあると思うのですがそんな時にも2つ以上分けて管理できます。

git config git-ftp.名前.url ftp://ホスト名(sample.com)/public_html/
git config git-ftp.名前.user ユーザー名(sample)
git config git-ftp.名前.password パスワード(sample)

config入力の際にgit-ftp.付けたい名前を記載する。もちろん先程作った名前の無いconfigと共存できる。

とりあえず先程と同じように、initする。その際に-sを忘れないように。

git ftp init -s '名前'

pushする際にも -s ‘名前’を入れると指定した設定の方にディプロイ(アップロード)してくれる。

git ftp push -s '名前'

コピペで.git内のconfigに書き込む

実際コマンドでやったことはすべて.gitのconfigファイルに書き込まれています。githubのリモートとつなげた時点でそのファイル内の作りはこんな感じなので[git-ftp]より以下のコードをコピペすればコマンドを全部実行して行かずとも設定も編集も簡単になります。

[core]
//省略
[remote "origin"]
//省略
[git-ftp]
	url = ftp://ホスト/public_html/gitftptest
	user = ユーザー名
	password = パスワード
	syncroot = /dist-test(もしビルドしたファイル等指定のディレクトリがある時のみ必須)
[git-ftp "名前"]
	url = ftp://上記とは異なるホスト/test
	user = ユーザー名
	password = パスワード

今どきFTPを使う人も少ないかもしれないけどコーダーとしてメインでやってる人には結構使えるかもw

これでテスト環境と本番環境にコマンド一つでアップロードすることができる環境が完成したプラスgitで管理もできるので安心。

個人的にはtnftpよりもgit ftpを使っていく機会の方が増えそう。

それではSee Yaaaaaaaaaa!!