のぐそんブログ

暗いおじさんがシコシコ書くブログです。

AWS超初心者のメモ ~wordpressを入れてみる その3~

WebサーバーにWordpressをインストール

AWS超初心者のメモ ~プライベートサブネットにMySQLを入れる その2~ - のぐそんブログ」の続きです。

PHPをインストールする

webサーバーに入る。

$scp -i my-key.pem my-key.pem ec2-user@XX.XXX.XXX.XX

インストールできるPHPを確認

Amazon Linux Extrasを利用する。

Amazon Linux Extrasとは

Extras は、安定したオペレーティングシステムで新しいバージョンのアプリケーションソフトウェアを利用可能にする Amazon Linux 2 のメカニズムで、2023 年 6 月 30 日までサポートされます。Extras は、OS の安定性を確保しつつ、最新のソフトウェアを利用できるようにするうえで役立ちます。例えば、5 年間サポートされる安定したオペレーティングシステムに MariaDB の新しいバージョンをインストールすることができます。Extras の例には、Ansible 2.4.2、memcached 1.5、nginx 1.12、Postgresql 9.6、MariaDB 10.2、Go 1.9、Redis 4.0、R 3.4、Rust 1.22.1 などがあります。
https://aws.amazon.com/jp/amazon-linux-2/faqs/

インストールできるPHPをを確認する。

$sudo amazon-linux-extras list | grep php
  _  php7.2                   available    \
  _  lamp-mariadb10.2-php7.2  available    \
 31  php7.3=latest            enabled      \
  _  php7.4                   available    [ =stable ]

php7.3をインストール。

$sudo amazon-linux-extras install php7.3

バージョンを確認。

$php -v
PHP 7.3.16 (cli) (built: Mar 27 2020 17:33:16) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.16, Copyright (c) 1998-2018 Zend Technologies

wordpressをインストール

rootユーザーに切り替える。

$sudo su -

ディレクトリを移動。

#cd /var/www/html

wordpressをインストール。

#wget http://ja.wordpress.org/latest-ja.zip

zipファイルがあるかを確認。

#ls -la
total 13636
drwxr-xr-x 2 root root       27 May  3 09:26 .
drwxr-xr-x 4 root root       33 Apr 23 12:28 ..
-rw-r--r-- 1 root root 13960734 May  2 02:00 latest-ja.zip

zipファイルを解凍。

#unzip -q latest-ja.zip

解凍した中身をhtml配下に移動。

#cd /var/www/html/wordpress
# mv * ..

html配下のファイルを確認。

# ls -la
total 13848
drwxr-xr-x  6 root root     4096 May  3 11:43 .
drwxr-xr-x  4 root root       33 Apr 23 12:28 ..
-rw-r--r--  1 root root      405 Feb  6 06:33 index.php
-rw-r--r--  1 root root 13960734 May  2 02:00 latest-ja.zip
-rw-r--r--  1 root root    19915 Feb 12 11:54 license.txt
-rw-r--r--  1 root root    10089 May  2 02:00 readme.html
drwxr-xr-x  2 root root        6 May  3 11:43 wordpress
-rw-r--r--  1 root root     6912 Feb  6 06:33 wp-activate.php
...

html配下のファイルの所有者・グループをapache/apacheに変更します。

#chown -R apache:apache /var/www/html

wordpressを設定

Apatchを起動

Apatchを起動。

$sudo service httpd start

起動中の場合は再起動。

$sudo service httpd restart

webサーバーを起動後にアクセスするとwordpressの初期設定画面が表示されます。

f:id:nogson2:20200503211140p:plain

wordpress用のDBテーブルを作成する

webサーバー(踏み台サーバー)からDBサーバーに接続。

$ssh -i my-key.pem ec2-user@XX.X.X.XX

MySQLに接続。

$mysql -u root -p

データベースを作成。データベース名はwordpress(任意)とします。

mysql> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

wordpressデータベースに接続できる一般ユーザを作成します。

mysql> grant all on wordpress.* to wordpress@"%" identified by 'wordpresspassword';

もし以下のエラーが発生した場合は...

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

パスワードを変更するか、以下のコマンドでパスワードのポリシーを変更してください。

mysql> set global validate_password_policy=LOW;

ユーザーの作成が完了いたら、すべての変更を有効にするために以下を実行します。

mysql> FLUSH PRIVILEGES;

作成したユーザーは以下で確認できます。

mysql> select user,host from mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| wordpress     | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+

hostが%になっているものは、すべてのホストから接続することができます。

設定した情報でログインする

webサーバーにアクセスし、登録した情報を入力します。

  • データベース名 ・・・ wordpress
  • ユーザー名・・・ wordpress
  • パスワード・・・wordpresspassword
  • データベースのホスト名 10.0.2.10
  • テーブルの接頭辞・・・wp_(そのまま)

wordpressのユーザー名やサイト名を設定する。

wordpressにログインするためのユーザー情報などを設定する。 f:id:nogson2:20200503233631p:plain

wordpressの管理画面が表示されます。

f:id:nogson2:20200503235011p:plain

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を利用すると、プライベートサブネットからインターネットに接続できるようになるが、インターネットからプラベートサブネットに接続することはできないです。

f:id:nogson2:20200426150014p:plain

NATを構築

NATゲートウェイを構築する

NATゲートウェイはインターネットから接続できるパブリックサブネットに配置する。

VPC > NAT ゲートウェイ > 「NATゲートウェイの作成」を押す

次に、「サブネット」と「Elastic IP 割り当てID」を設定します。
Elastic IP 割り当てIDとは、静的な固定のパブリックIPアドレスのことです。

f:id:nogson2:20200426152352p:plain

ルートテーブルを更新する

プライベートサブネットからインターネットに対して通信する場合に、パケットがNATゲートウェイに向かうようにします。

VPC > ルートテーブルから「メイン」が「はい」になっているものを選択。

f:id:nogson2:20200426154044p:plain

送信先を0.0.0.0/0に、ターゲットを先程作成したNATゲートウェイを選択します。
f:id:nogson2:20200426161347p:plain

プライベートサブネットからインターネットへの疎通を確認する

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~

プライベートサブネットとは

データベースなど、インターネットから隔離するために利用する、インターネットから接続できないサブネットのことです。

f:id:nogson2:20200425214908p:plain

プライベートサブネットを作成する

VPC > サブネットから「サブネットの作成」を押す

f:id:nogson2:20200425220259p:plain

プライベートサブネットにサーバーを構築する

EC2 > インスタンス > インスタンスを作成

f:id:nogson2:20200425221311p:plain

f:id:nogson2:20200425221530p:plain

ステップ3では、VPC領域を選択して、作成いたプライベートサブネットを選択。
IPアドレスはインターネットから接続しないので、自動割当パブリックIPは「無効化」にします。

f:id:nogson2:20200425222314p:plain

ステップ6のセキュリティグループでは、MySQLの通信ポートの「3306」を設定する。
送信元は、「任意の場所」を選択する

f:id:nogson2:20200425223511p:plain

DBサーバーがWebサーバーからアクセスできるかを確認する

DBサーバーがWebサーバーからアクセスできるかを確認するにはpingコマンドを利用します。 pingコマンドでは「ICMPプロコトル」を利用します。

ICMPがとおるようにする

VPX > セキュリティグループ > インバウンドルール > ルールの編集

f:id:nogson2:20200425230754p:plain

ルールの追加 >
タイプ : すべてのICMP ソース : 任意の場所

f:id:nogson2:20200425230947p:plain

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接続します。
手順としては以下のような感じです。

  1. WebサーバーにSSH接続
  2. 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を利用する方法です。 理解に地味に時間がかかったのでメモしておきます。

fontawesome

インストール

$ 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で面を作成することができる。

f:id:nogson2:20191229174856g:plain

選択した頂点を結合

Command + V「 頂点マージ > 最後(最初)に選択した頂点に」で頂点を 結合することができる。

f:id:nogson2:20191229171937g:plain

重複頂点の結合(重複頂点の削除)

重複頂点はCommand + Vもしくはメニューの「頂点 > 距離でマージ」で結合(削除)できます。

f:id:nogson2:20191229165356p:plain

重複頂点の自動マージ

プロパティのコンテクスト>オプションの「自動マージ」で設定できる。 f:id:nogson2:20191229170519p:plain

もしくは、サイドバー(Nで表示される)のツール>オプションから設定できる。 f:id:nogson2:20191229170959p:plain

隣接した面を選択

option(alt)を押しながら、辺を選択すると選択中の面に隣接する面が一括で選択できる。

f:id:nogson2:20191229174401g:plain

バウンディングボックスの位置を変更

Shift + S で表示。

f:id:nogson2:20200101183958p:plain

オブジェクトを複製

Shift + D

プロポーショナル編集

以下の箇所をONにすることでプロポーショナル編集が利用できるようになります。

f:id:nogson2:20200102225244p:plain:w400

f:id:nogson2:20200102225825g:plain

Blender2.8

手順

1. 草束のモデリング

平面を追加

まずは草1本ようのメッシュを作成。
草の束になるので厚みがなくてもきにならないため、平面メッシュで作成する。

  • shift + aメッシュ> 平面で追加。
  • x軸に90度回転する。
  • 編集モード(tab)でメッシュを縦に細長くする。

f:id:nogson2:20200104111500p:plain:w300

平面を曲げて草の形状を作成

まずは、平面をCtrl + rで分割する。
分割数は適当。

f:id:nogson2:20200104112220p:plain:w300

草の先を作る為に一番上のポリゴンの頂点を削除して三角形にする。 f:id:nogson2:20200104112220p:plain:w300

次に草のように形を整える。
プロポーショナル編集モードを利用すると簡単。

f:id:nogson2:20200104113841p:plain:w300

草を複製

作成した草をShift + Dでコピーします。
その際に、ピポットポイントを草の根本に設定すると、ピポットポイントを原点に回転縮小ができるので便利です。
ここでは3Dカーソルの位置をピポットポイントにします。 f:id:nogson2:20200104120709p:plain:w300

複製して、回転と縮小で調整していくとこんな感じになります。

f:id:nogson2:20200104120900p:plain:w300

2. 地面の設置

地面のベースを作成する

平面メッシュを作成して、コンテクストメニューから「細分化」を何回か実行する。 f:id:nogson2:20200104123438p:plain:w300

コンテクストメニューから「頂点をランダム化」を実行し頂点の位置をランダムに配置する。

f:id:nogson2:20200104123753p:plain:w300

コンテクストメニューから「頂点をスムーズに」を実行し頂点をスムーズにする。

f:id:nogson2:20200104124355p:plain:w300

さらにオブジェクトモードに切り替えて「オブジェクト > スムーズシェード」を実行します。
編集モードのスムーズは頂点情報を変更していますが、オブジェクトモードのスムーズは見た目だけを変更して頂点情報は変更していません。

f:id:nogson2:20200104124722p:plain:w300

3. パーティクルの設定

地面に草を生やす為ににパーティクル設定をしていきます。
まずは、以下の手順でパーティクルを追加します。 f:id:nogson2:20200104125309p:plain:w500

前手順で作成した草のオブジェクトをコレクションに設定します。
次に、「レンダリング方法 > コレクション」を設定し、「コレクション > 草のコレクション」を選択します。

f:id:nogson2:20200104125759p:plain:w500

草の生え具合を調整していくのですが、一旦草の数を0にします。 f:id:nogson2:20200104134004p:plain:w300

次にパーティクル編集モードに切り替えます。

f:id:nogson2:20200104133348p:plain:w500

草の生やすのはメニューの「追加」を選択して生やしたい箇所をドラックします。   プロパティの「ツール」を選択して、半径、数で生やす本数を調整します。

f:id:nogson2:20200104133759p:plain:w300

あとは地面にテクスチャを設定して終わりです。

f:id:nogson2:20200104143434p:plain:w300