在AWS上搭建WEB3层结构③(搭建和协调WEB服务器和应用程序服务器)
我挑战了在AWS上构建WEB3层架构。
以下是上一篇文章的续篇。
-
- AWSでWEB3層構造の構築①(WEB3層構造の基礎)
- AWSでWEB3層構造の構築②(VPC、サブネット、NW設定、インスタンス起動、SSH接続)
我想要的环境如下图所示。
1. 建设WEB服务器
1-(1). 安装 Nginx
从本地主机通过SSH连接到WEB服务器,并开始构建WEB服务器。
首先要安装Nginx,但不使用通常使用的yum命令,而是使用amazon-linux-extras命令进行安装。
$ amazon-linux-extras list | grep nginx
38 nginx1 available [ =stable ]
インストール可能なパッケージを取得しました。
nginx1という名前で登録されているのでこれをインストールします。
$ sudo amazon-linux-extras install nginx1
Is this ok [y/d/N]: と表示されたら、y を入力するとインストール完了です。
$ sudo nginx -v
nginx version: nginx/1.22.1
バージョンを確認しました。
$ sudo systemctl enable nginx
WEBサーバへログインした際の、Nginx自動起動を有効化します。
$ sudo systemctl start nginx
Nginx起動
$ sudo systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since 火 2023-01-24 14:53:45 UTC; 8s ago
(以下略)
我确认了状态并显示为active(running),因此Nginx已经启动。我在网络浏览器中输入了“http://WEB服务器的公共地址”,并确认显示了Nginx的测试页面。
1-(2). 安装Squid
我想在AP服务器和DB服务器上安装所需的软件包,但由于它们位于私有子网下,无法连接到互联网,因此想使用yum命令或wget命令。
在WEB服务器上,按照以下步骤安装一个名为Squid的软件,并将其配置为代理服务器。
* “代理服务器”意味着使用WEB服务器来访问互联网,而不是使用客户端的AP服务器和DB服务器。
$ sudo yum -y install squid
$ squid -v
Squid Cache: Version 3.5.20
バージョンを確認しました。
$ sudo vi /etc/squid/squid.conf
squidの設定ファイルの一番下に以下の設定値を追加します。
http_access allow all
可以通过设置“http_access allow all”来允许所有通信。
*本来应该仅允许与安全通信伙伴之间的通信,但由于我对此不够了解,下次将在意识到安全性的基础上进行搭建。
接下来,我们将进行Squid的启动设置。
$ sudo systemctl enable squid
$ sudo systemctl restart squid
Squidの自動起動設定を行い、リスタートします。
$ sudo lsof -i:3128
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
squid 4128 squid 11u IPv6 88842 0t0 TCP *:squid (LISTEN)
Squidがデフォルトのポート3128を使用していることを確認しました。
然后登录客户端的AP服务器和DB服务器,进行设置。
在AP服务器和DB服务器的配置文件(/etc/yum.conf)中填写代理设置,并使其能够使用yum命令和wget命令。
まずはyumコマンドの設定から
$ sudo vi /etc/yum.conf
以下を追記
proxy=http://<WEBサーバのプライベートIPアドレス>:3128
続いてwgetコマンドの設定
$ sudo vi /etc/wgetrc
http_proxy=http://<WEBサーバのプライベートIPアドレス>:3128
https_proxy=http://<WEBサーバのプライベートIPアドレス>:3128
请在设置文件中指定WEB服务器的地址为私有IP地址,而不是公共IP地址。这是因为当EC2在同一个VPC内进行通信时,它们使用私有IP地址。
接下来,我们将进行AWS实例的操作。
按照以下方式,我们将在WEB服务器的安全组中添加Squid的默认端口3128。
从左侧选取安全组
选取已设定给Web服务器的安全组
编辑入站规则
添加Squid的默认端口3128
现在,AP服务器和DB服务器都可以使用yum命令和wget命令了。
2. 搭建AP服务器。
从本地主机连接到AP服务器,然后开始构建AP服务器。
在安装Tomcat之前,我们需要创建Tomcat运行所依赖的环境。
由于Tomcat是用Java编写的,因此需要具备执行环境,即OpenJDK (Java SE Development Kit)。
由于OpenJDK与Tomcat兼容,因此请在以下URL中考虑安装Tomcat和OpenJDK的兼容性。
まずはインストール可能なjavaを検索します。
$ sudo yum info java-*-openjdk
$ sudo yum -y install java-1.8.0-openjdk.x86_64
Complete!
$ java -version
openjdk version "1.8.0_342"
OpenJDK Runtime Environment (build 1.8.0_342-b07)
OpenJDK 64-Bit Server VM (build 25.342-b07, mixed mode)
我们将添加一个名为tomcat的专用用户来运行Tomcat。
$ sudo useradd -s /sbin/nologin tomcat
$ cat /etc/passwd | grep tomcat
tomcat:x:1001:1001::/home/tomcat:/sbin/nologin
ユーザができていることを確認
请从以下网址中选择要安装的Tomcat页面,然后通过右键单击, 复制Core的“tar.gz”文件的地址,并进行安装。
$ sudo wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.71/bin/apache-tomcat-9.0.71.tar.gz
$ sudo tar -zxvf apache-tomcat-9.0.71.tar.gz
ファイルを解凍します
$ sudo mv apache-tomcat-9.0.71 /opt
#追加アプリケーションを置くためのディレクトリ「/opt」にファイルを移動。
$ sudo chown -R tomcat:tomcat /opt/apache-tomcat-9.0.71
ユーザーtomcatがTomcatを起動できるように、所有者を変更
$ sudo ln -s /opt/apache-tomcat-9.0.71 /opt/tomcat
在Tomcat升级时,只需修复符号链接而无需修改相关文件,通过添加符号链接可以实现这一点。
接下来,我们将使用systemctl命令来启动和停止Tomcat,并进行注册。请创建一个名为/etc/systemd/system/tomcat.service的新单元文件,然后按照以下方式进行描述和保存。
$ sudo vi /etc/systemd/system/tomcat.service
※以下記載
[Unit]
Description=Apache Tomcat 9
After=syslog.target network.target
[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/opt/tomcat/tomcat.pid
RemainAfterExit=yes
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
$ sudo chmod 755 /etc/systemd/system/tomcat.service
作成したサービス起動ファイルファイルの権限を 755 に変更し実行権限を付与します。
$ sudo systemctl enable tomcat
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /etc/systemd/system/tomcat.service.
$ sudo systemctl list-unit-files -t service | grep tomcat
tomcat.service enabled
上述的系统设置已经完成,我将尝试启动Tomcat。
$ sudo systemctl start tomcat
$ sudo systemctl status tomcat
● tomcat.service - Apache Tomcat 9
Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
Active: active (exited) since 木 2023-01-19 11:29:59 UTC; 9s ago
(以下略)
由于状态处于活动状态,启动成功。
3. Nginx和Tomcat之间的协作。
创建Nginx配置文件/etc/nginx/,并将Web服务器和AP服务器进行协作。具体而言,我们将编写将来自Web浏览器对80端口的访问转发至8080端口的代理设置。
$ sudo vi /etc/nginx/conf.d/server.conf
新しくserver.confというファイルを作成し、以下の中身を記述します。
server{
location / {
proxy_pass http://APサーバのプライベートIPアドレス:8080/;
}
}
接下来,我们将编辑Nginx的配置文件/etc/nginx/nginx.conf。
$ sudo vi /etc/nginx/nginx.conf
~~~前略~~~
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
# 下の3行を追記
location / {
proxy_pass http://WEBサーバのパブリックIPアドレス:8080/;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
~~~後略~~~
当设置完成后,重新启动nginx。
$ sudo systemctl restart nginx
如果您可以连接到「http://WEB服务器的公共IP地址」并成功显示Tomcat的测试页面,表示协作已完成。
如果未显示,则可能是未打开 WEB 服务器的 8080 端口。请像 Squid 一样将 8080 端口添加到 WEB 服务器的安全组中。
在这里,WEB服务器和AP服务器的构建和协调工作已经完成。
接下来将建立数据库服务器,并与AP服务器协同工作。
- AWSでWEB3層構造の構築④(DBサーバの構築とAPサーバとの連携)
只需要一个选项:
请提供以下中文原生的转述:参考