本文逐步讲解如何在 Azure 中的 Ubuntu VM 上部署 NGINX Web 服务器、MySQL 和 PHP(LEMP 堆栈)。 LEMP 堆栈可以替代常用的 LAMP 堆栈,可安装在 Azure 中。 若要了解 LEMP 服务器的运作情况,可以选择性地安装并配置 WordPress 站点。 本教程介绍如何执行下列操作:

  • 创建 Ubuntu VM(LEMP 堆栈中的“L”)
  • 为 Web 流量打开端口 80
  • 安装 NGINX、MySQL 和 PHP
  • 验证安装和配置
  • 在 LEMP 服务器上安装 WordPress

Note

在 Azure 中国区使用 Azure CLI 2.0 之前,请先运行 az cloud set -n AzureChinaCloud 来改变云环境。如果想切回国际版 Azure,请再次运行 az cloud set -n AzureCloud

如果选择在本地安装并使用 CLI,本教程要求运行 Azure CLI 2.0.4 或更高版本。 运行 az --version 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI 2.0

创建资源组

使用 az group create 命令创建资源组。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。

以下示例在“中国北部”位置创建名为“myResourceGroup”的资源组。

cli复制
az group create --name myResourceGroup --location "China North"

创建虚拟机

使用 az vm create 命令创建 VM。

下面的示例创建一个名为 myVM 的 VM,并且在默认密钥位置中不存在 SSH 密钥时创建这些密钥。 若要使用特定的一组密钥,请使用 --ssh-key-value 选项。

cli复制
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image UbuntuLTS \
--admin-username azureuser \
--generate-ssh-keys

创建 VM 后,Azure CLI 显示类似于以下示例的信息。 记下 publicIpAddress。 此地址用于访问 VM。

cli复制
{
"fqdns": "",
"id": "/subscriptions/<subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
"location": "China North",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.0.0.4",
"publicIpAddress": "40.68.254.142",
"resourceGroup": "myResourceGroup"
}

为 Web 流量打开端口 80

默认情况下,仅允许通过 SSH 连接登录到 Azure 中部署的 Linux VM。 由于此 VM 将用作 Web 服务器,因此需要从 Internet 打开端口 80。 使用 az vm open-port 命令打开所需端口。

cli复制
az vm open-port --port 80 --resource-group myResourceGroup --name myVM

通过 SSH 连接到 VM

如果还不知道 VM 的公共 IP 地址,请运行 az network public-ip list 命令:

cli复制
az network public-ip list --resource-group myResourceGroup --query [].ipAddress

使用以下命令创建与虚拟机的 SSH 会话。 替换为虚拟机的相应公共 IP 地址。 在此示例中,IP 地址为 40.68.254.142

bash复制
ssh azureuser@40.68.254.142

安装 NGINX、MySQL 和 PHP

运行以下命令更新 Ubuntu 包源并安装 NGINX、MySQL 和 PHP。

bash复制
sudo apt update && sudo apt install nginx mysql-server php-mysql php php-fpm

系统会提示安装包和其他依赖项。 出现提示时,请为 MySQL 设置 root 密码,并按 [Enter] 继续。 遵照剩余的提示操作。 此股从会安装最低要求的 PHP 扩展,这些扩展是通过 MySQL 使用 PHP 所必需的。

验证安装和配置

NGINX

使用以下命令检查 NGINX 版本:

bash复制
nginx -v

安装 NGINX 并向 VM 打开端口 80 以后,即可通过 Internet 访问 Web 服务器。 若要查看 NGINX 欢迎页,请打开 Web 浏览器并输入 VM 的公共 IP 地址。 使用通过 SSH 连接到 VM 时所用的公共 IP 地址:

MySQL

使用以下命令检查 MySQL 版本(请注意大写的 V 参数):

bash复制
mysql -V

建议运行以下脚本来帮助保护 MySQL 的安装:

bash复制
mysql_secure_installation

输入 MySQL root 密码,并配置环境的安全设置。

如果想要创建 MySQL 数据库,请添加用户或更改配置设置,并登录到 MySQL:

bash复制
mysql -u root -p

完成后,键入 \q 退出 mysql 提示符。

PHP

使用以下命令检查 PHP 版本:

bash复制
php -v

配置 NGINX 以使用 PHP FastCGI Process Manager (PHP-FPM)。 运行以下命令备份原始 NGINX 服务器块配置文件,并在所选的编辑器中编辑原始文件:

bash复制
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default_backup

sudo sensible-editor /etc/nginx/sites-available/default

在编辑器中,将 /etc/nginx/sites-available/default 的内容替换为以下内容。 请参阅注释了解设置说明。 用自己 VM 的公共 IP 地址替换 yourPublicIPAddress,并保留其余设置。 然后保存文件。

复制
server {
listen 80 default_server;
listen [::]:80 default_server; root /var/www/html;
# Homepage of website is index.php
index index.php; server_name yourPublicIPAddress; location / {
try_files $uri $uri/ =404;
} # Include FastCGI configuration for NGINX
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}

检查 NGINX 配置中的语法错误:

bash复制
sudo nginx -t

如果语法正确,请使用以下命令重启 NGINX:

bash复制
sudo service nginx restart

如果想要进一步测试,请创建一个可在浏览器中查看的快速 PHP 信息页。 以下命令创建 PHP 信息页:

bash复制
sudo sh -c 'echo "<?php phpinfo(); ?>" > /var/www/html/info.php'

现在,可以检查创建的 PHP 信息页。 打开浏览器并转到 http://yourPublicIPAddress/info.php。 替换 VM 的公共 IP 地址。 应如下图所示。

安装 WordPress

若要尝试堆栈,请安装示例应用。 例如,以下步骤安装用于创建网站和博客的开源 WordPress 平台。 其他可尝试的工作负荷包括 Drupal 和 Moodle

此 WordPress 设置适用于概念证明。 有关生产安装的详细信息和设置,请参阅 WordPress 文档

安装 WordPress 包

运行以下命令:

bash复制
sudo apt install wordpress

配置 WordPress

将 WordPress 配置为使用 MySQL 和 PHP。 运行以下命令,打开所选文本编辑器并创建文件 /etc/wordpress/config-localhost.php

bash复制
sudo sensible-editor /etc/wordpress/config-localhost.php

将以下行复制到文件中,并将 yourPassword 替换为自己的数据库密码(其他值不变)。 然后保存文件。

PHP复制
<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'yourPassword');
define('DB_HOST', 'localhost');
define('WP_CONTENT_DIR', '/usr/share/wordpress/wp-content');
?>

在工作目录中创建文本文件 wordpress.sql,以便配置 WordPress 数据库:

bash复制
sudo sensible-editor wordpress.sql

添加以下命令,将 yourPassword 替换为自己的数据库密码(其他值不变)。 然后保存文件。

SQL复制
CREATE DATABASE wordpress;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER
ON wordpress.*
TO wordpress@localhost
IDENTIFIED BY 'yourPassword';
FLUSH PRIVILEGES;

若要创建数据库,请运行以下命令:

bash复制
cat wordpress.sql | sudo mysql --defaults-extra-file=/etc/mysql/debian.cnf

该命令完成后,请删除文件 wordpress.sql

将 WordPress 安装移至 Web 服务器文档根目录:

bash复制
sudo ln -s /usr/share/wordpress /var/www/html/wordpress

sudo mv /etc/wordpress/config-localhost.php /etc/wordpress/config-default.php

现在可以完成 WordPress 设置并在平台上进行发布了。 打开浏览器并转到 http://yourPublicIPAddress/wordpress。 替换 VM 的公共 IP 地址。 应如下图所示。

后续步骤

本教程在 Azure 中部署了一台 LEMP 服务器。 你已了解如何:

  • 创建 Ubuntu VM
  • 为 Web 流量打开端口 80
  • 安装 NGINX、MySQL 和 PHP
  • 验证安装和配置
  • 在 LEMP 堆栈上安装 WordPress

转到下一教程,了解如何使用 SSL 证书保护 Web 服务器。

使用 SSL 保护 Web 服务器

立即访问http://market.azure.cn

在 Azure VM 上安装 LEMP Web 服务器的更多相关文章

  1. 在 Azure VM 上安装 LAMP Web 服务器

    本文逐步讲解如何在 Azure 中的 Ubuntu VM 上部署 Apache Web 服务器.MySQL 和 PHP(LAMP 堆栈). 如果想要部署 NGINX Web 服务器,请参阅 LEMP ...

  2. 如何在Ubuntu 16.04上安装Apache Web服务器

    转载自:https://www.howtoing.com/how-to-install-the-apache-web-server-on-ubuntu-16-04 介绍 Apache HTTP服务器是 ...

  3. 如何在Ubuntu 18.04上安装Apache Web服务器

    一. apt库安装 1.在终端输入更新检查命令,sudo apt-get update 2. 在更新完成后(如果不想检查更新,也可直接输入此步)输入:sudo apt-get install apac ...

  4. 在 Linux 中安装 Lighttpd Web 服务器

    Lighttpd 是一款开源 Web 服务器软件.Lighttpd 安全快速,符合行业标准,适配性强并且针对高配置环境进行了优化.相对于其它的 Web 服务器而言,Lighttpd 占用内存更少:因其 ...

  5. 在 Ubuntu 16.04 上安装 LEMP 环境之图文向导

    导读 LEMP 是个缩写,代表一组软件包(注解 ① L:Linux OS,E:Nginx 网络服务器,M:MySQL/MariaDB 数据库和 P:PHP 服务端动态编程语言),它被用来搭建动态的网络 ...

  6. linux上安装配置samba服务器

    linux上安装配置samba服务器 在linux上安装配置samba服务器 在这给大家介绍一个不错的家伙,samba服务.如果您正在犯愁,如何在Windows和Linux之间实现资源共享,就请看看这 ...

  7. Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关

    什么是Jexus Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关,以支持ASP.NET.ASP.NET CORE.PHP为特色,同时具备反向代理.入侵检测等重要功能.可以这样说,J ...

  8. 3.在vm上安装centos 7

    在vm上安装centos 7 1.文件 → 新建虚拟机 3.选择安装Linux系统 4. 虚拟机命名,并选择安装的文件夹 5.选择分配的处理器 6.使用网络地址转换 7.默写选项 9.新建虚拟机 10 ...

  9. Linux系统上安装软件(ftp服务器)

    一:安装ftp服务器 在安装linux系统的时候,自定义软件包安装时,我已经勾选了ftp服务器,所以已经 安装过了,如果没有勾选,需要额外下载ftp的安装包,进行安装. ftp服务器搭建过程中遇到的问 ...

随机推荐

  1. sql_auoload_regiester() 解释(转载)

    在了解这个函数之前先来看另一个函数:__autoload. 一.__autoload 这是一个自动加载函数,在PHP5中,当我们实例化一个未定义的类时,就会触发此函数.看下面例子: 运行index.P ...

  2. 【优化】JSON.stringify()使用优化

    JSON.stringify 有性能的问题,移动端尤其明显.下面我们来看看如何优化. 原始写法: function store(key, val) { localStorage.setItem(key ...

  3. 【数组】Missing Number

    题目: Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is mi ...

  4. Javac语法糖之Enum类

    枚举类在Javac中是被当作类来看待的. An enum type is implicitly final unless it contains at least one enum constant ...

  5. centos 关闭selinux 临时关闭selinux 报错 setenforce: setenforce() failed

    关闭selinux的方法有两种:临时关闭和永久关闭. 查看selinux的状态:estatus [root@--- ~]# sestatus SELinux status: enabled SELin ...

  6. springweb flux 编程模型

    Spring WebFlux 编程模型是在spring5.0开始,springbot2.0版本设计出来的新的一种反应式变成模型.它脱胎于reactor模式,是java nio 异步编程模型. 传统一般 ...

  7. springcloud-05-ribbon中不使用eureka

    ribbon在有eureka的情况下, 可以不使用eureka, 挺简单, 直接上代码 application.xml server: port: spring: # 设置eureka中注册的名称, ...

  8. prometheus安装、使用

    本文主要参考https://songjiayang.gitbooks.io/prometheus/introduction/what.html 二进制包安装 我们可以到 Prometheus 二进制下 ...

  9. juqery dragsort使用遇到的问题

    1.destroy时,没给容器加id,不能执行成功--->修改源码如下: if (options == "destroy") { $(this).trigger(" ...

  10. 国际化实现之基于jquery

    jQuery.i18n.properties是一款轻量级的jQuery国际化插件,能实现Web前端的国际化. jQuery.i18n.properties 采用 .properties 文件对 Jav ...