■ Windows + VirtualBox + Amazon Linux 2
PC を汚したくないので VirtualBox の中に環境を作って作業。
今まで CentOS だ、Ubuntu だ Debian だと煩わしかったのだけれど、最近は Amazon Linux 2 一択になってきましたのでメモ。
◆ Amazon Linux 2
以下の2つをダウンロード。
ディスクイメージ ( amzn2-virtualbox-2.0.20220316.0-x86_64.xfs.gpt.vdi ) https://cdn.amazonlinux.com/os-images/latest/virtualbox/ サンプル ( Seed.iso ) https://cdn.amazonlinux.com/os-images/latest/◆ VirtualBox
AmazonL2(任意) C:\Users\ほにゃらら\VirtualBox VMs Linux Red Hat (64-bit) メモリ 2048(任意) 既にある仮想ハードディスクを使用する。 + 追加 C:\Users\ほにゃらら\amzn2-virtualbox-2.0.20211005.0-x86_64.xfs.gpt.vdi設定
ストレージ → コントローラー:IDE(光ディスク) + 追加 C:\Users\ほにゃらら\seed.iso ネットワーク アダプター1 高度 ポートフォワーディング (+)
Name | Protocol | Host IP | Host Port | Guest IP | Guest Port |
SSH | TCP | 2222 | 22 | ||
HTTP | TCP | 80 | 80 | ||
Node | TCP | 8889 | 8889 |
ユーザー:ec2-user パスワード:amazon sudo su で root になれます。(もし VirtualBox コンソールで困ったら)
アンダーバーが打てない。 シフトを押しながらハイフン「-」。 vi でコロンが打てない。 エスケープ語、シフトを押しながら 11(「1」を 2 回)打つと :.! となるので、 .! を削除。 (通常文章のところではどうしたら良いか分かりません) コンソールから抜ける キーボード右側の Ctrl を押下。 どうしようもなくなったら Ctrl + Alt + Delete でも可。DHCP
vi /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet BOOTPROTO=dhcp ONBOOT=yes ←ここ(最初からなっていました)root許可(ローカルだし)
vi /etc/ssh/sshd_config PermitRootLogin yesパスワード許可(ローカルだし)
vi /etc/ssh/sshd_config #PasswordAuthentication no PasswordAuthentication yes systemctl restart sshd◆ WinSCP、putty 等
ホスト localhost ポート 2222 ユーザー ec2-user パスワード amazon◆ ブラウザ
Apache を動かしていれば以下。 http://localhost/ Node.js なら以下な感じ(人夫々)。 http://localhost:8889/
■ MySQLを外部から接続したい
インスタンスを複数立ててMySQLは他のサーバーから接続したい。
結構ハマったこと→セキュリティーグループにMySQLを追加。
■ さしあたって使うものの概要
S3 : ファイル置場、ローカルからファイルの上げ下げを行う。S3←→EC2とかのやりとりも。
EC2
├Instances : サーバー本体。
├Volumes : 外付けディスク。EC2からしか見えない。マウントして使う。よくEBSと呼ばれる。
└Snapshots : バックアップイメージ。ここからVolumesを復活できる。
■ Instances
インスタンスはリブート、ストップ、スタートがブラウザから出来ます。
ターミネイトは完全削除です。全部消えるので注意。
ec2-xx-xx-xx-xx.compute-1.amazonaws.com
xx-xx-xx-xxなのが外向きのIPです。リブートしたら変わります。
固定にしたいときにはそういう契約が追加であります。
しないときはあげっぱなしで良いのではないでしょうか。
■ Volumes
インスタンスはAMIというイメージでバックアップが取れますが、/dev/sda1の10GB部分だけなので、大量のファイルはVolumesをくっつけて置きます。
ここに置いたものはSnapshotsで簡単にバックアップが取れるし復活できるので便利です。
■ S3
ファイルのアップロードはEC2に直接WinSCPからでも出来ますが激重なので、いったんS3にあげてからEC2にコピーします。
S3にはブラウザのメニューからもアップできますが1ファイル辺り最大300MBまでです。
大きなファイルはFireFoxのアドオン「S3 Firefox Organizer」を使うと良いです。
■ ツール
ローカルパソコンからEC2に命令できます。
最初に構築したり運用したりするときには、Linuxの中に入っていつものように作業することの他に、ローカルパソコンからEC2専用のコマンドをたたいて作業することになります。(ブラウザから出来ることが増えたので減りはしてます)
手前のLinuxにツールを入れた例。
jre-6u23-linux-i586-rpm.bin
をダウンロードしてWinSCPで手元のLinuxサーバーに置き実行権限を与える。
chmod a+x jre-6u23-linux-i586-rpm.bin
実行
./jre-6u23-linux-i586-rpm.bin
環境変数設定(ターミナル閉じるまで有効)
/home/admin/ec2/に解凍した場合
export JAVA_HOME=/usr
export EC2_HOME=/home/admin/ec2/ec2-api-tools
export PATH=$PATH:$JAVA_HOME/bin:$EC2_HOME/bin
export EC2_PRIVATE_KEY=/home/admin/ec2/pk-xxxxxx.pem
export EC2_CERT=/home/admin/ec2/cert-xxxxxx.pem
ec2ver
でバージョンがでたらOK
キーファイルはブラウザの管理画面から Account → Security Credentials → X.509証明書でダウンロードして置いてください。
■ EBSのマウント
ブラウザからVolumesを作ります。
このときくっつけたいインスタンスと同じゾーン(us-east-1cみたいなの)にしないといけません。
容量は任意で。
できたらツールで以下のコマンド。
ec2-attach-volume -d /dev/sde -i i-xxxxxxxx vol-xxxxxxxx
i-xxxxxxxx : インスタンスのID(EC2 Instance)
vol-xxxxxxxx : EBSのVolumeID
↑ブラウザの管理画面で見れます。
/dev/sde は sdc,sdd,...... などと試して空いているところを探してください。
yes | mkfs -t ext3 /dev/sde
mkdir /data
mount /dev/sdf /data
/dataというディレクトリを作ってマウントした場合。
■ EBSのバックアップ
ブラウザから EC2→Volumes Create Snapshot をしておきます。
■ EBSから復旧
ブラウザから EC2→Snapshots Create Volume で新しいディスクを作ります。
できたら上と同じように以下コマンドを実行します。
ec2-attach-volume -d /dev/sdg -i i-xxxxxxxx vol-xxxxxxxx
mount /dev/sdf /data
mkfsはいりません。
■ S3→EC2
rubyでできたツールなので、まずrubyをインストールします。
yum install ruby
s3sync.tar.gz をダウンロードしてきてサーバー(インスタンス)に置きます。
以下/root/の下に置いた例。
cd /root
tar xvfz /some/where/s3sync.tar.gz
mkdir .s3conf
chmod 700 .s3conf
cat > ~/.s3conf/s3config.yml << E-O-F
aws_access_key_id: xxxxxxxxxxxxx
aws_secret_access_key: xxxxxxxxxxxxxxxxxxxxx
E-O-F
xxxxxxxxxxxxはブラウザの管理画面から Account → Security Credentials あたりにあります。
いちいちログインしなおさないといけなくて不便。
ディレクトリ構成はこう。
/root/.s3conf
/root/s3sync
◆バケット一覧表示
/root/s3sync/s3cmd.rb listbuckets
hoge1
hoge2
◆バケット内リスト
/root/s3sync/s3cmd.rb list hoge1
◆ファイル取得
/root/s3sync/s3cmd.rb get hoge1:hage1.tgz hage1.tgz
一度使えなくなって、インスタンスを再起動したら直ったことが有ります。勘違いかもだけど。
■ インスタンスを作るときの注意
なにとなくクイックスタートから選んでいたら、高機能高額のものになていました。
Community AMIs タブで 32-bit centos とかで検索したら安いのを選べます。
Account → Security Credentials → アカウントアクティビティ でときどき料金の確認をしよう。