EC2に何かファイルを直接置きたい、と思った時の手順です。
例えば nuxt で何かを作ってbuildした後に、それをアップロードするやり方です。
「gitでできるじゃん」、とおもうかもですが、そういう通常パターンが通じなかった場合のやり方。
ビルド
$ npm run build
デスクトップで作業する
プロジェクトのdistにかき出されたファイルを、デスクトップに移動する
(移動しなくても良いんだけど、今から何を上げるのか、上げたのか、わかりやすいので)
$ mv /Users/YOURNAME/nuxt_project/dist/ /Users/YOURNAME/Desktop/dist
デスクトップに移動+そこに存在するのか確認する。
$ cd /Users/YOURNAME/Desktop
$ ls -l
drwxr-xr-x 7 YOURNAME staff 224 Feb 24 14:33 dist
テスト
はじめてで不安な場合は、まず練習用に、空のテキストをアップロードして試しましょう。
間違っておかしな場所に上がっちゃっても、ノープロブレムなファイルを用意します。
$ touch test.txt
フォルダを圧縮する(tar.gzコマンド基本形)
test.txtを圧縮する場合はコレ
$ tar zcvf test.tar.gz test.txt
distフォルダを圧縮する場合はコレ
$ tar zcvf dist.tar.gz dist
.ssh/config
アップロードのコマンドを打つ前に ssh でログインできる状態にしておく。
.ssh の config をやっておけば鍵や、bastion(踏み台サーバー)も通過できます。
.ssh/config を開いて設定をしておきます。sshログインできるか先に確認すること
秘密鍵x.pem
を同じフォルダに放り込んでおいて下さい。
Host x-web-1
HostName x.x.x.x
User ecx-user
Port 22
IdentityFile ~/.ssh/x.pem
ProxyCommand ssh -W %h:%p x-bastion
Host x-bastion
HostName x.x.x.x
User ecx-user
Port 60xxx
IdentityFile ~/.ssh/x.pem
アップロードする(SCPコマンド基本形)
もっかいpwd
で自分がデスクトップをみているのを確認して、
$ pwd
/Users/YOURNAME/Desktop
対象ファイルがデスクトップにあることを確認して、
$ls -l
こちら↓
scp (対象ファイル) (対象サーバー):(ディレクトリ)
★test.txtを圧縮したやつをおくには
$ scp test.tar.gz x-web-1:/var/www/html
★distを圧縮したやつをおくには
$ scp dist.tar.gz x-web-1:/var/www/html
EC2にログインして移動する。
ログイン
$ ssh x-web-1
移動する
$ cd /var/www/html
解凍する(基本コマンド)
$ tar zxvf test.tar.gz
$ tar zxvf dist.tar.gz
解凍するとその階層に「test.txt」または「dist」ディレクトリが置かれます。
アップロードした圧縮ファイルは削除する
何回かやってると、ゴミが溜まっちゃうのでこまめに消す。
$ rm -r test.tar.gz
$ rm -r dist.tar.gz
ファイル名がそのままでは、domain-name.com/dist/になってしまい、カッコ悪いので
$ mv dist special-contents
↑これでディレクトリ名は書き換えられます(最初から名前を変えてアップしたほうがスマートなのでは・・)
これでディレクトリがちゃんときれいになってるか確認
$ ls -l
作業終了
$ exit
注意点
このやり方だと、もしgit
で監視してる場所を書き換えると diff
が出てしまい、
git pull
ができなくなるので、必ずgit
監視外の部分でやる。
そもそも git
コマンドを使わないでアップロードする、というのが邪道ですが。