AWS超初心者のメモ ~プライベートサブネットにMySQLを入れる その2~
AWS超初心者のメモ ~プライベートサブネットにMySQLを入れる その1~の続きです。
DBサーバーにMySQLをインストール
プライベートサブネット内のDBサーバーにMySQLをインストールします。
しかし、DBサーバーはプライベートサブネット内にあるので、インターネットに接続することができません。
この問題を解決する為にNATを利用します。
NATとは
NAT(Network Address Translation)とは、コンピュータネットワークにおいて、主にグローバルIPアドレスをプライベートIPアドレスに、またはその逆の変換を行う技術のことである https://www.atmarkit.co.jp/ait/articles/0401/01/news056.html
NATを利用すると、プライベートサブネットからインターネットに接続できるようになるが、インターネットからプラベートサブネットに接続することはできないです。
NATを構築
NATゲートウェイを構築する
NATゲートウェイはインターネットから接続できるパブリックサブネットに配置する。
VPC > NAT ゲートウェイ > 「NATゲートウェイの作成」を押す
次に、「サブネット」と「Elastic IP 割り当てID」を設定します。
Elastic IP 割り当てIDとは、静的な固定のパブリックIPアドレスのことです。
ルートテーブルを更新する
プライベートサブネットからインターネットに対して通信する場合に、パケットがNATゲートウェイに向かうようにします。
VPC > ルートテーブルから「メイン」が「はい」になっているものを選択。
送信先を0.0.0.0/0
に、ターゲットを先程作成したNATゲートウェイを選択します。
プライベートサブネットからインターネットへの疎通を確認する
DBサーバーにログインして、HTTP、HTTPSで接続できるかを確認します。
[ec2-user@ip-10-0-2-10 ~]$ curl www.nogson.blog
ステータスコードが3xxになる場合は-Lオプションを付与する。
[ec2-user@ip-10-0-2-10 ~]$ curl -L www.nogson.blog
NATゲートウェイは利用しない場合は削除する
NATゲートウェイは、利用しなくなったら削除しておいたほうがよいです。
NTAゲートウェイは稼働時間と転送バイトの両方で課金されてしまうので、通信してなくても料金がかかります。
利用したい場合は、再度つくりなおします。
その際は、NTAゲートウェイのIDも変わるので、ルートテーブルも合わせて変更します。
MySQLをインストール
DBサーバーでMySQLをインストールします。
MariaDBがインストール済みかを確認します。
MariaDBが入っていると競合してMySQLがインストールできません。
$sudo yum list installed | grep mariadb
インストール済みの場合は削除します。
$sudo yum remove mariadb-libs
MySQLのリポジトリを追加。
$sudo yum install http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
MySQLをインストールする。
$yum install mysql-community-server
バージョンを確認する
$mysqld --version mysql Ver 14.14 Distrib 5.7.29, for Linux (x86_64) using EditLine wrapper
起動する。
$sudo service mysqld start
停止する。
$sudo service mysqld stop
起動しているか確認する。
$sudo service mysqld status
DBサーバー起動時にMySQLが自動で起動するようにする。
$ sudo chkconfig mysqld on
MySQLにログイン
MySQL 5.7では初回起動時にrootにランダムなパスワードが割り振らるらしいので、パスワードを確認します。
$ sudo cat /var/log/mysqld.log | grep 'temporary password' 2020-04-26T07:42:38.420478Z 1 [Note] A temporary password is generated for root@localhost: XXXXXXXXXXX
ログインする。
$mysql -u root -p
パスワードを変更しておく。
mysql> SET GLOBAL validate_password_length=8; Query OK, 0 rows affected (0.00 sec) mysql> SET GLOBAL validate_password_policy=LOW; Query OK, 0 rows affected (0.00 sec) mysql> ALTER USER root@localhost IDENTIFIED BY 'my_password'; Query OK, 0 rows affected (0.00 sec)
AWS超初心者のメモ ~プライベートサブネットにMySQLを入れる その1~
プライベートサブネットとは
データベースなど、インターネットから隔離するために利用する、インターネットから接続できないサブネットのことです。
プライベートサブネットを作成する
VPC > サブネットから「サブネットの作成」を押す
プライベートサブネットにサーバーを構築する
EC2 > インスタンス > インスタンスを作成
ステップ3では、VPC領域を選択して、作成いたプライベートサブネットを選択。
IPアドレスはインターネットから接続しないので、自動割当パブリックIPは「無効化」にします。
ステップ6のセキュリティグループでは、MySQLの通信ポートの「3306」を設定する。
送信元は、「任意の場所」を選択する
DBサーバーがWebサーバーからアクセスできるかを確認する
DBサーバーがWebサーバーからアクセスできるかを確認するにはpingコマンドを利用します。 pingコマンドでは「ICMPプロコトル」を利用します。
ICMPがとおるようにする
VPX > セキュリティグループ > インバウンドルール > ルールの編集
ルールの追加 >
タイプ : すべてのICMP
ソース : 任意の場所
pingコマンドを実行
$ping 10.0.2.10
疎通できると以下のようになる。
PING 10.0.2.10 (10.0.2.10) 56(84) bytes of data. 64 bytes from 10.0.2.10: icmp_seq=130 ttl=255 time=0.443 ms 64 bytes from 10.0.2.10: icmp_seq=131 ttl=255 time=0.467 ms
ローカルからWebサーバーにアクセスしてみる
Webサーバーのインスタンスのインバウンドルールも同じようにICMPが通るように設定します。
そのうえで、疎通を確認します。
ping ec2-13-231-207-54.ap-northeast-1.compute.amazonaws.com
疎通できると以下のようになる。
$ ping ec2-13-231-207-54.ap-northeast-1.compute.amazonaws.com PING ec2-13-231-207-54.ap-northeast-1.compute.amazonaws.com (13.231.207.54): 56 data bytes 64 bytes from 13.231.207.54: icmp_seq=0 ttl=236 time=10.718 ms 64 bytes from 13.231.207.54: icmp_seq=1 ttl=236 time=14.337 ms 64 bytes from 13.231.207.54: icmp_seq=2 ttl=236 time=12.168 ms 64 bytes from 13.231.207.54: icmp_seq=3 ttl=236 time=32.455 ms
DBソフトをインストール
SSHでログインして、MySQLをインストールします。
しかしDBサーバーはプライベートサブネットの為、インターネットと接続されていません。
踏み台サーバーを利用してSSH接続
インターネットから接続できるWebサーバーを利用して、DBサーバーにSSH接続します。
手順としては以下のような感じです。
- WebサーバーにSSH接続
- WebサーバーからDBサーバーにSSH接続
WebサーバーからSSH接続
インスタンスにSSH接続するには、秘密鍵が必要です。
WebサーバーからDBサーバーに接続するために、秘密鍵をWebサーバーに置く必要があります。
アップするには以下のようにscpコマンドを利用します。
// scp -i 秘密鍵 アップするファイル ec2-user@{パブリックIP}:アップ先 scp -i my-key.pem my-key.pem ec2-user@{パブリックIP}:~/
秘密鍵をアップしたら、鍵のパーミッションを変更します。
Webサーバーにログインした上で以下のコマンドを実行します。
$chmod 400 my-key.pem
DBサーバーにSSH接続
以下でDBサーバーにログインします。
ssh -i my-key.pem ec2-user@10.0.2.10
つづく
Vueで無料の範囲でFont Awesomeを使う
無料の範囲でFont Awesomeを利用する方法です。 理解に地味に時間がかかったのでメモしておきます。
インストール
$ npm i --save @fortawesome/fontawesome-svg-core $ npm i --save @fortawesome/free-solid-svg-icons $ npm i --save @fortawesome/free-brands-svg-icons $ npm i --save @fortawesome/free-regular-svg-icons $ npm i --save @fortawesome/vue-fontawesome
Vueの設定
vue-cliで作ったプロジェクトの場合の設定です。 グローバルコンポーネントとして登録する例です。
src/main.js
apple-alt
を利用する場合です。
import Vue from 'vue' import App from './App' /* ここから */ import { library } from '@fortawesome/fontawesome-svg-core' //apple-alt アイコンをimport import { faAppleAlt } from '@fortawesome/free-solid-svg-icons' import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' //利用するアイコンを設定 library.add(faAppleAlt) Vue.component('font-awesome-icon', FontAwesomeIcon) /* ここまで */ Vue.config.productionTip = false new Vue({ el: '#app', components: { App }, template: '<App/>' })
コンポーネントで利用する
<template> <div id="app"> <font-awesome-icon icon="user-secret" /> </div> </template>
アイコンを全部読み込む
特定のアイコンだけ読み込むのではなく全部読み込む場合です。
import { fas } from '@fortawesome/free-solid-svg-icons' import { fab } from '@fortawesome/free-brands-svg-icons' import { far } from '@fortawesome/free-regular-svg-icons' library.add(fas,fab,far)
solid(fas)以外を利用する
solid以外の、brands、regularを利用する場合は少し書き方が変わるようでした。
<font-awesome-icon :icon="['fab', 'android']" /> <font-awesome-icon :icon="['far', 'address-book']" />
モデリングメモ
辺を選択して面を作成
辺を複数選択後、Command + F
で面を作成することができる。
選択した頂点を結合
Command + V
で「 頂点マージ > 最後(最初)に選択した頂点に」で頂点を
結合することができる。
重複頂点の結合(重複頂点の削除)
重複頂点はCommand + V
もしくはメニューの「頂点 > 距離でマージ」で結合(削除)できます。
重複頂点の自動マージ
プロパティのコンテクスト>オプションの「自動マージ」で設定できる。
もしくは、サイドバー(Nで表示される)のツール>オプションから設定できる。
隣接した面を選択
option(alt)を押しながら、辺を選択すると選択中の面に隣接する面が一括で選択できる。
バウンディングボックスの位置を変更
Shift + S で表示。
オブジェクトを複製
Shift + D
プロポーショナル編集
以下の箇所をONにすることでプロポーショナル編集が利用できるようになります。
Blender2.8
手順
1. 草束のモデリング
平面を追加
まずは草1本ようのメッシュを作成。
草の束になるので厚みがなくてもきにならないため、平面メッシュで作成する。
shift + a
でメッシュ> 平面
で追加。- x軸に90度回転する。
- 編集モード(tab)でメッシュを縦に細長くする。
平面を曲げて草の形状を作成
まずは、平面をCtrl + r
で分割する。
分割数は適当。
草の先を作る為に一番上のポリゴンの頂点を削除して三角形にする。
次に草のように形を整える。
プロポーショナル編集モードを利用すると簡単。
草を複製
作成した草をShift + D
でコピーします。
その際に、ピポットポイントを草の根本に設定すると、ピポットポイントを原点に回転縮小ができるので便利です。
ここでは3Dカーソルの位置をピポットポイントにします。
複製して、回転と縮小で調整していくとこんな感じになります。
2. 地面の設置
地面のベースを作成する
平面メッシュを作成して、コンテクストメニューから「細分化」を何回か実行する。
コンテクストメニューから「頂点をランダム化」を実行し頂点の位置をランダムに配置する。
コンテクストメニューから「頂点をスムーズに」を実行し頂点をスムーズにする。
さらにオブジェクトモードに切り替えて「オブジェクト > スムーズシェード」を実行します。
編集モードのスムーズは頂点情報を変更していますが、オブジェクトモードのスムーズは見た目だけを変更して頂点情報は変更していません。
3. パーティクルの設定
地面に草を生やす為ににパーティクル設定をしていきます。
まずは、以下の手順でパーティクルを追加します。
前手順で作成した草のオブジェクトをコレクションに設定します。
次に、「レンダリング方法 > コレクション」を設定し、「コレクション > 草のコレクション」を選択します。
草の生え具合を調整していくのですが、一旦草の数を0にします。
次にパーティクル編集モードに切り替えます。
草の生やすのはメニューの「追加」を選択して生やしたい箇所をドラックします。 プロパティの「ツール」を選択して、半径、数で生やす本数を調整します。
あとは地面にテクスチャを設定して終わりです。