【在AWS EC2上创建LAMP Stack服务器的步骤】脱离租用服务器

首先

這篇文章整理了基於EC2的LAMP Stack伺服器建立步驟。

    • EC2でサーバ構築の方法がわからない

 

    • 具体的な手順がわからない

 

    レンタルサーバしか使ったことがない

对于那些方面,如果能对您稍有帮助,我会很高兴。
※关于基础设施建设,我们只是在业余时间进行,可能会有步骤上的疏漏,如果有人发现了,请提出指正,谢谢!

亚马逊云服务的设置方式是什么?

本文将介绍以下服务。我们将为每个服务详细解释其搭建和设置步骤。

    • AWS EC2

 

    • AWS Certificate Manager

 

    • AWS ALB

 

    AWS WAF

关于服务器软件

由于从头开始安装服务器软件实在太麻烦了,所以我们会使用在AWS市场上公开的Bitnami制作的映像。

LAMP软件堆栈(使用Bitnami认证的PHP 7.1的LAMP堆栈)安装了以下软件。

经Bitnami认证的具有PHP 7.1版本的LAMP一键安装包。
预先安装和配置的组件包括FastCGI、OpenSSL、phpMyAdmin、ModSecurity、SQLite、Varnish(TM)、ImageMagick、xDebug、Xcache、OpenLDAP、ModSecurity、Memcache、OAuth、PEAR、PECL、APC、GD、cURL等等。
可以直接使用预先安装的PHP框架,包括Zend、Symfony、CodeIgniter、CakePHP、Smarty和Laravel。

大致的步骤

    1. EC2安装

 

    1. 配置弹性IP

 

    1. 设置域名(AWS Route53)

 

    1. 创建AWS证书管理器(SSL证书)

 

    1. 配置负载均衡器(ALB)

 

    设置WAF

EC2配置

ec2-004.png
# キーペアの権限を変更
chmod 400 xxxxxxxx.pem

# SSH接続
ssh -i "xxxxxxxx.pem" ubuntu@ec2-xxxxxxxx.xxxxxx.xxxxxx.com

The authenticity of host 'ec2-xxxxxxxx.xxxxxx.xxxxxx.com (xx.xxx.xxx.xxx)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxx/xxxxxxx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-xxxxxxxx.xxxxxx.xxxxxx.com' (ECDSA) to the list of known hosts.
Welcome to Ubuntu xx.xx.x LTS (GNU/Linux xxxx-aws x86_64)
*** System restart required ***
       ___ _ _                   _
      | _ |_) |_ _ _  __ _ _ __ (_)
      | _ \ |  _| ' \/ _` | '  \| |
      |___/_|\__|_|_|\__,_|_|_|_|_|

  *** Welcome to the Bitnami LAMP 7.x.xx ***
  *** Documentation:  https://docs.bitnami.com/aws/infrastructure/lamp/ ***
  ***                 https://docs.bitnami.com/aws/ ***
  *** Bitnami Forums: https://community.bitnami.com/ ***
bitnami@ip-xxxxxxxx:~$

关于安全组

ec2-005.png

弹性公网 IP 的配置

EC2 在初始状态下是一个公共 IP,但当您重新启动实例时,IP 会发生变化。为了保持与域名的关联,您需要指定一个静态 IP。

    1. 选择EC2菜单中的弹性IP。

选择分配新地址。

选择IPv4地址池 > 选择Amazon池然后点击下一步(有些区域可能只会显示”Scope VPC”)。

在地址关联中,选择资源 > 实例,并指定EC2实例的ID(创建的实例将在下拉菜单中显示),完成设置后点击关联按钮。

创建完成后,在说明栏中显示的弹性IP可以用于浏览器访问,以检查IP是否有效。

请用中文进行原生释义。

将Elastic IP(固定全球 IP 地址)分配给AWS EC2实例。

创建用于作业的用户

创建新用户

创建一个新用户,可以使用SSH/SFTP进行连接。在此阶段,不会限制连接仅使用SFTP。

# 特権ユーザに切り替え
sudo su

# ユーザ作成
sudo useradd -m {作成user名}
sudo passwd {作成user名}

# .sshフォルダ作成
sudo su - {作成user名} #ユーザ切り替え
mkdir .ssh # 秘密鍵・公開鍵の作成(id_rsa, id_rsa.pub)

# 公開鍵・秘密鍵の作成
cd .ssh
ssh-keygen -t rsa #チュートリアルに従って作成

# 秘密鍵・公開鍵設定
mv id_rsa.pub authorized_keys # 公開鍵をauthorized_keysにリネーム
chmod 600 authorized_keys # パーミッション変更
cat id_rsa # 秘密鍵のテキストが表示されるので、コピペしてxxxx.pemとして保存

请使用 xxx.pem 文件确认能否通过 ssh、sftp 进行登录。

# サーバログイン
chmod 400 xxx.pem
ssh -i "xxx.pem" {作成user名}@ecX-XX-XX-XX-XX.xxxxxxx.compute.amazonaws.com

用户权限变更

在这种状态下,即使访问文档根目录,除了用户目录中之外,无法对任何内容进行编辑。为了给工作用户提供写入权限,通过以下步骤将文档根目录设置为协作编辑目录。

id bitnami #所属するグループ等を確認

# ログイン後に特権ユーザに切り替え
sudo su

# htdocsの共同編集用グループを作成
groupadd {グループ名}

# htdocsディレクトリの管理グループを変更
chgrp {グループ名} /home/bitnami/htdocs/

# Permissionを設定
chmod 775 /home/bitnami/htdocs/

# ユーザをグループに追加
gpasswd -a {追加したいユーザ名} {グループ名}

#  SGID(Set Group ID)を設定する
chmod g+s /home/bitnami/htdocs/

# 新規ファイル・ディレクトリ作成時のアクセス権の設定
# ※通常値は0022。それを0002(グループなら書き込み、読み込みが出来るファイルを標準で作成)にする
# ユーザログイン後、umask 0022 でも対応可能だが、ログイン後に設定がリセットされるため、.bashrcに記述する
sudo sh -c "echo umask 022 >> /home/{ユーザ名}/.bashrc" # 各ユーザごとに.bashrcへ追記
sudo sh -c "echo umask 022 >> /etc/skel/.bashrc" # ユーザが新規に追加される際に自動的に記述

# 既存ディレクトリのアクセス権とグループの設定
chgrp {グループ名} -R /home/bitnami/htdocs/ # -Rオプション(--recursive)でディレクトリ内のグループも変更
chmod g+w -R /home/bitnami/htdocs/ # -Rオプション(--recursive)でグループに書き込み権限を付与
find . -type d -print | xargs chmod g+w # ディレクトリのみを探索して、一括して権限を書き換える

# 書き換え後にgroupが変更になっているかを確認
ls -al /home/bitnami/htdocs/

drwxrwsr-x  4 bitnami {グループ名} 4096 xxx 00 xx:xx .
drwxr-sr-x 14 root    root    4096 xxx  0 xx:xx ..
-rw-rw-r--  1 bitnami {グループ名} 1292 xxx 00 xx:xx xxx.html
-rw-rw-r--  1 bitnami {グループ名} 4837 xxx 00 xx:xx xxx.css
-rw-rw-r--  1 bitnami {グループ名} 1150 xxx 00  xxxx xxx.ico
-rw-rw-r--  1 bitnami {グループ名} 1292 xxx 00 xx:xx xxx.html

# シンボリックリンク作成
ln -s /home/bitnami/htdocs htdocs

这是一个中国社交媒体平台上的话题。

    • 【/etc/passwd】Linuxでユーザーの一覧を確認する方法

 

    • SGID(Set Group ID) – 特殊なアクセス権

 

    • 複数ユーザーでディレクトリ管理

 

    グループ開発時の権限設定

域名设置

在这个场景中,我们假设不使用AWS Route53来管理域名,而是使用外部服务(例如お名前.com)来管理DNS。

证书管理器的设置(SSL 设置)

acm-003.png

请提供完整的句子或段落,以便我可以为您提供更准确的中文翻译。

    • AWS Certificate Manager(ACM)に承認されるまで数日かかった話

 

    【AWS+WordPress】お名前.com で取得したドメインを常時 SSL 化する

phpMyAdmin的配置。

在bitnami Lampstack中,默认情况下会运行phpMyAdmin。您可以通过访问http://{通过ElasticIP创建的静态IP}/phpmyadmin/来访问它,但在初始安全设置中,访问是被禁止的。
通过编辑以下文件,您可以允许访问。

phpMyAdmin 的配置成功

# viで開く
vi /opt/bitnami/apps/phpmyadmin/conf/httpd-app.conf

# 以下の記述を書き換える
>> Allow from 127.0.0.1 >> Allow from all
>> Require local >> Require all granted

# サーバの再起動
sudo /opt/bitnami/ctlscript.sh restart apache

关于初始密码

如果是在启动 EC2 实例之后,您可以在 EC2 控制台的实例操作 > 实例设置 > 获取系统日志中找到“Setting Bitnami application password to ‘xxxxxxxxxxx’”的部分,其中 xxxxxxxxxxx 表示相关内容。
如果您想要稍后确认,请使用 cat 命令查看 bitnami 用户的 bitnami_credentials 文件进行确认。

cd home/bitnami
cat bitnami_credentials  #bitnami_credentialsを開いてパスワードを確認

Welcome to the Bitnami LAMP Stack

******************************************************************************
The default password is 'xxxxxxxxxxx'.
******************************************************************************

You can also use this password to access the databases and any other component the stack includes.

Please refer to https://docs.bitnami.com/ for more details.

最初的ID和密码如下所示:

id: root
pass: 上述のpassword

新增一個MySQL工作用戶

由于在开发中直接使用初始密码存在问题,因此我们将创建一个用于数据库操作的用户。在这里,我们将介绍通过PHPMyAdmin来创建用户的方法。

pma-002.png

使用MySQL命令确认用户是否已创建。

请使用命令确认用户是否已经创建。

sudo su # ルートユーザに権限変更
mysql -u root -p # mysqlにログイン
select user, host from mysql.user; # mysqlの全ユーザを確認

+---------------+-----------+
| user          | host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
| {作成ユーザ名}  | localhost |
+---------------+-----------+
4 rows in set (0.00 sec)

负载均衡器(ALB)的配置

以前只能通过CloudFront进行配置的AWS WAF现在可以通过使用ALB(应用负载均衡器)来轻松使用。

alb-007.png

安全组设置

我成功将EC2和ALB进行关联,但目前情况下,使用浏览器通过EC2的公共IP仍然可以显示网站或应用程序。{{ 正在撰写中 }}

请参考。

    AWSの新しいELB(AWS Application Load Balancer)を試してみた

AWS WAF的设置。

本文将解释IP限制和目录访问限制的设置方法。大致上,可以按照以下步骤进行设置。请注意,WAF仅适用于ALB(应用负载均衡器)。

    1. 只需一個選項,請將以下內容以中文進行原生改寫:

應用制約和設定(Condition)的反映(例如對IP進行篩選、限制訪問的文件夾等)
根據條件(Condition)設定規則(Rules)
使用規則(Rules)來創建 WebACL(網絡存取條件列表)
將設定應用於負載均衡器(ALB)

本次我们将对特定目录进行设置,只允许通过指定的IP进行访问。

限制只能使用指定的IP地址

IP addressesを指定
IP Version は`IP v4′
Address にアクセスを制限したい IP を入力※CIDR 形式でしか入力できない

有关CIDR格式

例如,假设您的IP地址是192.168.0.1,您需要输入192.168.0.1/32。有关CIDR的解释,请参考此处。※可注册的地址仅限于/8、/16、/24、/32的CIDR地址。

设定限制目录

可以使用正则表达式匹配设置目录。这次我们只需将其指定为静态目录,非常简单。

waf-001.png

规则设定

waf-003.png

创建网络访问控制清单

waf-005.png

可以提供现金进行参考。

    • [素朴な手順]Cloudfront に対して AWS WAF で地域制限をかけつつ特定 IP からアクセス許可を入れてみました

 

    AWS WAF を使って、特定の URL への接続をブロックしてみた

EC2的自动备份(可选)通过Auto Snapshot实现。

有几种方法可以自动备份数据,比如编写Lambda等方法,但最简单的方法是使用CloudWatch规则进行自动备份。最近,还推出了使用Amazon Data Lifecycle Manager (Amazon DLM)的备份方法。请参阅各个参考文章以了解详细信息。

推荐使用Amazon DLM提供的备份功能,可以在2018年12月目前,灵活设置世代管理和以何代形式进行丢弃。

亚马逊DLM的备份方法

【新服务】亚马逊推出了自动化 EBS 快照生命周期的 Amazon DLM!

使用Cloudwatch进行备份的方法

    • EBS 自動スナップショット作成について

CloudWatch イベント を使用した、自動化された Amazon EBS スナップショットのスケジュール

結束在一起

如果个人需要在AWS上进行与租用服务器几乎相同的配置和构建,我认为使用Lightsail就足够了。另一方面,如果需要进行负载均衡器的详细配置、WAF(Web Application Firewall)的配置等,希望能够方便地引入选项的情况下,通常会选择使用EC2来进行构建。

作为对这次构建调查和实际操作的感想,我发现使用市场的镜像能够降低构建成本,这超出了我的预期。然而,从一方面来说,尽管相对容易,但从一开始就启动服务器对于规模较小的公司或没有专职基础设施工程师来说仍然是困难的。而且,在之后还需要进行安全防护和维护成本,所以更加困难…这令我感到苦笑。

我认为理想的情况是,不受AWS的限制,根据在职工程师的技能、访问负载和用户预期数量,以及后续运营成本考量,能够创建适合项目的最佳基础架构环境。

bannerAds