建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

全栈小娇妻

发帖: 178粉丝: 17

发消息 + 关注

发表于2020年08月30日 22:07:15 1537 14
直达本楼层的链接
楼主
显示全部楼层
[技术干货] 如何在openeuler上设置两节点LEPP堆栈

介绍

当今的高流量Web应用程序由功能强大的快速响应Web服务器,可伸缩的企业级数据库以及功能丰富的脚本语言提供的动态内容提供支持。典型的Linux Web应用程序堆栈遵循LAMP架构(Linux,Apache,MySQL和PHP / Python)。广泛可用的教程向我们展示了如何在单个服务器上安装和配置这些组件。

在现实生活中很少这样。在专业的三层设置中,数据库后端将隔离在其自己的服务器中。Web服务器会将其请求发送到充当数据库和网站之间的中间件的应用层。

尽管Apache仍然是迄今为止使用最广泛的Web服务器,但是Nginx凭借其占用空间小和响应时间短而迅速普及。MySQL的社区版仍然是数据库的流行选择,但是许多站点还使用另一个称为PostgreSQL的开源数据库平台。


举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

全栈小娇妻

发帖: 178粉丝: 17

发消息 + 关注

发表于2020年08月30日 22:07:55
直达本楼层的链接
沙发
显示全部楼层

目标

在本教程中,我们将在两层体系结构中创建一个简单的Web应用程序。我们两个节点的基本操作系统将是openeuler。该站点将由运行与PostgreSQL数据库对话的PHP代码的Nginx Web服务器提供支持。

与其采用其他LAMP或LEMP教程中没有的“自上而下”的方法,我们将使用“自上而下”的方法:首先创建数据库层,然后创建Web服务器,然后查看Web服务器如何连接到数据库。

我们将这种配置称为LEPP(Linux,Nginx,PHP,PostgreSQL)堆栈。


点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

全栈小娇妻

发帖: 178粉丝: 17

发消息 + 关注

发表于2020年08月30日 22:08:31
直达本楼层的链接
板凳
显示全部楼层

先决条件

要遵循本教程,您将需要以下内容:

  • 两个具有至少2GB RAM和2个CPU内核的openeuler服务器,每个分别用于数据库服务器和Web服务器。

我们将这些机器的IP地址分别称为your_db_server_ipyour_web_server_ip您可以在DigitalOcean控制面板上找到这些机器的实际IP地址。

  • 两个Droplet上的Sudo非root用户。要进行设置,请遵循本教程


点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

全栈小娇妻

发帖: 178粉丝: 17

发消息 + 关注

发表于2020年08月30日 22:09:33
直达本楼层的链接
地板
显示全部楼层

第一步-安装PostgreSQL

在此步骤中,我们将在数据库服务器上安装PostgreSQL。

连接到您要安装PostgreSQL的空的。默认情况下,它的存储库不随centos一起提供,因此我们需要首先下载yum存储库RPM。

sudo wget http://yum.postgresql.org/9.4/redhat/rhel-7Server-x86_64/pgdg-centos94-9.4-1.noarch.rpm

保存RPM后,安装存储库。

sudo yum install pgdg-centos94-9.4-1.noarch.rpm -y

最后,安装PostgreSQL 9.4服务器及其contrib模块。

sudo yum install postgresql94-server postgresql94-contrib -y


点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

全栈小娇妻

发帖: 178粉丝: 17

发消息 + 关注

发表于2020年08月30日 22:10:44
直达本楼层的链接
5#
显示全部楼层

第二步-配置PostgreSQL

在此步骤中,我们将为PostgreSQL自定义许多安装后配置。

在openeuler中,PostgreSQL 9.4数据和配置文件的默认位置是/var/lib/pgsql/9.4/data/,程序二进制文件的位置是/usr/pgsql-9.4/bin/数据目录开头是空的。我们将需要运行该initdb程序来初始化数据库集群并在其中创建必要的文件:

sudo /usr/pgsql-9.4/bin/postgresql94-setup initdb

初始化数据库集群postgresql.conf后,数据文件夹中将有一个名为的文件,这是PostgreSQL的主要配置文件。我们将在此文件中更改两个参数。使用vi或您喜欢的文本编辑器,打开文件进行编辑。

sudo vi /var/lib/pgsql/9.4/data/postgresql.conf

并更改以下行:

  • 更改为 #listen_addresses = 'localhost'listen_addresses = '*'

  • 更改#port = 5432port = 5432

第一个参数指定数据库服务器将侦听的IP地址。为了安全起见,现成的Postgres安装仅允许本地主机连接。将其更改为“ *”意味着Postgres将侦听来自任何来源的流量。通过删除注释标记(#)启用了第二个参数;它指定Postgres的默认端口。

保存并退出文件。

接下来,我们将编辑pg_hba.conf,这是PostgreSQL的基于主机访问(HBA)的配置文件。它指定哪些主机和IP范围可以连接到数据库服务器。每个条目都指定可以在本地还是远程(主机)建立连接,可以连接到哪个数据库,可以作为哪个用户连接,请求来自哪个IP块以及应使用哪种身份验证模式。任何与这些条目都不匹配的连接请求将被拒绝。

打开pg_hba.conf进行编辑。

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

滚动到文件底部,并添加以下行:

host        all             all             your_web_server_ip/32          md5

此行告诉PostgreSQL your_web_server_ip使用标准的md5校验和进行密码验证,仅接受来自IP地址的数据库连接可以以任何用户的身份针对任何数据库建立连接。

保存并退出文件。

接下来,启动Postgres服务:

sudo systemctl start postgresql-9.4.service

然后启用它:

sudo systemctl enable postgresql-9.4.service

要检查数据库服务器是否接受连接,我们可以查看最新的Postgres日志文件的最后几行。数据库错误日志保存在/var/lib/pgsql/9.4/data/pg_log目录中。运行以下命令以查看此目录中的文件。

sudo ls -l /var/lib/pgsql/9.4/data/pg_log

日志文件名称具有模式(例如)。找到与当天相对应的日志文件,然后查看最新日志文件的最后几行。postgresql-day_of_week.logpostgresql-Wed.log

sudo tail -f -n 20 /var/lib/pgsql/9.4/data/pg_log/postgresql-day_of_week.log

输出应显示类似以下内容:

...< 2020-08-26 21:32:24.159 EST >LOG:  database system is ready to accept connections< 2020-08-26 21:32:24.159 EST >LOG:  autovacuum launcher started

CTRL + C停止tail命令的输出


点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

全栈小娇妻

发帖: 178粉丝: 17

发消息 + 关注

发表于2020年08月30日 22:11:11
直达本楼层的链接
6#
显示全部楼层

第三步-更新数据库服务器防火墙

我们还需要允许Postgres数据库流量通过防火墙。openeuler通过firewalld守护程序实现了动态防火墙该服务无需重新启动即可使更改生效。firewalld服务应在系统启动时自动启动,但是检查始终是一件好事。

sudo firewall-cmd --state

默认状态应为running,但如果以以下形式not running启动:

sudo systemctl start firewalld

接下来,添加端口5432的规则。这是PostgreSQL数据库流量的端口。

sudo firewall-cmd --permanent --zone=public --add-port=5432/tcp

然后重新加载防火墙。

sudo firewall-cmd --reload


点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

全栈小娇妻

发帖: 178粉丝: 17

发消息 + 关注

发表于2020年08月30日 22:11:52
直达本楼层的链接
7#
显示全部楼层

第四步-创建和填充数据库

在这一步中,我们将创建一个数据库并向其中添加一些数据。这是我们的Web应用程序将动态获取和显示的数据。

第一步是更改Postgres超级用户的密码,称为postgres,该密码是在首次安装PostgreSQL时创建的。最好在Postgres中而不是在操作系统提示符下更改用户的密码。为此,请切换到postgres用户:

sudo su - postgres

这会将命令提示符更改为-bash-4.2$接下来,启动内置的客户端工具。

psql

默认情况下,这会将postgres用户登录到Postgres数据库。您的提示符将更改为postgres=#,psql提示符,而不是OS提示符。立即发出\password命令将导致提示您更改密码。

\password

为Postgres用户提供一个安全密码。

接下来,创建一个名为product的数据库

CREATE DATABASE product;

然后连接到product数据库:

\connect product;

接下来,在数据库中创建一个名为product_list的表

CREATE TABLE product_list (id int, product_name varchar(50));

一次运行以下每个命令。每个命令将单个记录添加到product_list表中。

INSERT INTO product_list VALUES (1, 'Book');INSERT INTO product_list VALUES (2, 'Computer');INSERT INTO product_list VALUES (3, 'Desk');

最后,检查数据是否已正确添加。

SELECT * FROM product_list;

输出应如下所示:

 id | product_name----+--------------
  1 | Book
  2 | Computer
  3 | Desk(3 rows)

这就是我们需要在数据库服务器上完成的所有工作;您现在可以断开与它的连接。


点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

全栈小娇妻

发帖: 178粉丝: 17

发消息 + 关注

发表于2020年08月30日 22:12:28
直达本楼层的链接
8#
显示全部楼层

第五步–安装Nginx

接下来,我们将在另一个Droplet中安装和配置Nginx Web服务器。连接到另一个空的,新安装的CentOS 7盒。

与PosgreSQL一样,Nginx存储库默认情况下不随centos一起提供。我们将需要首先下载yum存储库RPM。

sudo wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

保存RPM后,安装存储库。

sudo yum install nginx-release-centos-7-0.el7.ngx.noarch.rpm -y

最后,安装Nginx Web服务器。

sudo yum install nginx -y


点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

全栈小娇妻

发帖: 178粉丝: 17

发消息 + 关注

发表于2020年08月30日 22:13:24
直达本楼层的链接
9#
显示全部楼层

第六步-更新Web服务器防火墙

在此步骤中,我们将配置防火墙以允许Nginx通信,并自定义一些Nginx配置。

我们需要允许HTTP / HTTPS通信通过防火墙。和以前一样,检查firewalld服务是否正在运行。

sudo firewall-cmd --state

默认状态应该是running,但如果是not running,请启动它:

sudo systemctl start firewalld

现在为端口80(HTTP)添加防火墙规则:

sudo firewall-cmd --permanent --zone=public --add-port=80/tcp

为端口443(HTTPS)添加另一个:

sudo firewall-cmd --permanent --zone=public --add-port=443/tcp

然后,重新加载防火墙。

sudo firewall-cmd --reload

接下来,启动Nginx。

sudo systemctl start nginx.service

并启用它。

sudo systemctl enable nginx.service

将我们的浏览器指向服务器的IP地址,应该会向我们显示默认网页:

1.jpg


点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

全栈小娇妻

发帖: 178粉丝: 17

发消息 + 关注

发表于2020年08月30日 22:13:50
直达本楼层的链接
10#
显示全部楼层

第七步-配置Nginx

此步骤中有两个相关的Nginx配置文件。第一个是主配置文件,第二个是特定于站点的文件。

常规配置文件控制总体服务器特征。Nginx可以为许多网站提供服务,每个站点都称为服务器块(Apache称它们为虚拟主机或虚拟主机)。每个站点的配置由服务器块配置文件控制。

让我们编辑主服务器配置文件。

sudo vi /etc/nginx/nginx.conf

在文件的第二行,将worker_processes参数从1 更改为2。这告诉Nginx的工作线程使用所有可用的CPU内核。保存并退出文件。

我们不会在这里创建服务块。相反,我们将在默认服务器块中创建Web应用程序,因此让我们编辑默认服务器块配置文件。

sudo vi /etc/nginx/conf.d/default.conf

内容看起来像这样。您将编辑的部分将突出显示。

server {
    listen       80;
    server_name  localhost;
    ...
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;    }
    #error_page  404              /404.html;
    ...
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {    #    root            html;
    #    fastcgi_pass     127.0.0.1:9000;
    #    fastcgi_index        index.php;    #    fastcgi_param        SCRIPT_FILENAME /scripts$fastcgi_script_name;    #    include              fastcgi_params;    #}
 ...}

进行以下编辑:

  • server_name设置localhostyour_web_server_ip

  • 添加index.phpindex指令,使其读取index.php index.html index.htm

  • 删除包含指令location / {}如果不进行此更改,您可能会发现您的网页未显示在浏览器中,并且Nginx错误日志记录了诸如以下消息rootindex"Unable to open primary script: /etc/nginx/html/index.php (No such file or directory)"

  • 取消注释将PHP脚本传递给FastCGI服务器注释的代码location ~ \.php$块(包括最后一个大括号)

  • 删除同location ~ \.php$一块下的root指令

  • 将fastcgi_pass指令值从更改127.0.0.1:9000unix:/var/run/php-fpm/php5-fpm.sock这是为了确保PHP FastCGI Process Manager(将在下一步中安装)将侦听Unix套接字。

  • 将te fastcgi_param指令值更改SCRIPT_FILENAME $document_root$fastcgi_script_name这告诉Web服务器,PHP脚本文件将保存在文档根目录下。

完成编辑后,文件应如下所示:

server {
    listen       80;
    server_name  your_web_server_ip;
    ...
    root   /usr/share/nginx/html;
    index  index.php index.html index.htm;
    ...
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php-fpm/php5-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    ...

保存并退出文件,然后启动Web服务器。

sudo systemctl restart nginx.service


点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200