慈善机构云:迁移指南

慈善机构云:迁移指南

不久前,Mail.Ru Cloud Solutions (MCS) 和 Dobro Mail.Ru 服务推出了“项目”慈善云”,非营利组织可以免费获得MCS云平台的资源。 慈善基金会”善良的算术» 参与该项目并成功部署了基于MCS的部分基础设施。

通过验证后,NPO可以从MCS获得虚拟容量,但进一步配置需要一定的资格。 在本材料中,我们希望分享设置基于 Ubuntu Linux 的服务器来运行主要基金会网站和使用免费 SSL 证书的多个子域的具体说明。 对于许多人来说,这将是一个简单的指南,但我们希望我们的经验不仅对其他非营利组织有用。

泛远: 你能从 MCS 得到什么? 4 个 CPU、32 GB RAM、1 TB HDD、Ubuntu Linux 操作系统、500 GB 对象存储。

第 1 步:启动虚拟服务器

让我们开门见山,在您的 MCS 个人帐户中创建我们的虚拟服务器(也称为“实例”)。 在应用商店中,您需要选择并安装现成的LAMP堆栈,这是运行大多数网站所必需的一组服务器软件(LAMP = Linux、Apache、MySQL、PHP)。

慈善机构云:迁移指南
慈善机构云:迁移指南
慈善机构云:迁移指南
选择适当的服务器配置并创建新的 SSH 密钥。 单击“安装”按钮后,将开始安装服务器和 LAMP 堆栈,这将需要一些时间。 系统还将提供将私钥下载到您的计算机以通过控制台管理虚拟机的功能,并保存它。

安装应用程序后,让我们立即设置防火墙,这也是在您的个人帐户中完成的:转到“云计算 -> 虚拟机”部分并选择“设置防火墙”:

慈善机构云:迁移指南
您需要添加对通过端口 80 和 9997 传入流量的权限。 这是将来安装 SSL 证书和使用 phpMyAdmin 所必需的。 因此,规则集应如下所示:

慈善机构云:迁移指南
现在您可以使用 SSH 协议通过命令行连接到您的服务器。 为此,请键入以下命令,指向计算机上的 SSH 密钥和服务器的外部 IP 地址(您可以在“虚拟机”部分中找到它):

$ ssh -i /путь/к/ключу/key.pem ubuntu@<ip_сервера>

首次连接到服务器时,建议在其上安装所有当前更新并重新启动。 为此,请运行以下命令:

$ sudo apt-get update

系统将收到更新列表,使用此命令安装它们并按照说明进行操作:

$ sudo apt-get upgrade

安装更新后,重新启动服务器:

$ sudo reboot

第 2 步:设置虚拟主机

许多非营利组织需要同时维护多个域或子域(例如,一个主网站和多个用于促销活动的登陆页面等)。 通过创建多个虚拟主机,所有这些都可以方便地放置在一台服务器上。

首先,我们需要为将向访问者显示的站点创建一个目录结构。 让我们创建一些目录:

$ sudo mkdir -p /var/www/a-dobra.ru/public_html

$ sudo mkdir -p /var/www/promo.a-dobra.ru/public_html

并指定当前用户的所有者:

$ sudo chown -R $USER:$USER /var/www/a-dobra.ru/public_html

$ sudo chown -R $USER:$USER /var/www/promo.a-dobra.ru/public_html

变量 $USER 包含您当前登录的用户名(默认情况下这是用户 ubuntu)。 现在当前用户拥有 public_html 目录,我们将在其中存储内容。

我们还需要稍微编辑一下权限,以确保允许对共享 Web 目录及其包含的所有文件和文件夹进行读取访问。 这是正确显示网站页面所必需的:

$ sudo chmod -R 755 /var/www

您的网络服务器现在应该拥有显示内容所需的权限。 此外,您的用户现在可以在所需目录中创建内容。

/var/www/html 目录中已经有一个 index.php 文件,让我们将其复制到新目录 - 这将是我们现在的内容:

$ cp /var/www/html/index.php /var/www/a-dobra.ru/public_html/index.php

$ cp /var/www/html/index.php /var/www/promo.a-dobra.ru/public_html/index.php

现在您需要确保用户可以访问您的网站。 为此,我们首先配置虚拟主机文件,这些文件确定 Apache Web 服务器如何响应不同域的请求。

默认情况下,Apache 有一个虚拟主机文件 000-default.conf,我们可以将其用作起点。 我们将复制此文件来为每个域创建虚拟主机文件。 我们将从一个域开始,配置它,将其复制到另一个域,然后再次进行必要的编辑。

Ubuntu 的默认配置要求每个虚拟主机文件都具有 *.conf 扩展名。

让我们首先复制第一个域的文件:

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/a-dobra.ru.conf

在具有 root 权限的编辑器中打开一个新文件:

$ sudo nano /etc/apache2/sites-available/a-dobra.ru.conf

按如下方式编辑数据,指定端口 80,您的数据 ServerAdmin, ServerName, ServerAlias以及站点根目录的路径,保存文件(Ctrl+X,然后 Y):

<VirtualHost *:80>
 
    ServerAdmin [email protected]
    ServerName a-dobra.ru
    ServerAlias www.a-dobra.ru
 
    DocumentRoot /var/www/a-dobra.ru/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
 
    <Directory /var/www/a-dobra.ru/public_html>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
 
    <FilesMatch .php$>
        SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
    </FilesMatch>
 
</VirtualHost>

ServerName 设置主域,该域必须与虚拟主机名匹配。 这必须是您的域名。 第二, ServerAlias,定义了应被解释为主域的其他名称。 这对于使用附加域名很方便,例如使用 www.

让我们为另一台主机复制此配置,并以相同的方式编辑它:

$ sudo cp /etc/apache2/sites-available/a-dobra.ru.conf /etc/apache2/sites-available/promo.a-dobra.ru.conf

您可以根据需要为您的网站创建任意数量的目录和虚拟主机! 现在我们已经创建了虚拟主机文件,我们需要启用它们。 我们可以使用 a2ensite 实用程序来启用我们的每个站点,如下所示:

$ sudo a2ensite a-dobra.ru.conf

$ sudo a2ensite promo.a-dobra.ru.conf 

默认情况下,LAMP 中的端口 80 是关闭的,稍后我们将需要它来安装 SSL 证书。 因此,让我们立即编辑 ports.conf 文件,然后重新启动 Apache:

$ sudo nano /etc/apache2/ports.conf

添加新行并保存文件,如下所示:

Listen 80
Listen 443
Listen 9997

完成设置后,需要重新启动Apache以使所有更改生效:

$ sudo systemctl reload apache2

第三步:设置域名

接下来,您需要添加指向新服务器的 DNS 记录。 为了管理域名,我们的 Arithmetic of Good Foundation 使用 dns-master.ru 服务,我们将通过一个示例来展示它。

为主域设置 A 记录通常如下所示(符号 @):

慈善机构云:迁移指南
子域名的A记录通常是这样指定的:

慈善机构云:迁移指南
IP地址是我们刚刚创建的Linux服务器的地址。 您可以指定 TTL = 3600。

一段时间后,就可以访问您的网站,但目前只能通过 http://。 下一步我们将添加支持 https://.

第 4 步:设置免费 SSL 证书

您可以为您的主站点和所有子域获取免费的 Let's Encrypt SSL 证书。 还可以配置他们的自动续订,非常方便。 要获取 SSL 证书,请在您的服务器上安装 Certbot:

$ sudo add-apt-repository ppa:certbot/certbot

使用以下命令安装 Apache 的 Certbot 软件包 apt:

$ sudo apt install python-certbot-apache 

现在 Certbot 可以使用了,运行命令:

$ sudo certbot --apache -d a-dobra.ru -d www.a-dobra.ru -d promo.a-dobra.ru

此命令运行 certbot、密钥 -d 定义应为其颁发证书的域的名称。

如果这是您第一次启动 certbot,系统会要求您输入您的电子邮件地址并同意该服务的使用条款。 然后,certbot 将联系 Let's Encrypt 服务器,并验证您是否实际控制所请求证书的域。

如果一切顺利,certbot 将询问您要如何配置 HTTPS 配置:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

我们建议选择选项 2 并按 ENTER。 配置将被更新,并且 Apache 将重新启动以应用更改。

您的证书现已下载、安装并运行。 尝试使用 https:// 重新加载您的网站,您将在浏览器中看到安全图标。 如果你测试你的服务器 SSL 实验室服务器测试,他将获得 A 级。

Let's Encrypt 证书的有效期只有 90 天,但是我们刚刚安装的 certbot 软件包会自动更新证书。 为了测试更新过程,我们可以对 certbot 进行一次试运行:

$ sudo certbot renew --dry-run 

如果运行此命令后没有看到任何错误,则一切正常!

第5步:访问MySQL和phpMyAdmin

许多网站都使用数据库。 用于数据库管理的 phpMyAdmin 工具已经安装在我们的服务器上。 要访问它,请使用以下链接转到您的浏览器:

https://<ip-адрес сервера>:9997

root访问密码可以在您的MCS个人账户中获取(https://mcs.mail.ru/app/services/marketplace/apps/)。 首次登录时不要忘记更改 root 密码!

第 6 步:设置通过 SFTP 上传文件

开发人员会发现通过 SFTP 为您的网站上传文件很方便。 为此,我们将创建一个新用户,称他为网站管理员:

$ sudo adduser webmaster

系统会要求您设置密码并输入一些其他数据。

更改您网站的目录所有者:

$ sudo chown -R webmaster:webmaster /var/www/a-dobra.ru/public_html

现在让我们更改 SSH 配置,以便新用户只能访问 SFTP 而不能访问 SSH 终端:

$ sudo nano /etc/ssh/sshd_config

滚动到配置文件的最后并添加以下块:

Match User webmaster
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/www/a-dobra.ru
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

保存文件并重新启动服务:

$ sudo systemctl restart sshd

现在您可以通过任何 SFTP 客户端连接到服务器,例如通过 FileZilla。

  1. 现在您知道如何在同一服务器中创建新目录并为您的网站配置虚拟主机。
  2. 您可以轻松创建必要的 SSL 证书 - 它是免费的,并且它们会自动更新。
  3. 您可以通过熟悉的phpMyAdmin方便地使用MySQL数据库。
  4. 创建新的 SFTP 帐户和设置访问权限并不需要太多努力。 此类帐户可以转移给第三方网络开发人员和网站管理员。
  5. 不要忘记定期更新系统,我们还建议进行备份 - 在 MCS 中,您可以一键拍摄整个系统的“快照”,然后在必要时启动整个映像。

使用的可能有用的资源:

https://www.digitalocean.com/community/tutorials/apache-ubuntu-14-04-lts-ru
https://www.digitalocean.com/community/tutorials/apache-let-s-encrypt-ubuntu-18-04-ru
https://www.digitalocean.com/community/tutorials/how-to-enable-sftp-without-shell-access-on-ubuntu-18-04

顺便说一下, 这里 您可以在VC上看到我们基金会如何部署基于MCS云的孤儿在线教育平台。

来源: habr.com

添加评论