在AWS上搭建WEB3层结构③(搭建和协调WEB服务器和应用程序服务器)

我挑战了在AWS上构建WEB3层架构。

以下是上一篇文章的续篇。

    • AWSでWEB3層構造の構築①(WEB3層構造の基礎)

 

    AWSでWEB3層構造の構築②(VPC、サブネット、NW設定、インスタンス起動、SSH接続)

我想要的环境如下图所示。

スクリーンショット 2023-01-24 20.25.33.png

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的测试页面。

スクリーンショット 2023-01-24 23.59.01.png

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

スクリーンショット 2023-01-25 11.02.01.png

现在,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的测试页面,表示协作已完成。

スクリーンショット 2023-01-25 12.50.55.png

如果未显示,则可能是未打开 WEB 服务器的 8080 端口。请像 Squid 一样将 8080 端口添加到 WEB 服务器的安全组中。

スクリーンショット 2023-01-16 16.28.04.png

在这里,WEB服务器和AP服务器的构建和协调工作已经完成。
接下来将建立数据库服务器,并与AP服务器协同工作。

    AWSでWEB3層構造の構築④(DBサーバの構築とAPサーバとの連携)

只需要一个选项:

请提供以下中文原生的转述:参考

 

广告
将在 10 秒后关闭
bannerAds