はじめてのWebサーバ構築
1. 前提条件
済ませておくこと
- さくらのVPS [サーバ申込を済ませておく]
- お名前.com [ドメイン申込を済ませておく]
※さくらVPSサーバのグローバルIPが分かり次第Aレコードの設定を済ませておく] - Tera Term 5 [インストールを済ませておく]
このページで設定するもの
- centOS Stream 9
- javaEE 11
- tomcat 9.0.88
2. VPSサーバの設定
※追記
パケットフィルター設定では、「フィルターの種類」にWeb(TCP 80, 443)を「すべて許可する」で追加してください。
3. Tera Termより、初期ユーザcentosでログイン
※パスフレーズはさくらのVPSで設定した「管理ユーザーのパスワード」です。
[sentos@hostname ~]# sudo -s #rootに変更
[root@hostname ~]# useradd somebody #一般ユーザsombody(例)の作成
[root@hostname ~]# passwd somebody #sombodyユーザーのパスワード設定
[root@hostname ~]# cat /etc/passwd #ユーザ一覧の確認
[root@hostname ~]# usermod -G wheel somebody #管理者ユーザをwheelグループに追加
※なお、Tera Termではコピペが可能です。ペーストはTera Term上で右クリックしてください。
このあと、一度exitコマンドで接続を切断し、作成したユーザー名で入り直します。その後、デフォルトで作成したcentosユーザを削除します。
[somebody@hostname ~]# sudo -s
[root@hostname ~]# userdel centos
・ここではssh接続についての説明を省略しています
・管理者の制限は別で行ってください。
4. Apacheのインストール
この設定は以下ページを参照。
Apache httpd : インストール
dnf -y install httpd
ウェルカムページの名前を変更
mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.org
httpdの設定
vi /etc/httpd/conf/httpd.conf
httpdの設定は以下の通り
# 91行目 : 管理者アドレス指定
ServerAdmin root@(ドメイン名)
# 100行目 : コメント解除しサーバー名指定
ServerName (ドメイン名):80
# 149行目 : 変更 (Indexes は削除)
Options FollowSymLinks
# 156行目 : 変更
AllowOverride All
# 169行目 : 必要に応じて追記 (ディレクトリ名のみでアクセスできるファイル名)
DirectoryIndex index.html index.php index.cgi index.jsp
# 最終行に追記
# サーバーの応答ヘッダ
ServerTokens Prod
5. JAVA JDKのインストール
以下、設定はこちらのページを参考に実行しました。
なお、Tomcatのバージョンを10から9に変更しています。
How to Install Apache Tomcat Server on CentOS Stream 9 Tutorial(英文)
dnf install java-11-openjdk-devel -y
6. javaがインストールできているか、バージョン確認
java --version
このような表示を確認できるはず(上のページより抜粋)
openjdk 11.0.15 2022-04-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.15+9-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.15+9-LTS, mixed mode, sharing)
7. Tomcatのインストール
まず、tomcatユーザを作成します。セキュリティ目的です。
useradd -m -U -d /opt/tomcat -s /bin/false tomcat
tomcat9の最終バージョンの確認
Apache Tomcat
※2024.5.7現在ではver9.0.88が最新のようです。ver10も存在しますがecripsの開発環境と揃える目的でver9を選択します。
wgetコマンドのインストール
インストール済みでないことを確認してインストールします。
yum list installed | grep wget #ここで何も表示されないことを確認
yum -y install wget
tomcatのインストール
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.88/bin/apache-tomcat-9.0.88.tar.gz
成功すると、以下のような表示を確認できます。
※上のページより抜粋なので、ver10になっています
--2022-05-19 15:51:50-- https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.21/bin/apache-tomcat-10.0.21.tar.gz
Resolving dlcdn.apache.org (dlcdn.apache.org)... 151.101.2.132, 2a04:4e42::644
Connecting to dlcdn.apache.org (dlcdn.apache.org)|151.101.2.132|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11928158 (11M) [application/x-gzip]
Saving to: ‘apache-tomcat-10.0.21.tar.gz’
apache-tomcat-10.0.21.tar.gz 100%[=================================================================>] 11.38M 64.9MB/s in 0.2s
2022-05-19 15:51:50 (64.9 MB/s) - ‘apache-tomcat-10.0.21.tar.gz’ saved [11928158/11928158]
tarコマンドのインストール
yum list installed | grep tar #ここでtarだけのインストールを確認できないならインストールする
yum -y install tar
ダウンロードしたファイルをひとまとめにする
tar -xvzf apache-tomcat-9.0.88.tar.gz -C /opt/tomcat/
tomcatが保存されたディレクトリに行き、名前をシンプルなものに変更する
cd /opt/tomcat
mv apache-tomcat-9.0.88 tomcat9
tomcatディレクトリの所属を変更する
chown -R tomcat:tomcat /opt/tomcat
8. Serviceファイルを作成する
viコマンドでserviceファイルを作成する
vi /etc/systemd/system/tomcat.service
中身は以下の通り
[Unit]
Description=Apache Tomcat 9 Servlet container
Wants=network.target
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat/tomcat9"
Environment="CATALINA_HOME=/opt/tomcat/tomcat9"
Environment="CATALINA_PID=/opt/tomcat/tomcat9/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/tomcat9/bin/startup.sh
ExecStop=/opt/tomcat/tomcat9/bin/shutdown.sh
Restart=always
[Install]
WantedBy=multi-user.target
viの書き込みから保存、編集終了までは以下の通り。
i :書き込みモード開始
Esc :書き込みモード終了
:w :保存
:q :編集の終了
編集したServiceファイルを機能させるためdaemonを再起動します。
systemctl daemon-reload
Tomcatがシステム再起動の度に自動的に起動するよう設定します。
systemctl enable tomcat --now
Tomcatが稼働しているか、以下のコマンドで確認します。
systemctl status tomcat
成功すると、以下のような表示を確認できます。
※上のページより抜粋なので、ver10になっています
● tomcat.service - Apache Tomcat 10 Servlet container
Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2022-05-19 15:53:18 UTC; 6s ago
Process: 1945 ExecStart=/opt/tomcat/tomcat10/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 1952 (java)
Tasks: 29 (limit: 23696)
Memory: 156.6M
CGroup: /system.slice/tomcat.service
└─1952 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/tomcat10/conf/logging.properties -Djava.util.logging.>
May 19 15:53:18 centos systemd[1]: Starting Apache Tomcat 10 Servlet container...
May 19 15:53:18 centos systemd[1]: Started Apache Tomcat 10 Servlet container.
9. リモートログインを使用できるようにする
Tomcatを使用するためのユーザー(manager, admin)を追加する
vi /opt/tomcat/tomcat9/conf/tomcat-users.xml
当ファイルの一番下の上に以下を挿入、保存して終了する。
<role rolename="manager-gui"/>
<user username="manager" password="managerpassword" roles="manager-gui" />
<role rolename="admin-gui"/>
<user username="admin" password="adminpassword" roles="admin-gui"/>
現状ではローカルホストしかアクセスできないため、xmlファイルを編集します。
vi /opt/tomcat/tomcat9/webapps/manager/META-INF/context.xml
ファイル中段(21行目あたり)に、以下の表示があります。
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
これを、コメントアウト(<!-- -->で囲む)をします。
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
tomcatを再起動します。
systemctl restart tomcat
10. Nginx(エンジンエックス)の設定を行う
※nginxとは、Webサーバの一つです。2024年2月の記事ではApacheに置き換わる存在のようです。
参考:
NGINXとはどんなソフトウェア?Apacheとは何が違うのか
Nginxをインストールする
dnf install nginx -y
Nginxを起動、システム再起動の度に自動的に起動するよう設定します。
systemctl start nginx
systemctl enable nginx
Tomcat用のNginx Virtual Hostを作成します。
vi /etc/nginx/conf.d/tomcat.conf
tomcat.confの中身は以下の通りです。
server {
listen 80;
server_name tomcat.example.com; #自身のドメイン名を入力
access_log /var/log/nginx/tomcat.access.log;
error_log /var/log/nginx/tomcat.error.log;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
以下のコマンドで構文エラーを見つけてくれます。
nginx -t
成功していれば、以下のようなコメントを見ることが出来ます。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Nginxを再起動します。
systemctl restart nginx
Nginxの状態を確認します。
systemctl status nginx
成功すると、以下のような表示を確認できます。
※上のページより抜粋です。
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2022-05-19 15:55:42 UTC; 13s ago
Process: 4657 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 4654 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 4652 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Main PID: 4658 (nginx)
Tasks: 3 (limit: 23696)
Memory: 5.0M
CGroup: /system.slice/nginx.service
├─4658 nginx: master process /usr/sbin/nginx
├─4659 nginx: worker process
└─4660 nginx: worker process
May 19 15:55:42 centos systemd[1]: nginx.service: Succeeded.
May 19 15:55:42 centos systemd[1]: Stopped The nginx HTTP and reverse proxy server.
May 19 15:55:42 centos systemd[1]: Starting The nginx HTTP and reverse proxy server...
May 19 15:55:42 centos nginx[4654]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
May 19 15:55:42 centos nginx[4654]: nginx: configuration file /etc/nginx/nginx.conf test is successful
May 19 15:55:42 centos systemd[1]: Started The nginx HTTP and reverse proxy server.
11. ファイアーウォールの設定
ファイアーウォールをを起動、システム再起動の度に自動的に起動するよう設定します。
systemctl start firewalld.service
systemctl enable firewalld.service
ファイアーウォールを設定します。
firewall-cmd --runtime-to-permanent
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
ファイアーウォールを再起動します。
firewall-cmd --reload
12.確認
tomcatのテストページが表示されることを確認してください。
また、ページ右側の[Manager App]や[Host Manager]に、上で作成したユーザ
user username="manager" password="managerpassword"
user username="admin" password="adminpassword"
でログインできるかどうかを確認してください。
13.アプリケーションをデプロイする
アプリケーションは、特定のディレクトリにwarファイルを設置することで稼働させることが出来ます。
warファイルを準備してください。
・ここではwarファイルの生成は割愛します。Ecripsから生成することが可能です。
作成したwarファイルをTera Term上にドラッグ&ドロップしてください。
ユーザ(rootでない)のルートフォルダに転送できます。
作成したユーザのルートディレクトリに移動し、warファイルが存在することを確認してください。
warファイルをtomcatが保存されているディレクトリ内の、webappsディレクトリに移動させます。
mv (準備したファイル名).war /opt/tomcat/tomcat9/webapps
最後に、webアプリが表示されたことを確認します。
ブラウザを用いて、以下にアクセスしてください。
http://(サーバ名).(ドメイン名)/(アプリケーション名)/(最初に表示するファイル名)
※(最初に表示するファイル名)をindex.jspにしておけば(アプリケーション名)までの表示でOKです。
13.おわりに
これが初めての投稿です。
誰かのお役に立ちますように。