在【Amazon Lightsail】中尝试使用Laravel x Nginx环境进行快速部署

议程

    • Amazon LightsailでLaravel実行環境を構築したい

 

    • LAMPパッケージでなくNginxパッケージでインスタンスを立てたい

 

    ApacheではなくNginxで実行したい

Amazon Lightsail 是什么?

提要

在AWS中的一项服务,提供虚拟服务器。与提供计算环境的EC2不同,此服务具有预装所需应用程序、库和工具的全能性,使部署和使用变得简便。

在AWS中,通常很多都是按使用量计费,而月费固定制较为少见。到2021年4月23日为止,最低配置的月费为3.5美元(约合462日元),成本较低。相比于使用EC2构建执行环境,可扩展性当然会稍差一些,但通过付费选项,一定程度上可以保证一定的可扩展性。

一般来说,对于规模较小的应用程序或个人服务等,AWS的入门级服务足够稳定运行,并且易于初学者操作。

 

总归说来还是挺难的,对吧?

作为一个刚刚入门的工程师,我也不知不觉地成功部署了,所以说也许没那么难。要运行Lightsail,需要创建一个AWS账户,但可以通过专用的Lightsail控制台进行直观且简易的操作。SSH连接可通过自己的终端应用程序进行连接,但也可以通过该控制台直接连接,并且无论如何都可以轻松操作。(*这里提到的控制台是指网页浏览器上的界面。)

然而,如果尝试偏离传统方法,就会发现理解需要进一步调查的AWS文件很困难,相关的非官方文章也很难找到,也就是说参考资料相对较少。所以,在这种情况下可能会遇到一些障碍或陷入困境。

这次我们选择了Lightsail作为我们用Laravel开发的WEB应用的部署目标。由于我们是用LEMP而不是LAMP作为Laravel的常见执行环境进行开发,所以我们使用了Nginx的软件包来生成实例。然而,令人意外的是找不到关于Nginx软件包的文章,所以在部署过程中遇到了困难,为了保留自己的知识,我将其总结了起来。

LAMP环境是指使用Linux(操作系统)、Apache(Web服务器)、MySQL(数据库)、PHP(编程执行环境)作为执行环境的总称。由于这种配置在开发环境中经常出现,所以几乎无论去哪里都能通用。

LEMP环境是指将上述的Web服务器Apache替换为Nginx的执行环境的总称。LEMP中的“E”代表从Nginx(EngineX?)中获得的名称(有多种说法)。由于Nginx是在Apache之后出现的,所以LEMP环境可以说是更现代化的环境。

首先,生成一个实例。

只要连续点击就可以了。

前提:假设已经创建了AWS账户并能够进行AWS控制台的基本操作。

在中国当地的环境中建立LEMP实例。

スクリーンショット 2023-04-10 8.14.52.png

・实例位置
就是指区域。如果你想進一步了解,可以查詢有關区域的细节,选择离你较近的位置可以减少延迟。
比如你住在日本,为什么要去孟买的服务器上进行各种操作呢?还不如选择东京的服务器,这样延迟肯定会更低,这就是我的理解。

选择东京毫无困难 -> 东京ap-northeast-1

・选择实例镜像
在要运行的系统中选择包含所需应用程序和工具的镜像。我认为这是 Lightsail 的关键之处,在这里可以选择 LAMP 环境或 WordPress 环境等。

选择Nginx作为这次的主题,正如标题所示。这个镜像包含了PHP、MySQL和Nginx,如果选择Linux作为平台,可以构建LEMP环境。

「Bitnami っていう会社が作ったんだけど、パッケージ化された Nginx x.xx.x-x のことを指してるんだよ」
ビットナミーと呼ばれるらしい。Lightsail っていうシステムのメインの人みたいで、システムを実行するために必要なアプリケーションをパッケージ化してくれるライブラリみたいなもの。
Lightsail では、Bitnami がパッケージ化して用意してくれた「Nginx」のイメージを使って、あなたのインスタンスを作っていくよ〜って意味だね。

 

スクリーンショット 2023-04-10 8.15.39.png

我想你應該會發現這真的是一個非常低成本的事情。最基本的組合僅需3.5美元,稍微提升一點質量則為5美元。而且,截至23/4現在,最初的3個月還是免費的,所以你可以試試看沒有任何費用。亞馬遜太厲害了。

只要不克隆一个太庞大的服务,选择3.5美元的计划是没有问题的。笔者个人开发了一个非常简单的应用程序,通过git clone进行部署,没有遇到任何问题。

这些规模好像可以在实例生成后进行升级,所以应该没有问题用最低配置。

在官方支持中,关于降级的详细信息并没有明确说明,所以请注意。
https://repost.aws/ja/knowledge-center/change-lightsail-plan

最后,确认实例并决定一个任意的实例名称。
请注意,此名称以后无法更改。

只需要保留键名称标签即可,忽略键值标签也可以。

按下“创建实例”按钮后,将立即开始创建的处理过程。由于启动可能需要几分钟的时间,所以需要查看转移到的控制台页面上显示的进度状态,并在其更新为“运行中”时确认Lightsail可用。

只需点击一次。

让我们尝试触摸各种不同的东西吧。

一体机

我先前已经提到了,Lightsail的优点是系统启动所需的环境从一开始就已经准备好了。它是根据您在实例创建时选择的镜像生成的,因此在启动实例后无需在服务器内安装任何东西,省去了麻烦。

如果是为了实际工作或学习,那么使用SSH连接是没有错的,但在这里,为了立即确认一体化情况,我们可以通过控制台界面连接到服务器,并查看其内容。

スクリーンショット 2023-04-10 8.50.11.png
bitnami@ip -xxx-xx-xx-xxx:-$ php -v
 // PHPのバージョン情報が表示

bitnami@ip -xxx-xx-xx-xxx:-$ nginx -v    
 // Nginxのバージョン情報が表示

接下来是对数据库进行操作验证。不知道为什么,Nginx的映像中默认安装了MariaDB。首先获取应用程序的通用密码,然后使用该密码连接到数据库,进行验证。

由于MariaDB是从MySQL发展而来的数据库,所以基本上可以认为它与MySQL没有太大差异。感觉MariaDB会更严格地处理SQL语句。
bitnami@ip -xxx-xx-xx-xxx:-$ ls
bitnami_application_password bitnami_credentials stack
bitnami@ip -xxx-xx-xx-xxx:-$ vi bitnami_application_password
 // 1行だけ表示される文字列がパスワードなのでコピーする

:q
 // vim内なので :q で変更処理せず終了

bitnami@ip -xxx-xx-xx-xxx:-$ mysql -u root -p
Enter password: //先程コピーしたパスワードを入力
 // Welcome to the MariaDB monitor. 以降が表示される

MariaDB[(none)]> exit
Bye

 // bitnamiホームディレクトリへ戻る

以上のように、インスタンス生成からものの数分、実際にサーバー内に必要なアプリケーションやツール、DBが備わっていることを確認。
本当に便利でわかりやすい。

尝试运行Laravel的开发环境。

安装Laravel项目。

无论是进行全新安装,还是通过git clone来配置现有项目,都需要按照以下的目录进行相应操作。

bitnami@ip -xxx-xx-xx-xxx:-$ cd stack/nginx/html/
对于新的项目
bitnami@ip -xxx-xx-xx-xxx:-$ composer create-project laravel/laravel hogehoge-app
bitnami@ip -xxx-xx-xx-xxx:-$ composer install
bitnami@ip -xxx-xx-xx-xxx:-$ cp .env.example .env
bitnami@ip -xxx-xx-xx-xxx:-$ php artisan key:generate
如果要克隆现有项目的话

前提:首先,生成Github的公钥和私钥,并将公钥与Github进行关联并能够通过SSH连接。

bitnami@ip -xxx-xx-xx-xxx:-$ git@github.com:hoge_user/hogehoge-app.git
bitnami@ip -xxx-xx-xx-xxx:-$ composer install
bitnami@ip -xxx-xx-xx-xxx:-$ cp .env.example .env
bitnami@ip -xxx-xx-xx-xxx:-$ php artisan key:generate

可以通过在DB设置或.env文件中进行与数据库连接的描述,来在Laravel上处理MariaDB。

Nginx 的配置

修改 conf 文件

确认所在目录中的文件

bitnami@ip -xxx-xx-xx-xxx:-$ cd stack/nginx/conf/
bitnami@ip -xxx-xx-xx-xxx:-$ vi nginx.conf

在标有“HTTP服务器”部分,进行以下描述。

root /home/bitnami/stack/nginx/html/hogehoge-app/public;
index index.html index.htm index.php;

将Laravel项目中Public目录下的index.php作为根目录进行指定。
通过进行这项设置,可以使生成的Laravel项目正常运行。

重新启动Nginx

最后,为了使conf文件生效,重新启动Nginx。

bitnami@ip -xxx-xx-xx-xxx:-$ cd sudo /opt/bitnami/ctlscript.sh restart nginx

只需要一个选项,将以下内容用中文进行释义:
当将自己的IP地址输入到URL中时,Laravel的首页将会显示。
成功!

结束

如果现在处于现状,表示服务器上的项目正在运行,说明部署已经完成。如果项目在github进行版本控制的话,只需将main分支更新到最新状态,也可以进行更新操作。

我正在研究使用哪种合并操作,但是使用Lightsail部署Nginx的方法就是以上所述的。

其他可能需要考虑的事情是

    • 静的IPアドレスの設定

 

    • (割愛した)各マシンのターミナル等ソフト上でサーバー接続用にssh接続設定

 

    • 証明書の発行

 

    …などなど。

今天在这里。
非常感谢您抽出时间。