慈善云:迁移指南



不久前,Mail.Ru云解决方案(MCS)和Welcome Mail.Ru服务启动了Cloud for Charity Foundations项目,这使得非营利组织可以免费获得MCS云平台资源。 善意慈善基金会参与了该项目,并成功部署了基于MCS的部分基础架构。

验证之后,NPO可以从MCS接收虚拟电源,但是进一步的调整需要一定的资格。 在本文中,我们希望共享特定的说明,以使用免费的SSL证书为主要基金网站和许多子域设置基于Ubuntu Linux的服务器。 对于许多人来说,这将是一个简单的指南,但是我们希望我们的经验不仅对其他非营利组织有用。

仅供参考 :我可以从MCS那里得到什么? 4个CPU,32 GB RAM,1 TB HDD,Ubuntu Linux OS,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:配置虚拟主机


许多NPO需要同时包含多个域或子域(例如,主站点和用于促销活动的多个登录页面等)。 通过创建多个虚拟主机,所有这些都可以方便地托管在单个服务器上。

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

 $ 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 

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

/ 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,用于ServerAdminServerNameServerAlias数据以及站点根目录的路径,保存文件(按Ctrl + X,然后按Y):

 <VirtualHost *:80> ServerAdmin e.valuisky@a-dobra.ru 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 

步骤3:设置域名


接下来,您需要添加指向新服务器的DNS记录。 对于域管理,我们的Good Foundation算术使用dns-master.ru服务,下面以示例进行展示。

主域的A记录设置通常是这样表示的( @符号):


子域的A记录通常表示如下:


IP地址是我们刚刚创建的Linux服务器的地址。 TTL可以指定= 3600。

一段时间后,已经可以访问您的网站,但是到目前为止只能通过http:// 。 在下一步中,我们将添加https://支持。

步骤4:配置免费的SSL证书


您可以获取主站点和所有子域的“让我们加密”免费的SSL证书。 您还可以配置其自动续订,这非常方便。 要获取SSL证书,请在服务器上安装Certbot:

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

使用apt安装适用于Apache的Certbot软件包:

 $ 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 Labs服务器测试测试服务器 ,则它将获得A级。

让我们加密证书仅可使用90天,但是我们刚刚安装的certbot软件包将自动更新证书。 为了测试升级过程,我们可以制作一个空运行的certbot:

 $ sudo certbot renew --dry-run 

如果您看不到此命令导致的任何错误,则说明一切正常!

第5步:访问MySQL和phpMyAdmin


许多网站使用数据库。 用于数据库管理的phpMyAdmin工具已经安装在我们的服务器上。 要访问它,请在浏览器中单击链接,例如:

 https://<ip- >:9997 

可以在您的个人MCS帐户( https://mcs.mail.ru/app/services/marketplace/apps/ )中获得用于root用户访问的密码。 请勿忘记在首次登录时更改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帐户和设置访问权限将不需要太多的工作。 可以将此类帐户转移给第三方Web开发人员和站点管理员。
  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云启动了一个在线的孤儿在线教育平台。

Source: https://habr.com/ru/post/zh-CN461155/


All Articles