はじめに
Apache 2.2 + Java 7 + MySQL 5.5 + Tomcat7の環境で検証をする必要があったので、
これらをソースからインストールする方法を記載する。
当然、どれもEOLのためセキュリティ的に脆弱な部分があることに留意する。
これらは全て検証で使用するため、公開サーバとすることはない。
例によってAWS EC2で構築する。
環境
Apache 2.2.34
OpenSSL 1.0.2k
Tomcat 7.0.79
MySQL 5.5.62
Java 7 (jdk7u80)
EC2の構築
まずは、インストール元となるインスタンスを構築する。
※ x86
アーキテクチャではなく arm
アーキテクチャでは対応するビルドができない可能性があるため、今回は x86
アーキテクチャのインスタンスで実施する。
EC2の設定
下記のような設定で構築する。
OS: AmazonLinux2023
インスタンスタイプ: t3.micro
セキュリティグループ: 22, 80, 443, 8080を自分のIPのみ開放
ストレージ: gp3 8GB
※以前の記事でも記載したが、RLoginで接続する際に 鍵方式が SHA1
だとエラーが出る。
その場合は、SHA2-256
, SHA2-512
のいずれかの方式に変更して接続すること。
ミドルウェアのインストール
接続が完了したら早速インストールの作業を始める。
全てEOLになっているため、通常のパッケージマネージャーから入れられない。
そのため、アーカイブされたソースからインストールする方法をとる。
make gccのインストール
sudo dnf install make gcc
↓この辺が入る。
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インストール
ソースビルドに下記のパッケージが必要になるため事前に入れておく。
sudo dnf install perl zlib-devel
$ 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
....
make[1]: Leaving directory '/usr/local/src/openssl-1.0.2k/test'
Configured for linux-x86_64.
インストール作業を実施する。
# makeの実施
$ sudo make depend
$ sudo make
$ sudo make test
# インストール
$ sudo make install
↓こんな感じで終了しているはず。
...
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を適用させる。
# 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
シンボリックリンクの変更
[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
コマンドで確認し、修正を行う。
[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
のモジュールについては、ほぼ全部入れているが適宜オプションを変更すること。
$ 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
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
インストール
$ sudo make
$ sudo make install
↓下記のようになっていればOK
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'
確認する
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
ユーザを追加し権限を変更する。
$ sudo useradd -s /sbin/nologin apache
$ sudo usermod -G apache apache
$ sudo chown -R apache:apache /usr/local/apache2
起動ユーザを deamon
→ apache
に変更する。
$ sudo vi /usr/local/apache2/conf/httpd.conf
-User daemon
-Group daemon
+User apache
+Group apache
Apacheサービスの登録/自動起動設定
$ sudo vi /etc/systemd/system/httpd.service
下記のように記載して保存する。
[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
# サービスの自動起動を有効にする
$ sudo systemctl enable httpd.service
# 確認
$ sudo systemctl list-unit-files | grep httpd.service
こんな感じになる
[ec2-user@ip-172-31-35-61 apache2]$ sudo systemctl list-unit-files | grep httpd.service
httpd.service enabled disabled
実際に起動する。
# 起動
$ 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.
いけてる!
プロセスを確認
[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のシンボリックリンクを作成する。
$ cd /usr/local/bin
$ sudo ln -s /usr/local/apache2/bin/httpd httpd
$ sudo ln -s /usr/local/apache2/bin/apachectl apachectl
おまけ: ビルドオプションを忘れた場合に確認する方法
$ cd /usr/local/apache2/build
$ less config.nice
config.nice
にビルド時のオプションが記載されている。
It Works
が出てるのでOK
SSL証明書の作成
適当なSSL証明書を作成しておく。
$ 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
のディレクトリに入れておく。
$ cd ~
$ sudo mkdir -p /usr/local/apache2/ssl
$ sudo cp server* /usr/local/apache2/ssl
ssl.conf
の修正
$ cd /usr/local/apache2/conf/extra/
# バックアップを取って差分を取れるようにしておく。
$ sudo cp httpd-ssl.conf httpd-ssl.conf.bk
$ sudo vi httpd-ssl.conf
[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 you@example.com
+#ServerName www.example.com:443
+#ServerAdmin you@example.com
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
の修正
cd /usr/local/apache2/conf/
# バックアップを取って差分を取れるようにしておく。
sudo cp httpd.conf httpd.conf.bk
sudo vi httpd.conf
--- 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
接続ができるようになっているはずなので確認してみる。
$ sudo systemctl restart httpd.service
$ sudo systemctl status httpd.service
(active runningになっていればOK)
証明書は自己証明書なので警告が出ているが、https
でアクセスはできている。
これで Apache
のインストールは完了
Javaのインストール
Tomcatを入れる前に、Javaを入れておく必要がある。
Java8をパッケージから入れる
$ sudo dnf install java-1.8.0-amazon-corretto-devel
[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
に入れ、解凍する。
$ cd /usr/local/src
$ sudo mv /home/ec2-user/jdk-7u80-linux-x64.tar.gz .
$ sudo tar xzvf jdk-7u80-linux-x64.tar.gz
- バージョンを確認しておく。
[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
で入れる。
$ 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
の向き先を変える。
$ 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
の向き先を先程インストールししたディレクトリにする。
- 変更されたかの確認
[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/
$ 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のバージョンも確認しておく。
[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
の修正
$ cd /usr/local/apache2/conf
$ sudo cp httpd.conf httpd.conf.bk2
$ sudo vi httpd.conf
[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
の修正 (これは不要)
$ cd /usr/local/tomcat/conf
$ sudo cp server.xml server.xml.bk
$ sudo vi server.xml
server.xml
を少し修正
[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
どちらも再起動する。
$ sudo systemctl restart httpd.service
$ sudo /usr/local/tomcat/bin/shutdown.sh
$ sudo /usr/local/tomcat/bin/startup.sh
Tomcatの自動起動の設定
ユニットファイルの作成
sudo vi /etc/systemd/system/tomcat.service
[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
を指定しておく。
$ 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を停止し下記を実施する。
$ sudo chown -R tomcat: logs/
これで下記のようにリスタートができるようになる。
$ 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 でまずローカルに落としてから作業した。
$ 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
インストール確認
[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の自動起動設定
sudo systemctl enable 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: 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
に入れるか確認
[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>
後始末
$ cd ~
$ rm -fr work
my.cnf
をカスタマイズする
$ sudo vi /etc/my.cnf.d/my.cnf
[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
再起動
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への修正
$ sudo timedatectl set-timezone Asia/Tokyo
確認
$ 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
を入れる。
$ sudo dnf install rsyslog
cronのインストール
$ sudo dnf install cronie-noanacron
サービス起動 & 自動起動設定
$ sudo systemctl start crond
$ sudo systemctl enable crond
オプション: Fake SMTPの導入
mailpit
という 開発用のSMTPのダミーサーバがある。
これを使用することで、アプリケーションのメール送信を確認することができる。
Dockerのインストール
$ sudo dnf install docker
サービス起動 & 自動起動設定
$ sudo systemctl enable docker
$ sudo systemctl start docker
[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のインストール
$ 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
[ec2-user@ip-172-31-35-61 ~]$ docker compose version
Docker Compose version v2.4.1
ec2-userでDocker起動できるようにする
$ sudo usermod -a -G docker ec2-user
$ sudo chgrp docker /var/run/docker.sock
一度 ec2-user
からログアウトしてログインし直す。
[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の導入
$ cd ~
$ mkdir -p mailpit && cd $_
$ vi compose.yml
compose.yml
は下記のように記載する。
services:
mailpit:
image: axllent/mailpit:v1.4.0
ports:
- 8025:8025
- 25:1025
ホストのポート25をコンテナのポート1025に繋げる形にする。
docker compose up -d
[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
を開ける必要があるので開けて確認をする。
最終的に下記のようなセキュリティグループの設定になっている。
メール送信をテストする
sendmailを入れる。
$ sudo dnf install sendmail
下記をサーバで実行する。
sendmail -t <<EOL
From: foo@example.com
To: bar@example.com
Subject: test
testmail1
testmail2
EOL
確認: 再起動後にApache, Tomcat, MySQLが起動しているか
EC2でインスタンスの再起動 or reboot
コマンドを実行する。
ps aux
↓
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
[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.
大丈夫そうだ。
アクセス確認もしておく。
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>
取得できているので起動はしてそうだ。
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の自動起動化
$ sudo vi /etc/systemd/system/mailpit.service
Unitファイルの作成
[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
自動起動の設定
$ 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
イケてる・・・!?
[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.
再起動して確認してみる。
ちゃんと起動している・・・!
[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
[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>
すばらっ!
参考
- CentOS 7.6 にソースコードから OpenSSL 1.1.1c をインストールする
https://sig9.org/archives/2404 - Apache2.2のインストール
https://httpd.apache.org/docs/2.2/install.html - Apacheのインストール
http://unixservermemo.web.fc2.com/sv/apache-install.htm - proxyやsslのモジュールを使ってみる
https://atmarkit.itmedia.co.jp/ait/articles/1107/29/news121.html - OpenSSLをビルドしてApacheで利用する
https://atmarkit.itmedia.co.jp/ait/articles/1108/05/news122.html - 【CentOS7】httpd 2.2 (Apache)をコンパイルからインストールする手順
https://go-journey.club/archives/7659 - Ubuntuで、複数のJavaをインストールして切替を行う
https://qiita.com/yochapan/items/af86a320035f8db7daf4 - CentOS7にMySQL5.6インストール(バージョン指定してインストールしたい場合)
https://qiita.com/miqpim/items/5c519a9979d9b269d47e - Java と Apache Tomcat のインストール (RHEL)
https://support.ptc.com/help/thingworx_hc/thingworx_8_hc/ja/index.html#page/ThingWorx/Help/Installation/Installation/install_java_and_apache_tomcat__rhel_postgresql.html - Linuxサーバー(CentOS6)にTomcatをインストールする手順
https://rainbow-engine.com/linux-tomcat-install/ - systemd 環境下で条件に従ったサービス起動制御の一例
https://inokara.hateblo.jp/entry/2020/04/12/180833 - Systemd入門(4) - serviceタイプUnitの設定ファイル
https://enakai00.hatenablog.com/entry/20130917/1379374797 - systemdを用いたプログラムの自動起動
https://qiita.com/tkato/items/6a227e7c2c2bde19521c - Linuxでsendmailを使う
https://www.junk-works.science/sendmail-on-linux/ - テストメールの送信方法
https://qiita.com/nkojima/items/a85801b8ee57c85c04c3
おわりに
ソースから全部インストールするのは久々の作業だったのでかなり時間がかかった。
ただやはり勉強にはなるなあ。
パッケージ管理ツールに頼り切りなので、このあたり力になることはやっていきたい。