vagrant + amazon linux 2（実際のAWS EC2でも使える）サーバ構築～WordPressインストール＆nodejsもついでに

# 概要
AWS EC2環境を作るための練習でvagrantのAmazon linux 2イメージを使用してサーバ作成とWordPressのインストールまでの備忘録

:::note info
※これはvagrant init～BOX作成までを行った状態からの備忘録です。
　ローカル環境上であれば、wordpressはダウンロードしたzipファイルを解凍して置けばOKのはず。
:::


## 環境
* windows8.1
* ConEmu
* Vagrant
* bento/amazonlinux-2（vagrant box)

:::note info
ここからはスーパーユーザーにスイッチして作業を進めます。
:::

## スーパーユーザースイッチ
~~~:Terminal
sudo su
~~~


## 手順
### システム情報のチェック

~~~:Terminal
cat /etc/os-release
~~~
↓が表示されればOK
~~~:Terminal
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
~~~

### 時計表示とタイムゾーンの設定

dateで現状を確認
~~~:Terminal
date
~~~

日本語で表示されるように設定
~~~:Terminal
sudo localectl set-locale LANG=ja_JP.UTF-8
~~~

タイムゾーンの設定を変更する↓のコマンドを実行
~~~:Terminal
sudo timedatectl set-timezone Asia/Tokyo
~~~

vagrantを再起動
~~~:Terminal
vagrant reload
~~~

SSHして時刻を確認して↓のように表示されればOK
~~~:Terminal
date
2022年  9月  7日 水曜日 12:59:08 JST
~~~

### 初期設定
↓のコマンドを実行してselinuxの状態確認する。 **「Disabled」** になっていればOK
~~~:Terminal
getenforce
~~~

DBはMySQLを使うので最初から入っているmariaDBを削除します。
~~~:Terminal
sudo yum -y remove mariadb-libs mysql*
~~~

:::note info
ちゃんと確認したい場合はこちら

DBはMySQLを使うので他のDBがインストールされていないか確認してインストールされている場合は削除します。
~~~:Terminal
sudo yum list installed | grep mariadb-libs
~~~

↓のようにmariadbが入っていることを確認したら次へ
~~~:Terminal
mariadb-libs.x86_64                   1:5.5.64-1.amzn2               installed
~~~

以下コマンドでアンインストールします。（ログに「完了しました！」が表示されればOK）
~~~:Terminal
sudo yum -y remove mariadb-libs mysql*
~~~
:::

### 各種パッケージのアップデートとapacheやその他のパッケージをインストール。

**パッケージのアップデート**
~~~:Terminal
sudo yum -y update
~~~

**そのたアプリの追加**
~~~:Terminal
sudo yum -y install git vim wget epel-release dkms httpd zip unzip postfix ImageMagick-devel gcc-c++
~~~

:::note alert
2023年11月30日（木）現在再構築時に表示されませんでした。
~~EPELをインストールしろ！と出たら指示に従ってインストールします。
こんな感じの結果が出たら~~
~~~:Terminal
epel-release is available in Amazon Linux Extra topic "epel"

To use, run
# sudo amazon-linux-extras install epel

Learn more at
https://aws.amazon.com/amazon-linux-2/faqs/#Amazon_Linux_Extras
~~~

:::


~~~:Terminal
sudo amazon-linux-extras install -y epel
~~~

### Remiリポジトリをインストール
~~~:Terminal
sudo yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
~~~

:::note info
EPELが有効になっているか確認するときはコレ
~~~:Terminal
sudo yum repolist all | grep -i epel
~~~
↓のように表示されればOK
~~~:Terminal
amzn2extra-epel/2/x86_64             Amazon Extras repo for epe 有効:          1
amzn2extra-epel-debuginfo/2/x86_64   Amazon Extras debuginfo re 無効
amzn2extra-epel-source/2             Amazon Extras source repo  無効
epel/x86_64                          Extra Packages for Enterpr 有効: 13,527+228
epel-debuginfo/x86_64                Extra Packages for Enterpr 無効
epel-source/x86_64                   Extra Packages for Enterpr 無効
epel-testing/x86_64                  Extra Packages for Enterpr 無効
epel-testing-debuginfo/x86_64        Extra Packages for Enterpr 無効
epel-testing-source/x86_64           Extra Packages for Enterpr 無効
~~~
:::


### もしvagrantでホスト側とマウントさせる場合はこちら
~~共有フォルダへのシンボリックリンク設定~~
~~rm -rf /var/www/html
ln -fs /vagrant /var/www/html~~

マウントは別にシンボリックリンクを使わなくてもvagrant側で設置可能でしたので編集いたします。
これをすればシンボリックリンク不要でした。



~~~:vagrantfile
  # Share an additional folder to the guest VM. The first argument is
  # the path on the host to the actual folder. The second argument is
  # the path on the guest to mount the folder. And the optional third
  # argument is a set of non-required options.
  # config.vm.synced_folder "../data", "/vagrant_data"
  config.vm.synced_folder "./任意のフォルダ", "/var/www/html/", tpye:"nfs"
~~~

:::note warn
Laravelなどを使うときはnode.js使用時にエラーになるのでLaravel環境はシンボリックリンクを使わない方が良い。※Laravel環境を造ったときはxamppを使った…
:::

### apacheの設定
以下よく使うコマンド

| 用法 | コマンド |
|:-:|:-:|
| 文法チェック | sudo apachectl configtest |
| システムチェック | sudo service httpd configtest |
| 起動 | sudo systemctl start httpd.service |
| 自動起動 | sudo systemctl enable httpd.service |
| 起動チェック | sudo systemctl status httpd.service |
| 再起動 | sudo systemctl restart httpd.service |

※チェックコマンドは「Syntax OK」が表示されればまぁOK

何かあったときのために設定ファイルをバックアップ。
~~~:Terminal
sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bk
~~~

vimで設定ファイルを編集します。
~~~:Terminal
sudo vim /etc/httpd/conf/httpd.conf
~~~

phpが使えるように以下2行を追加
※AddTypeタイプで検索（検索方法は「/〇〇」）して出てきた同項目の下に追加
~~~:vim
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
~~~

cssが読み込めるようにする。
「Directory "/var/www/html"」内の↓の部分を調整

```diff_vim_l
- AllowOverride None
+ AllowOverride All
```

バーチャルホストの設定をさせる場合はこちらの設定を変更する。
~~~:vim
EnableSendfile on　→　EnableSendfile off
~~~

configtestでエラーが出る場合の対処方法（localの場合）
```diff_vim_l
- #ServerName www.example.com:80
+ ServerName localhost:80
```



「:wq」で保存して終了し「よく使うコマンド」を順番に実行（※再起動は不要）
起動チェック時に↓のように表示されればOK
~~~:Terminal
Redirecting to /bin/systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 水 2022-09-07 13:39:35 JST; 11s ago
     Docs: man:httpd.service(8)
 Main PID: 24287 (httpd)
   Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─24287 /usr/sbin/httpd -DFOREGROUND
           ├─24288 /usr/sbin/httpd -DFOREGROUND
           ├─24289 /usr/sbin/httpd -DFOREGROUND
           ├─24290 /usr/sbin/httpd -DFOREGROUND
           ├─24291 /usr/sbin/httpd -DFOREGROUND
           └─24292 /usr/sbin/httpd -DFOREGROUND
~~~

### バーチャルホストの設定
https://qiita.com/akisute_sara/items/4df9b4945a7b799a2220#apache%E3%81%AE%E8%A8%AD%E5%AE%9A%E8%AA%BF%E6%95%B4

### バーチャルホストの設定2

~~~:Terminal
<VirtualHost *:80>
   ServerName hoge.com
   # !!! Be sure to point DocumentRoot to 'public'!
   DocumentRoot /var/www/html/hoge
   DirectoryIndex index.php index.html
   <Directory /var/www/html/hoge>
      # This relaxes Apache security settings.
      AllowOverride all
      # MultiViews must be turned off.
      Options Indexes ExecCGI FollowSymLinks MultiViews
      Order allow,deny
      Allow from all
      AllowOverride all
      # Uncomment this if you're on Apache >= 2.4:
      Require all granted
   </Directory>
   RewriteEngine on
   RewriteRule (.*) https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
~~~

### mysql8のインストールと初期設定

リポジトリを追加
~~~:Terminal
sudo yum -y localinstall http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
~~~

リポジトリの追加が終わったらインストール可能なバージョンを確認する。
~~~:Terminal
sudo yum info mysql-community-server
~~~


:::note info
こんな感じの結果出ればOK

~~~:結果
利用可能なパッケージ
名前                : mysql-community-server
アーキテクチャー    : x86_64
バージョン          : 8.0.28
リリース            : 1.el7
容量                : 451 M
~~~
:::

MySqlをインストール
まず、必ずエラーになる公開鍵をインストールする。
~~~:Terminal
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
~~~

:::note alert
これをしないと「公開鍵がインストールされていません。インストールしてください」という感じで怒られる。
:::


MySqlをインストール
~~~:Terminal
sudo yum -y install mysql-community-server
~~~

終わったらバージョンの確認
~~~:Terminal
mysqld --version
/usr/sbin/mysqld  Ver 8.0.28 for Linux on x86_64 (MySQL Community Server - GPL)
~~~

設定をバックアップ
~~~:Terminal
sudo cp /etc/my.cnf /etc/my.cnf.org
~~~

認証プラグインの設定以下コマンドでcnfファイルを開く
~~~:Terminal
sudo vim /etc/my.cnf
~~~
最後の行に以下を追加。
~~~:これを追加
default_authentication_plugin=mysql_native_password
~~~

MySQLの起動、状態確認、自動起動を設定


**起動**
~~~:Terminal
sudo systemctl start mysqld
~~~

**状態確認**
~~~:Terminal
sudo systemctl status mysqld
~~~

**自動起動**
~~~:Terminal
sudo systemctl enable mysqld
~~~


:::note info
起動確認はこんな感じ

~~~:結果
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 土 2022-04-02 09:09:46 JST; 30s ago
~~~
:::

passwordの設定をする。
mysqlを初回に起動すると一時パスワードがlogに吐き出されので以下のコマンドを打って出てきたパスをメモとして残しておく。
~~~:Terminal
sudo grep password /var/log/mysqld.log
~~~

パスワードの更新と初期設定をする。先程吐き出されたlogのパスワードから変更する。
※new passwordは2回入力したらあとはEnterのみ押していけばOK（本番では色々設定が必要）
~~~:Terminal
sudo mysql_secure_installation
~~~

ログインと状態確認をする。
| 用法 | コマンド |
|:-:|:-:|
| ログイン方法 | mysql -u root -p |
| 状態確認 | status |

↓の結果が帰ってくればまぁ大丈夫。
~~~:Terminal
mysql  Ver 8.0.28 for Linux on x86_64 (MySQL Community Server - GPL)

Connection id:          11
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         8.0.28 MySQL Community Server - GPL
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
UNIX socket:            /var/lib/mysql/mysql.sock
Binary data as:         Hexadecimal
Uptime:                 7 min 47 sec

Threads: 2  Questions: 16  Slow queries: 0  Opens: 133  Flush tables: 3  Open tables: 49  Queries per second avg: 0.034
~~~

念の為文字コードも確認
~~~:Terminal
show variables like '%char%';
~~~

↓の結果が帰ってくればまぁ大丈夫だと思うので確認終わったらMySQLは終了
~~~:Terminal
mysql> show variables like '%char%';
+--------------------------------------+--------------------------------+
| Variable_name                        | Value                          |
+--------------------------------------+--------------------------------+
| character_set_client                 | utf8mb4                        |
| character_set_connection             | utf8mb4                        |
| character_set_database               | utf8mb4                        |
| character_set_filesystem             | binary                         |
| character_set_results                | utf8mb4                        |
| character_set_server                 | utf8mb4                        |
| character_set_system                 | utf8mb3                        |
| character_sets_dir                   | /usr/share/mysql-8.0/charsets/ |
| validate_password.special_char_count | 1                              |
+--------------------------------------+--------------------------------+
9 rows in set (0.01 sec)
~~~

### 念の為node.jsをインストールしておく

:::note alert
2023年11月30日（木）時点では以下の方法が使えないので別方法をメモしておきます。

### リポジトリ追加
~~~:Terminal
sudo curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
~~~

上記を実行すると以下のメッセージが表示される。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56318/479c7cba-0b40-f07e-4244-ac651059c15a.png)

翻訳すると…

~~~:Google先生によると
https://rpm.nodesource.com/setup_X にあるこのスクリプトは、以前は
install Node.js は現在非推奨であり、最終的には非アクティブになります。

NodeSource ディストリビューションの Github にアクセスし、次に従ってください。
リポジトリを移行する手順URLは↓。
~~~

[移行方法はgithubの方に記載されている模様ですが内容吟味していない](https://github.com/nodesource/distributions
)

インストール
~~~:Terminal
sudo yum install -y nodejs
~~~
:::

:::note info
調査したところ以下の方法でも追加可能

１． GitHubから nvmをクローンします。
~~~:Terminal
git clone https://github.com/creationix/nvm.git ~/.nvm
~~~

２．nvmへのパスを通します。
~~~:Terminal
source ~/.nvm/nvm.sh
~~~

３. nvmコマンドへのパスの設定します。ファイルを開いて
~~~:Terminal
vi .bash_profile
~~~

４. ↓のように編集します。
~~~:Terminal
# .bash_profile

# Get the aliases and functions
if [[ -s ~/.nvm/nvm.sh ]] ; then
        source ~/.nvm/nvm.sh ;
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH
~~~

５．Node.jsをインストールするための準備（これでインストール可能なバージョンが表示される）
~~~:Terminal
nvm ls-remote
~~~

６．Node.js のインストール（インストールすときはバージョンを指定する）
※v16より上はエラーになる可能性大
~~~:Terminal
nvm install 16.20.2
~~~

７．使用するバージョンの指定（今度は「v」をつける）
~~~:Terminal
nvm use v16.20.2
~~~
:::


### 確認コマンド
**node**
~~~:Terminal
node -v
~~~

**npm**
~~~:Terminal
npm -v
~~~


### phpのインストール
ec2は何も設定しないとphp5.4がインストールされてしまうため諸々設定を入れつつインストールします。
まずはインストール可能なphpのバージョン確認
※インストールはamazon-linux-extrasコマンドを使用します。

~~~:Terminal
amazon-linux-extras | grep php
~~~

php8.2をインストールします。（現時点でインストール可能なものをインストールします。）
~~~:Terminal
sudo amazon-linux-extras install php8.2
~~~

残りの細かいphpをインストールしていきます。（8.2になっていればこれでインストール可能）
phpmyadminだけインストールできないので別でインストール（何個か失敗するかも）
~~~:Terminal
sudo yum install -y php-cli php-pdo php-fpm php-json php-mysqlnd
~~~

~~~:Terminal
sudo yum install -y php php-mbstring php-xml php-pear php82-php-pecl-xmlrpc.x86_64 php-gd php82-php-pecl-mcrypt.x86_64 php82-php-pecl-mysql.x86_64
~~~

~~~:Terminal
sudo yum install -y php-devel
~~~

~~~:Terminal
sudo yum -y install --enablerepo=epel,remi,remi-php74 phpmyadmin
~~~



↓のように利用可能なリポジトリが表示されるのでepelを使ってyumでインストールします。
~~~:結果
phpMyAdmin-4.4.15.10-6.el7.noarch : Handle the administration of MySQL over the World Wide Web
リポジトリー        : epel
~~~

yumコマンドを使用してphpmyadminをインストール。できたらバージョンの確認（php -v）ね
~~~:Terminal
sudo yum -y install --enablerepo=epel,remi,remi-php74 phpmyadmin
~~~

php.iniファイルの編集（事前にコピーはあったほうが安心）
~~~:Terminal
sudo vim /etc/php.ini
~~~

:::note info
### 変更点
※検索は「/〇〇」

* memory_limit = 512M
* post_max_size = 100M
* upload_max_filesize = 100M
* date.timezone = Asia/Tokyo
* display_errors = On
* mbstring.language = Japanese
* mbstring.internal_encoding = UTF-8
* mbstring.http_input = UTF-8
* mbstring.http_output = pass
* mbstring.encoding_translation = On
* mbstring.detect_order = auto
:::

### ImageMagickをインストールしてphpで利用できるように設定する。

:::note alert
スーパーユーザーで実行しないとmakeでエラーになります。
:::

~~~:SHELL
git clone https://github.com/Imagick/imagick
cd imagick
phpize && ./configure
make
make install
~~~

### php.iniファイルに以下を追加する。
※「extension_dir =」で検索
~~~:php.ini
extension_dir = "/usr/lib64/php/modules/"
# インストールされたディレクトリ

[imagick]
extension="imagick.so"
~~~

### インストールチェック
~~~:SHELL
php -m | grep imagick
~~~



### phpmyadminの設定
~~~:Terminal
sudo vim /etc/httpd/conf.d/phpMyAdmin.conf
~~~

今の所コレで動いている。
~~~:vim
# phpMyAdmin - Web based MySQL browser written in php
#
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
       Require all granted
     </RequireAny>
   </IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
       Require all granted
     </RequireAny>
   </IfModule>
</Directory>

# These directories do not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries/>
    Require all denied
</Directory>

<Directory /usr/share/phpMyAdmin/templates/>
    Require all denied
</Directory>

<Directory /usr/share/phpMyAdmin/setup/lib/>
    Require all denied
</Directory>

<Directory /usr/share/phpMyAdmin/setup/frames/>
    Require all denied
</Directory>

# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc.  This may break your mod_security implementation.
#
#<IfModule mod_security.c>
#    <Directory /usr/share/phpMyAdmin/>
#        SecRuleInheritance Off
#    </Directory>
#</IfModule>
~~~

設定が完了したら文法チェックなどをしてからhttpdを再起動。
~~~:Terminal
sudo apachectl configtest
sudo service httpd configtest
sudo systemctl restart httpd.service
~~~

試しにphpmyadminにアクセスして↓が表示されればOK

:::note info
パブリックIP/phpmyadmin/
:::

### Postfixの設定
ローカルサーバからメール送信を可能にするための備忘録
https://qiita.com/akisute_sara/items/8f9e75a045b3d86d16ea

### wordpressのインストール
DBでwordpress用のユーザーを作ります。（このDB作成はphpmyadminからでもOK）
※「your_strong_password」は任意のパスワードを入れてください。

:::note info
こちらはサーバ上にwordpressをインストールする場合の手順です。
ローカルマシンで使用する場合は別途wordpress公式サイトからzipファイルダウンロードして展開した方が良いです。（多数環境を用意できたりするため）
:::

~~~:MySQL
CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password';
~~~

DBを作成します。（DB名は任意）
~~~:MySQL
CREATE DATABASE `wordpress-db`;
~~~

データベースに対して、以前作成した WordPress ユーザーに対する完全な権限を付与します。
~~~:MySQL
GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
~~~

すべての変更を有効にするため、データベース権限をフラッシュしてMySQLを終了

~~~:MySQL
FLUSH PRIVILEGES;
~~~

以下コマンドでwordpressのファイルを取得します。
~~~:Terminal
wget https://ja.wordpress.org/latest-ja.tar.gz
~~~

ファイルの展開
~~~:Terminal
tar -xzvf latest-ja.tar.gz
~~~

展開されたファイルを *ls* で確認
~~~:結果
latest-ja.tar.gz  wordpress
~~~

wordpress内のconfigファイルのコピー＆ファイル名の変更
~~~:Terminal
cd wordpress
cp -pr wp-config-sample.php wp-config.php
~~~
    
vimにて「wp-config.php」ファイルに作成したDBの情報を登録。

:::note info
### 該当箇所
/** データベースの名前
define( 'DB_NAME', 'database_name_here' );

/** データベースのユーザー名 */
define( 'DB_USER', 'username_here' );

/** データベースのパスワード */
define( 'DB_PASSWORD', 'password_here' );
:::

WordPress Salts Generatorにアクセスし、認証用ユニークキー8行をそのまま全行テキストエディタにコピペ。
※なおconfigファイル内にURLは記載されている。
https://api.wordpress.org/secret-key/1.1/salt/

:::note info
### 該当箇所

define( 'AUTH_KEY',         'put your unique phrase here' );
define( 'SECURE_AUTH_KEY',  'put your unique phrase here' );
define( 'LOGGED_IN_KEY',    'put your unique phrase here' );
define( 'NONCE_KEY',        'put your unique phrase here' );
define( 'AUTH_SALT',        'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT',   'put your unique phrase here' );
define( 'NONCE_SALT',       'put your unique phrase here' );
:::

apacheのドキュメントルートでフォルダを作成します。
~~~:Terminal
cd /var/www/html
sudo mkdir wordpress
~~~

wordpressファイルをapacheのドキュメントルートに配置します。
~~~:Terminal
sudo cp -r wordpress/* /var/www/html/wordpress/
~~~

これで一通りの配置は完了しましたので作成したインスタンスのパブリックDNSから実際にアクセスしてみましょう。
※どこかでユーザー権限を変更する必要があるのでそこを確認する。

## npmパッケージのexpressをインストールする。

### vagrantファイルの編集
expressを実行するときのポートが必要になるためこちらのコードを28行目付近に追加
また、vagrantは管理者権限で実行する必要があります。
~~~:terminal
config.vm.network "forwarded_port", host: 3000, guest: 3000
~~~

### terminalでの操作

まずexpressのプロジェクトを作成します？
~~~:terminal
npm i -g express-generator
~~~

任意の場所にプロジェクト用のディレクトリを作成します。
~~~:terminal
mkdir 〇〇
~~~

expressのひな型を作成します。
~~~:terminal
express -e 
~~~
※実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56318/1a7c68b1-fc21-4434-53c1-88bb879be43a.png)

続いて、npmをインストールします。
~~~:terminal
npm install
~~~

※実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56318/0646b93a-96c2-fe11-a91a-1ec10e28fa65.png)




完了したらアプリを起動してみます。
~~~:terminal
DEBUG=node-test:* npm start
~~~
こんな画面がでればOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56318/73e86543-1292-bb03-a845-90a13aca5092.png)



★参考記事

ロケールとタイムゾーンの変更
http://taustation.com/vagrant-virtualbox-amazonlinux2/

初期設定7選
https://i-think-it.net/ec2-startup-centos7-7/#firewalldiptables

apacheの設定
https://go-journey.club/archives/14030

apacheの権限変更
https://kerberos.hatenablog.com/entry/2021/07/08/201120

apacheのSeverNameエラーが出る場合
https://onoredekaiketsu.com/apache-error-fully-qualified-domain-name/

phpのインストール方法
https://it-jog.com/wordpress/install-php74-wpress

wordpress日本語版のインストール
https://qiita.com/pugiemonn/items/84e060b39c2c15e80b57

wordpressの設定方法（aws公式）
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/hosting-wordpress.html

wordpressの設定方法（ユーザー記事）※こちらはmariaDBとnginx使っているようです。
https://kacfg.com/ec2-wordpress/

node.jsのインストール参考
https://qiita.com/oishihiroaki/items/bc663eb1282d87c46e97

エラーが出た場合
https://rensaba-programer.jp/2023/05/17/node-lib64-libm-so-6-version-glibc_2-27-not-found-required-by-node/

expressの起動方法
https://qiita.com/naoto_koyama/items/a0bf83b6faca7a4f2c58