はじめに
Apache 2.2 + Java 7 + MySQL 5.5 + Tomcat7の環境で検証をする必要があったので、
これらをソースからインストールする方法を記載する。
当然、どれもEOLのためセキュリティ的に脆弱な部分があることに留意する。
これらは全て検証で使用するため、公開サーバとすることはない。
例によってAWS EC2で構築する。
環境
1
2
3
4
5
| Apache 2.2.34
OpenSSL 1.0.2k
Tomcat 7.0.79
MySQL 5.5.62
Java 7 (jdk7u80)
|
EC2の構築
まずは、インストール元となるインスタンスを構築する。
※ x86
アーキテクチャではなく arm
アーキテクチャでは対応するビルドができない可能性があるため、今回は x86
アーキテクチャのインスタンスで実施する。
EC2の設定
下記のような設定で構築する。
1
2
3
4
| OS: AmazonLinux2023
インスタンスタイプ: t3.micro
セキュリティグループ: 22, 80, 443, 8080を自分のIPのみ開放
ストレージ: gp3 8GB
|
接続
※以前の記事でも記載したが、RLoginで接続する際に 鍵方式が SHA1
だとエラーが出る。
その場合は、SHA2-256
, SHA2-512
のいずれかの方式に変更して接続すること。
ミドルウェアのインストール
接続が完了したら早速インストールの作業を始める。
全てEOLになっているため、通常のパッケージマネージャーから入れられない。
そのため、アーカイブされたソースからインストールする方法をとる。
make gccのインストール
1
| sudo dnf install make gcc
|
↓この辺が入る。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| Dependencies resolved.
===========================================================================================================================================================================================================
Package Architecture Version Repository Size
===========================================================================================================================================================================================================
Installing:
gcc x86_64 11.3.1-4.amzn2023.0.3 amazonlinux 32 M
make x86_64 1:4.3-5.amzn2023.0.2 amazonlinux 534 k
Installing dependencies:
annobin-docs noarch 10.93-1.amzn2023.0.1 amazonlinux 92 k
annobin-plugin-gcc x86_64 10.93-1.amzn2023.0.1 amazonlinux 887 k
cpp x86_64 11.3.1-4.amzn2023.0.3 amazonlinux 10 M
gc x86_64 8.0.4-5.amzn2023.0.2 amazonlinux 105 k
glibc-devel x86_64 2.34-52.amzn2023.0.2 amazonlinux 48 k
glibc-headers-x86 noarch 2.34-52.amzn2023.0.2 amazonlinux 448 k
guile22 x86_64 2.2.7-2.amzn2023.0.2 amazonlinux 6.4 M
kernel-headers x86_64 6.1.21-1.45.amzn2023 amazonlinux 1.4 M
libmpc x86_64 1.2.1-2.amzn2023.0.2 amazonlinux 62 k
libtool-ltdl x86_64 2.4.7-1.amzn2023.0.3 amazonlinux 38 k
libxcrypt-devel x86_64 4.4.33-7.amzn2023 amazonlinux 32 k
Transaction Summary
===========================================================================================================================================================================================================
Install 13 Packages
|
OpenSSLインストール
ソースビルドに下記のパッケージが必要になるため事前に入れておく。
1
| sudo dnf install perl zlib-devel
|
1
2
3
4
5
| $ cd /usr/local/src
$ sudo wget https://ftp.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz
$ sudo tar xvfz openssl-1.0.2k.tar.gz
$ cd openssl-1.0.2k
$ sudo ./config shared zlib
|
↓下記が出ればOK
1
2
3
| ....
make[1]: Leaving directory '/usr/local/src/openssl-1.0.2k/test'
Configured for linux-x86_64.
|
インストール作業を実施する。
1
2
3
4
5
6
7
| # makeの実施
$ sudo make depend
$ sudo make
$ sudo make test
# インストール
$ sudo make install
|
↓こんな感じで終了しているはず。
1
2
3
4
5
6
7
8
| ...
cp libcrypto.pc /usr/local/ssl/lib/pkgconfig
chmod 644 /usr/local/ssl/lib/pkgconfig/libcrypto.pc
cp libssl.pc /usr/local/ssl/lib/pkgconfig
chmod 644 /usr/local/ssl/lib/pkgconfig/libssl.pc
cp openssl.pc /usr/local/ssl/lib/pkgconfig
chmod 644 /usr/local/ssl/lib/pkgconfig/openssl.pc
[ec2-user@ip-172-31-35-61 openssl-1.0.2k]$
|
インストールしたOpenSSLを適用させる。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| # confの作成
sudo sh -c "echo '/usr/local/ssl/lib' >> /etc/ld.so.conf.d/openssl-1.0.2k.conf"
# 確認
less /etc/ld.so.conf.d/openssl-1.0.2k.conf
/usr/local/ssl/lib
と書いてあればOK!
# 反映
sudo /sbin/ldconfig
# SSLの共有ライブラリがどれを見ているのか確認
ldconfig -p | grep -i libssl
[ec2-user@ip-172-31-35-61 openssl-1.0.2k]$ ldconfig -p | grep -i libssl
libssl3.so (libc6,x86-64) => /lib64/libssl3.so
libssl.so.3 (libc6,x86-64) => /lib64/libssl.so.3
libssl.so.1.0.0 (libc6,x86-64) => /usr/local/ssl/lib/libssl.so.1.0.0
libssl.so (libc6,x86-64) => /usr/local/ssl/lib/libssl.so
先程インストールしたディレクトリになっているのでOK
|
シンボリックリンクの変更
1
2
| [ec2-user@ip-172-31-35-61 openssl-1.0.2k]$ openssl version
OpenSSL 3.0.8 7 Feb 2023 (Library: OpenSSL 3.0.8 7 Feb 2023)
|
現状だと、 openssl
のバイナリが既にインストール済みのものを見ているので、これを変更する。
which
コマンドで確認し、修正を行う。
1
2
3
4
5
6
7
8
9
10
| [ec2-user@ip-172-31-35-61 openssl-1.0.2k]$ which openssl
/usr/bin/openssl
$ cd /usr/bin
$ sudo mv openssl openssl-3.0.8
$ sudo ln -s /usr/local/ssl/bin/openssl openssl
$ openssl version
[ec2-user@ip-172-31-35-61 bin]$ openssl version
OpenSSL 1.0.2k 26 Jan 2017
|
これでOpenSSLのインストール作業は完了
Apacheのインストール
例によって、 /usr/local/src
に入れる。
Apache
のモジュールについては、ほぼ全部入れているが適宜オプションを変更すること。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| $ cd /usr/local/src
$ sudo curl -LO http://archive.apache.org/dist/httpd/httpd-2.2.34.tar.gz
$ sudo tar zxf httpd-2.2.34.tar.gz
$ cd httpd-2.2.34
$ sudo ./configure \
--with-ssl=/usr/local/ssl \
--enable-mods-shared=all \
--enable-proxy \
--enable-ssl \
--enable-usertrack \
--enable-so \
--enable-authn-alias \
--enable-cache \
--enable-disk-cache \
--enable-cgi \
--enable-suexec
|
※オプションは下記が参考になる。
参考: https://httpd.apache.org/docs/2.2/programs/configure.html
↓下記のようになっていればOK
1
2
3
4
5
6
7
| config.status: creating support/phf_abuse_log.cgi
config.status: creating support/split-logfile
config.status: creating build/rules.mk
config.status: creating build/pkg/pkginfo
config.status: creating build/config_vars.sh
config.status: creating include/ap_config_auto.h
config.status: executing default commands
|
インストール
1
2
| $ sudo make
$ sudo make install
|
↓下記のようになっていればOK
1
2
3
4
5
| mkdir /usr/local/apache2/man
mkdir /usr/local/apache2/man/man1
mkdir /usr/local/apache2/man/man8
mkdir /usr/local/apache2/manual
make[1]: Leaving directory '/usr/local/src/httpd-2.2.34'
|
確認する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| cd /usr/local/apache2
[ec2-user@ip-172-31-35-61 apache2]$ ./bin/apachectl -V
Server version: Apache/2.2.34 (Unix)
Server built: Apr 8 2023 17:49:41
Server's Module Magic Number: 20051115:43
Server loaded: APR 1.5.2, APR-Util 1.5.4
Compiled using: APR 1.5.2, APR-Util 1.5.4
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/usr/local/apache2"
-D SUEXEC_BIN="/usr/local/apache2/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
|
インストールできているようだ。
Apacheユーザで実行できるようにする。
apache
ユーザを追加し権限を変更する。
1
2
3
| $ sudo useradd -s /sbin/nologin apache
$ sudo usermod -G apache apache
$ sudo chown -R apache:apache /usr/local/apache2
|
起動ユーザを deamon
→ apache
に変更する。
1
| $ sudo vi /usr/local/apache2/conf/httpd.conf
|
1
2
3
4
| -User daemon
-Group daemon
+User apache
+Group apache
|
129-130行目を修正する。
Apacheサービスの登録/自動起動設定
1
| $ sudo vi /etc/systemd/system/httpd.service
|
下記のように記載して保存する。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| [Unit]
Description=The Apache 2.2 HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
EnvironmentFile=/usr/local/apache2/conf/httpd.conf
ExecStart=/usr/local/apache2/bin/apachectl -k start
ExecReload=/usr/local/apache2/bin/apachectl -k graceful
ExecStop=/usr/local/apache2/bin/apachectl -k stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
|
1
2
3
4
5
| # サービスの自動起動を有効にする
$ sudo systemctl enable httpd.service
# 確認
$ sudo systemctl list-unit-files | grep httpd.service
|
こんな感じになる
1
2
| [ec2-user@ip-172-31-35-61 apache2]$ sudo systemctl list-unit-files | grep httpd.service
httpd.service enabled disabled
|
実際に起動する。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| # 起動
$ sudo systemctl start httpd.service
# 確認
$ sudo systemctl status httpd.service
● httpd.service - The Apache 2.2 HTTP Server
Loaded: loaded (/etc/systemd/system/httpd.service; enabled; preset: disabled)
Active: active (running) since Sat 2023-04-08 17:59:00 UTC; 4s ago
Process: 101878 ExecStart=/usr/local/apache2/bin/apachectl -k start (code=exited, status=0/SUCCESS)
Main PID: 101931 (httpd)
Tasks: 6 (limit: 1055)
Memory: 7.4M
CPU: 54ms
CGroup: /system.slice/httpd.service
├─101931 /usr/local/apache2/bin/httpd -k start
├─101932 /usr/local/apache2/bin/httpd -k start
├─101933 /usr/local/apache2/bin/httpd -k start
├─101934 /usr/local/apache2/bin/httpd -k start
├─101935 /usr/local/apache2/bin/httpd -k start
└─101936 /usr/local/apache2/bin/httpd -k start
Apr 08 17:58:59 ip-172-31-35-61.ap-northeast-1.compute.internal systemd[1]: Starting httpd.service - The Apache 2.2 HTTP Server...
Apr 08 17:59:00 ip-172-31-35-61.ap-northeast-1.compute.internal systemd[1]: Started httpd.service - The Apache 2.2 HTTP Server.
|
いけてる!
プロセスを確認
1
2
3
4
5
6
7
8
| [ec2-user@ip-172-31-35-61 apache2]$ ps -ef | grep httpd
root 101931 1 0 17:58 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
apache 101932 101931 0 17:59 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
apache 101933 101931 0 17:59 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
apache 101934 101931 0 17:59 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
apache 101935 101931 0 17:59 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
apache 101936 101931 0 17:59 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
ec2-user 101942 1828 0 17:59 pts/0 00:00:00 grep --color=auto httpd
|
よさそう。
仕上げに、/usr/local/bin 内に Apachectl, httpdのシンボリックリンクを作成する。
1
2
3
| $ cd /usr/local/bin
$ sudo ln -s /usr/local/apache2/bin/httpd httpd
$ sudo ln -s /usr/local/apache2/bin/apachectl apachectl
|
おまけ: ビルドオプションを忘れた場合に確認する方法
1
2
| $ cd /usr/local/apache2/build
$ less config.nice
|
config.nice
にビルド時のオプションが記載されている。
この時点でブラウザからアクセスできるか確認してみる。
It Works
が出てるのでOK
SSL証明書の作成
適当なSSL証明書を作成しておく。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| $ cd ~
$ openssl genrsa 2048 > server.key
$ openssl req -new -key server.key > server.csr
[ec2-user@ip-172-31-35-61 ~]$ openssl req -new -key server.key > server.csr
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:localhost
Email Address []:
A challenge password []:
An optional company name []:
$ openssl x509 -req -days 3650 -signkey server.key < server.csr > server.crt
[ec2-user@ip-172-31-35-61 ~]$ openssl x509 -req -days 3650 -signkey server.key < server.csr > server.crt
Signature ok
subject=/C=JP/ST=Tokyo/O=Internet Widgits Pty Ltd/CN=localhost
Getting Private key
|
こんな感じで作成、とっても適当!
Apache
のディレクトリに入れておく。
1
2
3
| $ cd ~
$ sudo mkdir -p /usr/local/apache2/ssl
$ sudo cp server* /usr/local/apache2/ssl
|
ssl.conf
の修正
1
2
3
4
5
| $ cd /usr/local/apache2/conf/extra/
# バックアップを取って差分を取れるようにしておく。
$ sudo cp httpd-ssl.conf httpd-ssl.conf.bk
$ sudo vi httpd-ssl.conf
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| [ec2-user@ip-172-31-35-61 extra]$ diff -u httpd-ssl.conf.bk httpd-ssl.conf
--- httpd-ssl.conf.bk 2023-04-08 18:07:39.164674897 +0000
+++ httpd-ssl.conf 2023-04-08 18:09:04.955485116 +0000
@@ -112,8 +112,8 @@
# General setup for the virtual host
DocumentRoot "/usr/local/apache2/htdocs"
-ServerName www.example.com:443
-ServerAdmin [email protected]
+#ServerName www.example.com:443
+#ServerAdmin [email protected]
ErrorLog "/usr/local/apache2/logs/error_log"
TransferLog "/usr/local/apache2/logs/access_log"
@@ -131,7 +131,7 @@
# Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)
# require an ECC certificate which can also be configured in
# parallel.
-SSLCertificateFile "/usr/local/apache2/conf/server.crt"
+SSLCertificateFile "/usr/local/apache2/ssl/server.crt"
#SSLCertificateFile "/usr/local/apache2/conf/server-dsa.crt"
#SSLCertificateFile "/usr/local/apache2/conf/server-ecc.crt"
@@ -141,7 +141,7 @@
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
# ECC keys, when in use, can also be configured in parallel
-SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"
+SSLCertificateKeyFile "/usr/local/apache2/ssl/server.key"
#SSLCertificateKeyFile "/usr/local/apache2/conf/server-dsa.key"
#SSLCertificateKeyFile "/usr/local/apache2/conf/server-ecc.key"
|
httpd.conf
の修正
1
2
3
4
5
| cd /usr/local/apache2/conf/
# バックアップを取って差分を取れるようにしておく。
sudo cp httpd.conf httpd.conf.bk
sudo vi httpd.conf
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| --- httpd.conf.bk 2023-04-08 18:15:31.759104907 +0000
+++ httpd.conf 2023-04-08 18:16:08.459447728 +0000
@@ -178,8 +178,6 @@
<Directory />
Options FollowSymLinks
AllowOverride None
- Order deny,allow
- Deny from all
</Directory>
#
@@ -477,7 +475,7 @@
#Include conf/extra/httpd-default.conf
# Secure (SSL/TLS) connections
-#Include conf/extra/httpd-ssl.conf
+Include conf/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
# starting without SSL on platforms with no /dev/random equivalent
|
これで ssl
接続ができるようになっているはずなので確認してみる。
1
2
3
| $ sudo systemctl restart httpd.service
$ sudo systemctl status httpd.service
(active runningになっていればOK)
|
証明書は自己証明書なので警告が出ているが、https
でアクセスはできている。
これで Apache
のインストールは完了
Javaのインストール
Tomcatを入れる前に、Javaを入れておく必要がある。
Java8をパッケージから入れる
1
| $ sudo dnf install java-1.8.0-amazon-corretto-devel
|
1
2
3
4
| [ec2-user@ip-172-31-35-61 ~]$ java -version
openjdk version "1.8.0_362"
OpenJDK Runtime Environment Corretto-8.362.08.1 (build 1.8.0_362-b08)
OpenJDK 64-Bit Server VM Corretto-8.362.08.1 (build 25.362-b08, mixed mode)
|
Java7をalternativesで切り替えられるようにする
下記URLから、 Linux x64
の jdk-7u80-linux-x64.tar.gz
をダウンロードする。
URL: https://www.oracle.com/jp/java/technologies/javase/javase7-archive-downloads.html
オラクルのサインインを求められるので、サインインする。
再度URLにアクセスし、ダウンロードする。
ダウンロードしたソースをファイル転送でサーバにいれる。
以降は/home/ec2-user
に入る想定で記載する。
バイナリを /usr/local/src
に入れ、解凍する。
1
2
3
| $ cd /usr/local/src
$ sudo mv /home/ec2-user/jdk-7u80-linux-x64.tar.gz .
$ sudo tar xzvf jdk-7u80-linux-x64.tar.gz
|
- バージョンを確認しておく。
1
2
3
4
| [ec2-user@ip-172-31-1-72 src]$ ./jdk1.7.0_80/bin/java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
|
update-alternatives
で入れる。
1
2
3
4
5
6
| $ sudo update-alternatives --verbose --install /usr/bin/java java /usr/local/src/jdk1.7.0_80/bin/java 10
[ec2-user@ip-172-31-35-61 src]$ java -version
openjdk version "1.8.0_362"
OpenJDK Runtime Environment Corretto-8.362.08.1 (build 1.8.0_362-b08)
OpenJDK 64-Bit Server VM Corretto-8.362.08.1 (build 25.362-b08, mixed mode)
|
この状態だとまだ切り替わっていない。
切り替えるには、 config
オプションで変える。
config
で java
の向き先を変える。
1
2
3
4
5
6
7
8
9
10
11
12
| $ sudo update-alternatives --config java
[ec2-user@ip-172-31-35-61 src]$ sudo update-alternatives --config java
There are 2 programs which provide 'java'.
Selection Command
-----------------------------------------------
*+ 1 /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java
2 /usr/local/src/jdk1.7.0_80/bin/java
Enter to keep the current selection[+], or type selection number: 2
|
2
を選択して java
の向き先を先程インストールししたディレクトリにする。
- 変更されたかの確認
1
2
3
4
| [ec2-user@ip-172-31-35-61 src]$ java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
|
参考: https://qiita.com/yochapan/items/af86a320035f8db7daf4
Tomcatのインストール
Tomcat 7.0.79はアーカイブされているバージョンのため、アーカイブからパッケージをダウンロードしてインストールする。
リンク: https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.79/bin/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| $ cd /usr/local/src
$ sudo wget https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.79/bin/apache-tomcat-7.0.79.tar.gz
$ sudo tar xvzf apache-tomcat-7.0.79.tar.gz
$ sudo mv apache-tomcat-7.0.79 /usr/local/tomcat
$ sudo useradd -d /usr/local/tomcat -s /bin/false tomcat
$ sudo chown -R tomcat: /usr/local/tomcat
$ sudo /usr/local/tomcat/bin/startup.sh
[ec2-user@ip-172-31-35-61 src]$ sudo /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
|
※スタートしたかを確認する。
一応 起動時のJVMのバージョンも確認しておく。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| [ec2-user@ip-172-31-35-61 conf]$ sudo /usr/local/tomcat/bin/version.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.79
Server built: Jun 26 2017 16:25:20 UTC
Server number: 7.0.79.0
OS Name: Linux
OS Version: 6.1.21-1.45.amzn2023.x86_64
Architecture: amd64
JVM Version: 1.7.0_80-b15
JVM Vendor: Oracle Corporation
|
JVM Version: 1.7.0_80-b15
となっているので問題なさそうだ。
AJPでApache経由でアクセスするようにする
Apache
の修正
1
2
3
| $ cd /usr/local/apache2/conf
$ sudo cp httpd.conf httpd.conf.bk2
$ sudo vi httpd.conf
|
1
2
3
4
5
6
7
8
| [ec2-user@ip-172-31-35-61 conf]$ diff -u httpd.conf.bk2 httpd.conf
--- httpd.conf.bk2 2023-04-08 18:48:43.227590261 +0000
+++ httpd.conf 2023-04-08 18:49:17.707911304 +0000
@@ -485,3 +485,4 @@
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
+ProxyPass / ajp://localhost:8009/
|
Tomcat
の修正 (これは不要)
1
2
3
| $ cd /usr/local/tomcat/conf
$ sudo cp server.xml server.xml.bk
$ sudo vi server.xml
|
server.xml
を少し修正
1
2
3
4
5
6
7
8
9
10
11
12
13
| [ec2-user@ip-172-31-35-61 conf]$ sudo diff -u server.xml.bk server.xml
--- server.xml.bk 2023-04-08 18:42:29.894113752 +0000
+++ server.xml 2023-04-08 18:43:17.214554519 +0000
@@ -90,8 +90,7 @@
-->
<!-- Define an AJP 1.3 Connector on port 8009 -->
- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
-
+ <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
|
どちらも再起動する。
1
2
3
| $ sudo systemctl restart httpd.service
$ sudo /usr/local/tomcat/bin/shutdown.sh
$ sudo /usr/local/tomcat/bin/startup.sh
|
Tomcatの自動起動の設定
ユニットファイルの作成
1
| sudo vi /etc/systemd/system/tomcat.service
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| [Unit]
Description=Apache Tomcat 7.0.79
ConditionPathExists=/usr/local/tomcat
After=httpd.service
[Service]
User=tomcat
Group=tomcat
Type=oneshot
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
Restart=no
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
|
httpd.service
の後に起動したいので、 After
を指定しておく。
1
2
3
4
5
6
| $ sudo systemctl daemon-reload
$ sudo systemctl list-unit-files --type=service | grep tomcat
$ sudo systemctl enable tomcat
$ sudo systemctl list-unit-files | grep tomcat.service
$ sudo systemctl status tomcat.service
|
※ log
ファイルが root
になっていると起動できないので、Tomcatを停止し下記を実施する。
1
| $ sudo chown -R tomcat: logs/
|
これで下記のようにリスタートができるようになる。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| $ sudo systemctl restart tomcat.service
[ec2-user@ip-172-31-35-61 conf]$ sudo systemctl status tomcat.service
● tomcat.service - Apache Tomcat 7.0.79
Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; preset: disabled)
Active: active (exited) since Sat 2023-04-08 18:56:29 UTC; 6s ago
Process: 105003 ExecStart=/usr/local/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 105003 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 1055)
Memory: 3.9M
CPU: 4.263s
CGroup: /system.slice/tomcat.service
Apr 08 18:56:29 ip-172-31-35-61.ap-northeast-1.compute.internal systemd[1]: Starting tomcat.service - Apache Tomcat 7.0.79...
Apr 08 18:56:29 ip-172-31-35-61.ap-northeast-1.compute.internal startup.sh[105003]: Tomcat started.
Apr 08 18:56:29 ip-172-31-35-61.ap-northeast-1.compute.internal systemd[1]: Finished tomcat.service - Apache Tomcat 7.0.79.
|
MySQLのインストール
アーカイブされているバージョンのため、アーカイブからパッケージをダウンロードしてインストールする。
※URLから直接 dnf install できなかったので wget でまずローカルに落としてから作業した。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| $ cd ~
$ mkdir -p work/mysql && cd $_
# mysql5.5.62-server
$ wget https://downloads.mysql.com/archives/get/p/23/file/MySQL-server-5.5.62-1.el7.x86_64.rpm
$ sudo dnf install MySQL-server-5.5.62-1.el7.x86_64.rpm
# mysql5.5.62-client
$ wget https://downloads.mysql.com/archives/get/p/23/file/MySQL-client-5.5.62-1.el7.x86_64.rpm
$ sudo dnf install MySQL-client-5.5.62-1.el7.x86_64.rpm
# mysql5.5.62-devel
$ wget https://downloads.mysql.com/archives/get/p/23/file/MySQL-devel-5.5.62-1.el7.x86_64.rpm
$ sudo dnf install MySQL-devel-5.5.62-1.el7.x86_64.rpm
|
インストール確認
1
2
| [ec2-user@ip-172-31-35-61 mysql]$ mysql --version
mysql Ver 14.14 Distrib 5.5.62, for Linux (x86_64) using readline 5.1
|
MySQLの自動起動設定
1
| sudo systemctl enable mysql
|
確認
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| [ec2-user@ip-172-31-35-61 mysql]$ sudo systemctl status mysql
○ mysql.service - LSB: start and stop MySQL
Loaded: loaded (/etc/rc.d/init.d/mysql; generated)
Active: inactive (dead)
Docs: man:systemd-sysv-generator(8)
[ec2-user@ip-172-31-35-61 mysql]$ sudo systemctl start mysql
[ec2-user@ip-172-31-35-61 mysql]$ sudo systemctl start mysql
[ec2-user@ip-172-31-35-61 mysql]$ sudo systemctl status mysql
● mysql.service - LSB: start and stop MySQL
Loaded: loaded (/etc/rc.d/init.d/mysql; generated)
Active: active (running) since Sat 2023-04-08 19:00:10 UTC; 5s ago
Docs: man:systemd-sysv-generator(8)
Process: 105974 ExecStart=/etc/rc.d/init.d/mysql start (code=exited, status=0/SUCCESS)
Tasks: 17 (limit: 1055)
Memory: 66.2M
CPU: 204ms
CGroup: /system.slice/mysql.service
├─105980 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/ip-172-31-35-61.ap-northeast-1.compute.internal.pid
└─106066 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=ip-172-31-35-61.ap-northeast-1.compute.internal.err --pid-fil>
Apr 08 19:00:08 ip-172-31-35-61.ap-northeast-1.compute.internal systemd[1]: Starting mysql.service - LSB: start and stop MySQL...
Apr 08 19:00:08 ip-172-31-35-61.ap-northeast-1.compute.internal mysql[105974]: Starting MySQL.
Apr 08 19:00:08 ip-172-31-35-61.ap-northeast-1.compute.internal mysql[105980]: Logging to '/var/lib/mysql/ip-172-31-35-61.ap-northeast-1.compute.internal.err'.
Apr 08 19:00:10 ip-172-31-35-61.ap-northeast-1.compute.internal mysql[105974]: . SUCCESS!
Apr 08 19:00:10 ip-172-31-35-61.ap-northeast-1.compute.internal systemd[1]: Started mysql.service - LSB: start and stop MySQL.
|
mysql
に入れるか確認
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| [ec2-user@ip-172-31-35-61 mysql]$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.62 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
|
後始末
my.cnf
をカスタマイズする
1
| $ sudo vi /etc/my.cnf.d/my.cnf
|
1
2
3
4
5
6
7
8
9
10
11
12
13
| [mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
|
再起動
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| sudo systemctl restart mysql
# 確認
[ec2-user@ip-172-31-35-61 ~]$ sudo systemctl status mysql
● mysql.service - LSB: start and stop MySQL
Loaded: loaded (/etc/rc.d/init.d/mysql; generated)
Active: active (running) since Sat 2023-04-08 19:02:36 UTC; 4s ago
Docs: man:systemd-sysv-generator(8)
Process: 106262 ExecStart=/etc/rc.d/init.d/mysql start (code=exited, status=0/SUCCESS)
Tasks: 17 (limit: 1055)
Memory: 36.2M
CPU: 144ms
CGroup: /system.slice/mysql.service
├─106268 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/ip-172-31-35-61.ap-northeast-1.compute.internal.pid
└─106355 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=ip-172-31-35-61.ap-northeast-1.compute.internal.err --pid-fil>
Apr 08 19:02:34 ip-172-31-35-61.ap-northeast-1.compute.internal systemd[1]: Starting mysql.service - LSB: start and stop MySQL...
Apr 08 19:02:36 ip-172-31-35-61.ap-northeast-1.compute.internal mysql[106262]: Starting MySQL.. SUCCESS!
Apr 08 19:02:36 ip-172-31-35-61.ap-northeast-1.compute.internal systemd[1]: Started mysql.service - LSB: start and stop MySQL.
|
その他設定しておくこと
UTC->JSTへの修正
1
| $ sudo timedatectl set-timezone Asia/Tokyo
|
確認
1
2
3
4
5
6
7
| $ date
Sat Apr 8 19:06:40 UTC 2023
$ sudo timedatectl set-timezone Asia/Tokyo
$ date
Sun Apr 9 04:06:49 JST 2023
|
問題なく変更できている。
rsyslogのインストール
AmazonLinux2023 だと /var/log
系のログファイルがないので、 rsyslog
を入れる。
1
| $ sudo dnf install rsyslog
|
cronのインストール
1
| $ sudo dnf install cronie-noanacron
|
サービス起動 & 自動起動設定
1
2
| $ sudo systemctl start crond
$ sudo systemctl enable crond
|
オプション: Fake SMTPの導入
mailpit
という 開発用のSMTPのダミーサーバがある。
これを使用することで、アプリケーションのメール送信を確認することができる。
Dockerのインストール
1
| $ sudo dnf install docker
|
サービス起動 & 自動起動設定
1
2
| $ sudo systemctl enable docker
$ sudo systemctl start docker
|
1
2
3
4
5
6
7
8
9
10
11
| [ec2-user@ip-172-31-35-61 ~]$ docker version
Client:
Version: 20.10.17
API version: 1.41
Go version: go1.19.3
Git commit: 100c701
Built: Mon Mar 13 22:41:42 2023
OS/Arch: linux/amd64
Context: default
Experimental: true
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/version": dial unix /var/run/docker.sock: connect: permission denied
|
Docker composeのインストール
1
2
3
4
5
| $ DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
$ mkdir -p $DOCKER_CONFIG/cli-plugins
$ curl -SL https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
$ chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
|
1
2
| [ec2-user@ip-172-31-35-61 ~]$ docker compose version
Docker Compose version v2.4.1
|
ec2-userでDocker起動できるようにする
1
2
| $ sudo usermod -a -G docker ec2-user
$ sudo chgrp docker /var/run/docker.sock
|
一度 ec2-user
からログアウトしてログインし直す。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| [ec2-user@ip-172-31-35-61 ~]$ docker version
Client:
Version: 20.10.17
API version: 1.41
Go version: go1.19.3
Git commit: 100c701
Built: Mon Mar 13 22:41:42 2023
OS/Arch: linux/amd64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.19.3
Git commit: a89b842
Built: Mon Mar 13 00:00:00 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.19
GitCommit: 1e1ea6e986c6c86565bc33d52e34b81b3e2bc71f
runc:
Version: 1.1.4
GitCommit: 5fd4c4d144137e991c4acebb2146ab1483a97925
docker-init:
Version: 0.19.0
GitCommit: de40ad0
[ec2-user@ip-172-31-35-61 ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
Got permission denied
が出なくなったのでOK
mailpitの導入
1
2
3
| $ cd ~
$ mkdir -p mailpit && cd $_
$ vi compose.yml
|
compose.yml
は下記のように記載する。
1
2
3
4
5
6
| services:
mailpit:
image: axllent/mailpit:v1.4.0
ports:
- 8025:8025
- 25:1025
|
ホストのポート25をコンテナのポート1025に繋げる形にする。
1
2
3
| [ec2-user@ip-172-31-35-61 mailpit]$ docker compose ps
NAME COMMAND SERVICE STATUS PORTS
mailpit-mailpit-1 "/mailpit" mailpit running 0.0.0.0:25->1025/tcp, 0.0.0.0:8025->8025/tcp, :::25->1025/tcp, :::8025->8025/tcp
|
これでセットアップは完了だが、AWSの方でセキュリティグループの 8025
を開ける必要があるので開けて確認をする。
最終的に下記のようなセキュリティグループの設定になっている。
アクセスの確認をする。
OK
メール送信をテストする
sendmailを入れる。
1
| $ sudo dnf install sendmail
|
下記をサーバで実行する。
実際にmailpit
にメールが来ていることが確認できる。
確認: 再起動後にApache, Tomcat, MySQLが起動しているか
EC2でインスタンスの再起動 or reboot
コマンドを実行する。
↓
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
| USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 3.5 1.7 23152 16440 ? Ss 04:38 0:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 32
root 2 0.0 0.0 0 0 ? S 04:38 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 04:38 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< 04:38 0:00 [rcu_par_gp]
root 5 0.0 0.0 0 0 ? I< 04:38 0:00 [slub_flushwq]
root 6 0.0 0.0 0 0 ? I< 04:38 0:00 [netns]
root 7 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/0:0-cgroup_destroy]
root 8 0.0 0.0 0 0 ? I< 04:38 0:00 [kworker/0:0H-events_highpri]
root 9 0.4 0.0 0 0 ? I 04:38 0:00 [kworker/u4:0-flush-259:0]
root 10 0.0 0.0 0 0 ? I< 04:38 0:00 [mm_percpu_wq]
root 11 0.0 0.0 0 0 ? I 04:38 0:00 [rcu_tasks_kthread]
root 12 0.0 0.0 0 0 ? I 04:38 0:00 [rcu_tasks_rude_kthread]
root 13 0.0 0.0 0 0 ? I 04:38 0:00 [rcu_tasks_trace_kthread]
root 14 0.1 0.0 0 0 ? S 04:38 0:00 [ksoftirqd/0]
root 15 0.1 0.0 0 0 ? I 04:38 0:00 [rcu_preempt]
root 16 0.0 0.0 0 0 ? S 04:38 0:00 [migration/0]
root 17 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/0:1-cgroup_destroy]
root 18 0.0 0.0 0 0 ? S 04:38 0:00 [cpuhp/0]
root 19 0.0 0.0 0 0 ? S 04:38 0:00 [cpuhp/1]
root 20 0.1 0.0 0 0 ? S 04:38 0:00 [migration/1]
root 21 0.1 0.0 0 0 ? S 04:38 0:00 [ksoftirqd/1]
root 22 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/1:0-cgroup_destroy]
root 23 0.0 0.0 0 0 ? I< 04:38 0:00 [kworker/1:0H-events_highpri]
root 25 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/u4:1-flush-259:0]
root 26 0.0 0.0 0 0 ? S 04:38 0:00 [kdevtmpfs]
root 27 0.0 0.0 0 0 ? I< 04:38 0:00 [inet_frag_wq]
root 28 0.0 0.0 0 0 ? S 04:38 0:00 [kauditd]
root 29 0.0 0.0 0 0 ? S 04:38 0:00 [khungtaskd]
root 30 0.0 0.0 0 0 ? S 04:38 0:00 [oom_reaper]
root 31 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/u4:2-flush-259:0]
root 32 0.0 0.0 0 0 ? I< 04:38 0:00 [writeback]
root 33 0.0 0.0 0 0 ? S 04:38 0:00 [kcompactd0]
root 34 0.0 0.0 0 0 ? SN 04:38 0:00 [khugepaged]
root 35 0.0 0.0 0 0 ? I< 04:38 0:00 [kintegrityd]
root 36 0.0 0.0 0 0 ? I< 04:38 0:00 [kblockd]
root 37 0.0 0.0 0 0 ? I< 04:38 0:00 [blkcg_punt_bio]
root 38 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/1:1-events]
root 39 0.0 0.0 0 0 ? I< 04:38 0:00 [tpm_dev_wq]
root 40 0.0 0.0 0 0 ? I< 04:38 0:00 [md]
root 41 0.0 0.0 0 0 ? I< 04:38 0:00 [edac-poller]
root 42 0.0 0.0 0 0 ? S 04:38 0:00 [watchdogd]
root 44 0.0 0.0 0 0 ? I< 04:38 0:00 [kworker/0:1H-kblockd]
root 48 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/u4:3-flush-259:0]
root 49 0.0 0.0 0 0 ? S 04:38 0:00 [kswapd0]
root 67 0.0 0.0 0 0 ? I< 04:38 0:00 [xfsalloc]
root 68 0.0 0.0 0 0 ? I< 04:38 0:00 [xfs_mru_cache]
root 70 0.0 0.0 0 0 ? I< 04:38 0:00 [kthrotld]
root 73 0.1 0.0 0 0 ? I 04:38 0:00 [kworker/1:2-cgroup_destroy]
root 86 0.0 0.0 0 0 ? S 04:38 0:00 [xenbus_probe]
root 117 0.0 0.0 0 0 ? I< 04:38 0:00 [nvme-wq]
root 119 0.0 0.0 0 0 ? I< 04:38 0:00 [nvme-reset-wq]
root 121 0.0 0.0 0 0 ? I< 04:38 0:00 [nvme-delete-wq]
root 127 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/u4:4-flush-259:0]
root 128 0.0 0.0 0 0 ? I< 04:38 0:00 [mld]
root 145 0.0 0.0 0 0 ? I< 04:38 0:00 [ipv6_addrconf]
root 146 0.0 0.0 0 0 ? I< 04:38 0:00 [kworker/1:1H-xfs-log/nvme0n1p1]
root 149 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/u4:5-events_unbound]
root 166 0.0 0.0 0 0 ? I< 04:38 0:00 [kstrp]
root 178 0.0 0.0 0 0 ? I< 04:38 0:00 [zswap-shrink]
root 179 0.0 0.0 0 0 ? I< 04:38 0:00 [kworker/u5:0]
root 356 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/0:2-events]
root 357 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/1:3-events]
root 713 0.0 0.0 0 0 ? I< 04:38 0:00 [xfs-buf/nvme0n1]
root 714 0.0 0.0 0 0 ? I< 04:38 0:00 [xfs-conv/nvme0n]
root 715 0.0 0.0 0 0 ? I< 04:38 0:00 [xfs-reclaim/nvm]
root 716 0.0 0.0 0 0 ? I< 04:38 0:00 [xfs-blockgc/nvm]
root 717 0.0 0.0 0 0 ? I< 04:38 0:00 [xfs-inodegc/nvm]
root 718 0.0 0.0 0 0 ? I< 04:38 0:00 [xfs-log/nvme0n1]
root 719 0.0 0.0 0 0 ? I< 04:38 0:00 [xfs-cil/nvme0n1]
root 720 0.0 0.0 0 0 ? S 04:38 0:00 [xfsaild/nvme0n1p1]
root 725 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/0:3-events_power_efficient]
root 726 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/0:4-cgroup_destroy]
root 766 0.8 1.9 50376 18452 ? Ss 04:38 0:00 /usr/lib/systemd/systemd-journald
root 1136 0.4 1.2 37200 11764 ? Ss 04:38 0:00 /usr/lib/systemd/systemd-udevd
systemd+ 1150 0.6 1.4 21168 13516 ? Ss 04:38 0:00 /usr/lib/systemd/systemd-resolved
root 1153 0.0 0.2 36024 2384 ? S<sl 04:38 0:00 /sbin/auditd
root 1159 0.0 0.0 0 0 ? I< 04:38 0:00 [ena]
root 1165 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/u4:6-flush-259:0]
root 1173 0.0 0.0 0 0 ? I< 04:38 0:00 [cryptd]
dbus 1237 0.1 0.4 8376 3904 ? Ss 04:38 0:00 /usr/bin/dbus-broker-launch --scope system --audit
dbus 1270 0.1 0.3 5264 2884 ? S 04:38 0:00 dbus-broker --log 4 --controller 9 --machine-id ec2160a5242b2c02755b13cec8fa10c6 --max-bytes 536870912 --max-fds 4096 --max-matches 1638
root 1305 0.0 0.7 15260 6520 ? Ss 04:38 0:00 /usr/bin/systemd-inhibit --what=handle-suspend-key:handle-hibernate-key --who=noah --why=acpid instead --mode=block /usr/sbin/acpid -f
root 1308 0.0 0.3 81328 3092 ? Ssl 04:38 0:00 /usr/sbin/irqbalance --foreground
libstor+ 1309 0.0 0.2 11792 2088 ? Ss 04:38 0:00 /usr/bin/lsmd -d
root 1311 132 0.7 164768 6868 ? Ssl 04:38 0:22 /usr/sbin/rngd -f -x pkcs11 -x nist
root 1312 2.5 0.6 180788 5736 ? Ssl 04:38 0:00 /usr/sbin/rsyslogd -n
root 1313 0.1 1.1 261044 11052 ? Ss 04:38 0:00 /usr/sbin/sssd -i --logger=files
systemd+ 1321 0.4 1.0 235736 9680 ? Ss 04:38 0:00 /usr/lib/systemd/systemd-networkd
root 1327 0.0 0.0 0 0 ? I< 04:38 0:00 [rpciod]
root 1328 0.0 0.0 0 0 ? I< 04:38 0:00 [xprtiod]
root 1332 0.6 1.3 262528 12516 ? S 04:38 0:00 /usr/libexec/sssd/sssd_be --domain implicit_files --uid 0 --gid 0 --logger=files
chrony 1334 0.0 0.3 95776 3600 ? S 04:38 0:00 /usr/sbin/chronyd -F 2
root 1344 0.4 4.2 276456 39704 ? S 04:38 0:00 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files
root 1350 0.7 4.5 1300204 41900 ? Ssl 04:38 0:00 /usr/bin/containerd
root 1351 0.0 0.3 281008 3588 ? Ssl 04:38 0:00 /usr/sbin/gssproxy -D
root 1365 0.2 1.0 17572 10044 ? Ss 04:38 0:00 /usr/lib/systemd/systemd-logind
root 1382 0.0 0.1 2668 1136 ? S 04:38 0:00 /usr/sbin/acpid -f
root 1411 0.0 0.7 27096 7136 ? Ss 04:38 0:00 /usr/local/apache2/bin/httpd -k start
tomcat 1448 28.7 7.3 1659696 68440 ? Sl 04:38 0:04 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.Clas
apache 1494 0.0 0.4 38396 3824 ? S 04:38 0:00 /usr/local/apache2/bin/httpd -k start
apache 1495 0.0 0.4 38396 3824 ? S 04:38 0:00 /usr/local/apache2/bin/httpd -k start
apache 1496 0.0 0.4 38396 3824 ? S 04:38 0:00 /usr/local/apache2/bin/httpd -k start
apache 1497 0.0 0.4 38396 3824 ? S 04:38 0:00 /usr/local/apache2/bin/httpd -k start
apache 1498 0.0 0.4 38396 3824 ? S 04:38 0:00 /usr/local/apache2/bin/httpd -k start
root 1526 0.0 1.3 723192 12872 ? Ssl 04:38 0:00 /usr/bin/amazon-ssm-agent
root 1527 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/1:4-events]
root 1532 0.0 0.8 29104 7992 ? Ss 04:38 0:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root 1540 1.5 6.8 1404380 63616 ? Ssl 04:38 0:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=32768:65536
root 1542 0.0 0.2 20544 2668 ? Ss 04:38 0:00 /usr/sbin/atd -f
root 1543 0.0 0.3 233420 3704 ? Ss 04:38 0:00 /usr/sbin/crond -n
root 1544 0.0 0.1 221344 1072 tty1 Ss+ 04:38 0:00 /sbin/agetty -o -p -- \u --noclear - linux
root 1545 0.0 0.1 221388 1068 ttyS0 Ss+ 04:38 0:00 /sbin/agetty -o -p -- \u --keep-baud 115200,57600,38400,9600 - vt220
root 1548 0.0 0.4 232300 3920 ? S 04:38 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/ip-172-31-35-61.ap-northeast-1.compute.internal.pid
mysql 1642 0.4 4.7 489956 43672 ? Sl 04:38 0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=ip-172-31-35-61.a
root 1646 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/u4:7-flush-259:0]
root 1739 0.8 2.4 733964 22808 ? Sl 04:38 0:00 /usr/bin/ssm-agent-worker
root 1859 0.0 0.0 0 0 ? I 04:38 0:00 [kworker/u4:8-events_unbound]
root 1920 0.4 1.1 41860 10800 ? Ss 04:38 0:00 sshd: ec2-user [priv]
root 1923 0.6 0.7 15260 6568 ? Ss 04:38 0:00 /usr/lib/systemd/systemd-userdbd
root 1924 0.0 0.8 24704 7704 ? S 04:38 0:00 systemd-userwork
root 1925 0.0 0.8 24704 7704 ? S 04:38 0:00 systemd-userwork
root 1926 0.0 0.8 24876 7772 ? S 04:38 0:00 systemd-userwork
ec2-user 1928 1.5 1.3 19844 12960 ? Ss 04:38 0:00 /usr/lib/systemd/systemd --user
ec2-user 1930 0.0 0.6 44816 6476 ? S 04:38 0:00 (sd-pam)
ec2-user 1937 0.1 0.7 42204 6844 ? R 04:38 0:00 sshd: ec2-user@pts/0
ec2-user 1938 0.4 0.5 233060 5052 pts/0 Ss 04:38 0:00 -bash
root 1942 1.0 0.9 16996 8588 ? Ss 04:38 0:00 /usr/lib/systemd/systemd-hostnamed
root 1961 0.5 0.9 260288 8408 pts/0 S 04:38 0:00 sudo su
root 1963 0.0 0.5 245536 4856 pts/0 S 04:38 0:00 su
root 1964 1.0 0.5 233096 5100 pts/0 S 04:38 0:00 bash
root 1981 0.0 0.3 232520 2932 pts/0 R+ 04:38 0:00 ps aux
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| [ec2-user@ip-172-31-35-61 ~]$ sudo systemctl status httpd.service
● httpd.service - The Apache 2.2 HTTP Server
Loaded: loaded (/etc/systemd/system/httpd.service; enabled; preset: disabled)
Active: active (running) since Sun 2023-04-09 04:38:12 JST; 1min 9s ago
Process: 1354 ExecStart=/usr/local/apache2/bin/apachectl -k start (code=exited, status=0/SUCCESS)
Main PID: 1411 (httpd)
Tasks: 6 (limit: 1055)
Memory: 11.8M
CPU: 61ms
CGroup: /system.slice/httpd.service
├─1411 /usr/local/apache2/bin/httpd -k start
├─1494 /usr/local/apache2/bin/httpd -k start
├─1495 /usr/local/apache2/bin/httpd -k start
├─1496 /usr/local/apache2/bin/httpd -k start
├─1497 /usr/local/apache2/bin/httpd -k start
└─1498 /usr/local/apache2/bin/httpd -k start
Apr 09 04:38:11 ip-172-31-35-61.ap-northeast-1.compute.internal systemd[1]: Starting httpd.service - The Apache 2.2 HTTP Server...
Apr 09 04:38:12 ip-172-31-35-61.ap-northeast-1.compute.internal systemd[1]: Started httpd.service - The Apache 2.2 HTTP Server.
[ec2-user@ip-172-31-35-61 ~]$ systemctl status tomcat.service
● tomcat.service - Apache Tomcat 7.0.79
Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; preset: disabled)
Active: active (exited) since Sun 2023-04-09 04:38:12 JST; 1min 15s ago
Process: 1418 ExecStart=/usr/local/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 1418 (code=exited, status=0/SUCCESS)
Tasks: 36 (limit: 1055)
Memory: 91.2M
CPU: 4.693s
CGroup: /system.slice/tomcat.service
└─1448 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize>
Apr 09 04:38:12 ip-172-31-35-61.ap-northeast-1.compute.internal systemd[1]: Starting tomcat.service - Apache Tomcat 7.0.79...
Apr 09 04:38:12 ip-172-31-35-61.ap-northeast-1.compute.internal startup.sh[1418]: Tomcat started.
Apr 09 04:38:12 ip-172-31-35-61.ap-northeast-1.compute.internal systemd[1]: Finished tomcat.service - Apache Tomcat 7.0.79.
[ec2-user@ip-172-31-35-61 ~]$ systemctl status mysql.service
● mysql.service - LSB: start and stop MySQL
Loaded: loaded (/etc/rc.d/init.d/mysql; generated)
Active: active (running) since Sun 2023-04-09 04:38:16 JST; 1min 18s ago
Docs: man:systemd-sysv-generator(8)
Process: 1530 ExecStart=/etc/rc.d/init.d/mysql start (code=exited, status=0/SUCCESS)
Tasks: 17 (limit: 1055)
Memory: 49.9M
CPU: 237ms
CGroup: /system.slice/mysql.service
├─1548 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/ip-172-31-35-61.ap-northeast-1.compute.internal.pid
└─1642 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=ip-172-31-35-61.ap-northeast-1.compute.internal.err --pid-file=>
Apr 09 04:38:14 ip-172-31-35-61.ap-northeast-1.compute.internal systemd[1]: Starting mysql.service - LSB: start and stop MySQL...
Apr 09 04:38:16 ip-172-31-35-61.ap-northeast-1.compute.internal mysql[1530]: Starting MySQL.. SUCCESS!
Apr 09 04:38:16 ip-172-31-35-61.ap-northeast-1.compute.internal systemd[1]: Started mysql.service - LSB: start and stop MySQL.
|
大丈夫そうだ。
アクセス確認もしておく。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| curl localhost
[ec2-user@ip-172-31-35-61 ~]$ curl localhost
<!DOCTYPE html>
<html lang="en">
<head>
<title>Apache Tomcat/7.0.79</title>
<link href="favicon.ico" rel="icon" type="image/x-icon" />
<link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
<link href="tomcat.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="wrapper">
<div id="navigation" class="curved container">
<span id="nav-home"><a href="http://tomcat.apache.org/">Home</a></span>
|
取得できているので起動はしてそうだ。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| mysql
[ec2-user@ip-172-31-35-61 ~]$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.62 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
|
入れるのでOK
今度 mailpit
も自動起動化しよう。
番外編: mailpitの自動起動化
1
| $ sudo vi /etc/systemd/system/mailpit.service
|
Unitファイルの作成
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| [Unit]
Description=mailpit on docker
ConditionPathExists=/home/ec2-user/mailpit
After=docker.service
[Service]
User=ec2-user
Group=ec2-user
Type=oneshot
ExecStart=docker compose -f /home/ec2-user/mailpit/compose.yml up -d
ExecStop=docker compose -f /home/ec2-user/mailpit/compose.yml down
Restart=no
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
|
自動起動の設定
1
2
3
4
| $ sudo systemctl daemon-reload
$ sudo systemctl list-unit-files --type=service | grep mailpit
$ sudo systemctl enable mailpit.service
$ sudo systemctl list-unit-files | grep mailpit.service
|
イケてる・・・!?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| [ec2-user@ip-172-31-35-61 ~]$ sudo systemctl restart mailpit.service
[ec2-user@ip-172-31-35-61 ~]$ sudo systemctl status mailpit.service
● mailpit.service - mailpit on docker
Loaded: loaded (/etc/systemd/system/mailpit.service; enabled; preset: disabled)
Active: active (exited) since Sun 2023-04-09 04:50:50 JST; 5s ago
Process: 3148 ExecStart=docker compose -f /home/ec2-user/mailpit/compose.yml up -d (code=exited, status=0/SUCCESS)
Main PID: 3148 (code=exited, status=0/SUCCESS)
CPU: 100ms
Apr 09 04:50:49 ip-172-31-35-61.ap-northeast-1.compute.internal systemd[1]: Starting mailpit.service - mailpit on docker...
Apr 09 04:50:49 ip-172-31-35-61.ap-northeast-1.compute.internal docker[3159]: Network mailpit_default Creating
Apr 09 04:50:49 ip-172-31-35-61.ap-northeast-1.compute.internal docker[3159]: Network mailpit_default Created
Apr 09 04:50:49 ip-172-31-35-61.ap-northeast-1.compute.internal docker[3159]: Container mailpit-mailpit-1 Creating
Apr 09 04:50:49 ip-172-31-35-61.ap-northeast-1.compute.internal docker[3159]: Container mailpit-mailpit-1 Created
Apr 09 04:50:49 ip-172-31-35-61.ap-northeast-1.compute.internal docker[3159]: Container mailpit-mailpit-1 Starting
Apr 09 04:50:50 ip-172-31-35-61.ap-northeast-1.compute.internal docker[3159]: Container mailpit-mailpit-1 Started
Apr 09 04:50:50 ip-172-31-35-61.ap-northeast-1.compute.internal systemd[1]: Finished mailpit.service - mailpit on docker.
|
再起動して確認してみる。
ちゃんと起動している・・・!
1
2
3
| [ec2-user@ip-172-31-35-61 ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0c0003c80d2d axllent/mailpit:v1.4.0 "/mailpit" About a minute ago Up 59 seconds 0.0.0.0:8025->8025/tcp, :::8025->8025/tcp, 0.0.0.0:25->1025/tcp, :::25->1025/tcp mailpit-mailpit-1
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| [ec2-user@ip-172-31-35-61 ~]$ curl localhost:8025
<!DOCTYPE html>
<html lang="en" class="h-100">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<meta name="referrer" content="no-referrer">
<meta name="robots" content="noindex, nofollow, noarchive">
<link rel="icon" href="favicon.svg">
<title>Mailpit</title>
<link rel=stylesheet href="dist/app.css">
</head>
<body class="h-100">
<div class="container-fluid h-100 d-flex flex-column" id="app">
<noscript>You require JavaScript to use this app.</noscript>
</div>
<script src="dist/app.js"></script>
</body>
</html>
|
すばらっ!
参考
おわりに
ソースから全部インストールするのは久々の作業だったのでかなり時間がかかった。
ただやはり勉強にはなるなあ。
パッケージ管理ツールに頼り切りなので、このあたり力になることはやっていきたい。