使用Amazon Linux 2来构建LNPP环境

以下是在Amazon Linux 2上构建LNPP环境的步骤。请在命令前加上适当的sudo执行。

与LAMP进行比较

将本次构建的LNPP环境与常见的LAMP环境进行比较,结果如下。

LNPPLAMPOSLinuxLinuxWEBサーバNginxApacheDBPostgreSQLMySQLプログラミング言語PHPPHP

我们选择使用Nginx作为WEB服务器而不是Apache,以及使用PostgreSQL而不是MySQL作为数据库。如果使用术语不正确,请指正。

环境和版本信息

    • OS: Amazon Linux2

 

    • WEBサーバ: Nginx1.18.0

 

    • DB: PostgeSQL 11.5

 

    • プログラミング言語: PHP 7.4.11

 

    クライアントPC: Windows10(PuTTYにてAmazon Linux2に接続)

操作步骤

1. 时区的变更 de

首先,为了在日本时间使用,需要更改Amazon Linux 2本身的时区设置。
执行以下命令,编辑/etc/sysconfig/clock文件。

vi /etc/sysconfig/clock

请按以下方式填写并保存。

ZONE="Asia/Tokyo"
UTC=true

2. 软件安装

首先,我們需要通過SSH連接到Amazon Linux2環境,然後安裝所需的各種軟件進行環境設置。
這次我們決定使用Amazon Linux2的Extras Library來幫助我們完成這個任務。

执行以下命令以查看 Extras Library 可用主题的列表。

amazon-linux-extras

在初始状态下应该是这样的。

・・(以上省略)
 35  kernel-ng                available    [ =stable ]
 36  BCC                      available    [ =0.x  =stable ]
 37  mono                     available    [ =5.x  =stable ]
 38  nginx1=latest            available      [ =stable ]
 39  ruby2.6                  available    [ =2.6  =stable ]
 40  mock                     available    [ =stable ]
 41  postgresql11=latest      available     [ =11  =stable ]
 42  php7.4=latest            available     [ =stable ]
 43  livepatch                available    [ =stable ]
 44  python3.8                available    [ =stable ]
 45  haproxy2                 available    [ =stable ]
(以下省略)・・

安装Nginx、PostgreSQL和PHP。
按照以下三个命令的顺序执行。

amazon-linux-extras install nginx1
amazon-linux-extras install postgresql11
amazon-linux-extras install php7.4

由於在Ubuntu中似乎只安裝了psql命令,所以我們還需要正常安裝PostgreSQL(只需執行以下命令即可!)。

yum install postgresql-server postgresql-devel postgresql-contrib

重新执行amazon-linux-extras命令,确认Nginx,PostgreSQL和PHP已启用。

amazon-linux-extras

只要以下内容已变更为“启用”,就可以了!

・・(以上省略)
 35  kernel-ng                available    [ =stable ]
 36  BCC                      available    [ =0.x  =stable ]
 37  mono                     available    [ =5.x  =stable ]
 38  nginx1=latest            enabled      [ =stable ]
 39  ruby2.6                  available    [ =2.6  =stable ]
 40  mock                     available    [ =stable ]
 41  postgresql11=latest      enabled      [ =11  =stable ]
 42  php7.4=latest            enabled      [ =stable ]
 43  livepatch                available    [ =stable ]
 44  python3.8                available    [ =stable ]
 45  haproxy2                 available    [ =stable ]
(以下省略)・・

3. Nginx – Nginx是一款流行的开源Web服务器。

首先,执行以下命令,确认Nginx的配置。

vi /etc/nginx/nginx.conf

如果使用HTTP连接,则文档根目录是/usr/share/nginx/html。因此,在此目录下创建您想在网页中显示的文件(当然,也可以进行设置更改)。

顺便提一句,相关部分如下(指有 “root” 标记的地方)。

・・(以上省略)
    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;
(以下省略)・・

创建一个名为index.php的文件,按照以下方式执行并显示PHP的设置内容。

vi /usr/share/nginx/html/index.php

当文件打开时,请在插入模式下复制并保存以下内容。

<?php 
phpinfo();

(3) 启动Nginx。

systemctl start nginx.service

使用浏览器打开以下URL,确认PHP设置内容是否会显示出来。

http://パブリック IPv4 DNS/index.php
image.png

你可以在AWS控制台(EC2)上确认公共IPv4 DNS。

4. PostgreSQL 数据库

接下来进行PostgreSQL的配置设置。

(1) 首先,我们执行以下命令来进行初始化。

postgresql-setup initdb

(2) 確認存储設定文件的位置。

find / -name pg_hba.conf

在我个人的情况下,情况如下所述。

/var/lib/pgsql/data/pg_hba.conf

(3) 打开设置文件,并按照以下方式修改内容,以便暂时可以在没有密码的情况下登录(在后续步骤中进行设置)。

vi /var/lib/pgsql/data/pg_hba.conf

■改变前

・・(以上省略)
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident
(以下省略)・・

↓ (将「ident」(2处)更改为「trust」)

■ 改变后

・・(以上省略)
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
(以下省略)・・

启动并登录PostgreSQL,然后设置密码。

systemctl start postgresql.service
psql -h localhost -p 5432 -U postgres

当出现「postgres=#」这样的提示时,表示您已成功登录。现在,执行以下DDL语句来设置密码。

alter role postgres with password 'postgres';

在上方提到的例子中,用户将用户:postgres的密码设置为了postgres。

(5)通过以下方式更改设置文件,使得无法在没有密码的情况下登录。

・・(以上省略)
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
(以下省略)・・

※ 在(3)中将「■变更后」中的「trust」(2处)改为「md5」。

为了在日本时间使用,我们需要更改PostgreSQL的时区设置。
请执行以下命令来搜索配置文件postgresql.conf。

find / -name postgresql.conf -type f

在我的情况下,它如下所示。

/var/lib/pgsql/data/postgresql.conf

打开postgresql.conf文件,并将时区设置为Asia/Tokyo。同时,建议您也修改日志文件的时区设置log_timezone。

・・(以上省略)
log_timezone = 'Asia/Tokyo'
・・(途中省略)・・
timezone = 'Asia/Tokyo'
(以下省略)・・

保存了postgresql.conf的配置后,重新启动PostgreSQL以使更改生效。

systemctl restart postgresql.service

为了确保,我们登录到PostgreSQL,检查一下更改是否已经生效。

-- ログイン
psql -h localhost -p 5432 -U postgres
-- ログイン後、以下のコマンドを実行
select current_timestamp;

只要显示日本时间就可以了!

接下来,我们需要确认是否存在pdo_pgsql来进行PDO连接(因为本次需要使用PDO将PHP连接到PostgreSQL)。

php -m | grep pdo

如果没有显示pdo_pgsql,则执行以下命令进行安装。

yum install --enablerepo=remi,remi-php74 php-pgsql

(11) 重新启动fpm-php以应用更改。

systemctl restart php-fpm

如果Web服务器是Apache,那么需要重新启动Apache,但如果是Nginx,则需要重新启动fpm-php。

(12) 让我们创建一个名为postgres.php的文件,用于从浏览器进行连接确认。

vi /usr/share/nginx/html/postgres.php

在插入模式下,按照以下方式进行记录→保存。

<?php

$DBHOST = "127.0.0.1";
$DBPORT = "5432";
$DBNAME = "postgres";
$DBUSER = "postgres";
$DBPASS = "postgres";

try{
  //DB接続
  $dbh = new PDO("pgsql:host=$DBHOST;port=$DBPORT;dbname=$DBNAME;user=$DBUSER;password=$DBPASS");
  print("接続成功".'<br>');
}catch(PDOException $e){
  print("接続失敗".'<br>');
  print($e.'<br>');
  die();
}
//データベースへの接続を閉じる
$dbh = null;
?>

以下的源代码,是从 @ga_ku 在Qiita上的文章“如何使用PHP连接到PostgreSQL”的参考中借鉴过来的(经过了一些修改)。

在浏览器中输入以下URL,如果显示”连接成功”,则表示一切正常!

http://パブリック IPv4 DNS/postgres.php
image.png

在这里,环境设定 → 通过浏览器进行了一系列的操作确认!

结束

我喜欢Apache和MySQL,但我也想尝试一下不太熟悉的Nginx和PostgreSQL。
尤其是在PostgreSQL和PHP的连接(PDO)方面遇到了一些问题,但最终还是成功了,真是太好了。

更改记录

日付変更内容2021/02/14タイムゾーンの変更手順を追加

请你们在购物之前先参考一下顾客的评价。

与LAMP进行比较

    LAMP(ランプ)・Linux豆知識 055| Linuc

操作步骤

1. 时区的更改

    AmazonLinuxでのタイムゾーン設定 | Qiita

2. 软件安装

    • Amazon Linux 2 を実行している EC2 インスタンスに Extras Library からソフトウェアパッケージをインストールする方法を教えてください。 | aws

 

    • Extras library (Amazon Linux 2) | aws

 

    Amazon linux2にpostgresqlをインストールする手順 | 瀬戸内の雲のように

3. Nginx (一个开源的Web服务器软件)

    Nginx設定のまとめ | Qiita

4. PostgreSQL (PostgreSQL数据库)

    • postgresのパスワードが分からない場合 | diadia

 

    • PostgreSQL 認証に失敗しないための Ident、MD5、Trust 比較 | etuts+

 

    • PostgreSQLのデフォルトのタイムゾーン | かずきのBlog@hatena

 

    • 19.8. エラー報告とログ取得 | PostgreSQL 11.5文書

 

    [centos7]nginxでphp.iniの設定を反映させる | Yuki猫のおうち
bannerAds