前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu 14.04上安装Linux,Nginx,MySQL,以及PHP(LNMP)堆栈

如何在Ubuntu 14.04上安装Linux,Nginx,MySQL,以及PHP(LNMP)堆栈

原创
作者头像
大瓜皮
发布2018-08-10 15:24:13
1.1K0
发布2018-08-10 15:24:13
举报

介绍

LNMP软件堆栈是一组可用于为动态网页和Web应用程序提供服务的软件。这是一个描述Linux操作系统的首字母缩写词,带有Nginx Web服务器。后端数据存储在MySQL中,动态处理由PHP处理。

在本教程中,我们将演示如何在Ubuntu 14.04服务器上安装LNMP堆栈。Ubuntu操作系统负责第一个要求。我们将描述如何启动和运行其余组件。

准备

一台已经设置好可以使用sudo命令的非root账号的Ubuntu 14.04服务器。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。在您的帐户可用后,使用该用户名登录您的服务器。您现在已准备好开始本教程中概述的步骤。

第一步- 安装Nginx Web服务器

为了向我们的网站访问者显示网页,我们将采用现代高效的网络服务器Nginx。

我们将为此过程获得的所有软件都将直接来自Ubuntu的默认软件包存储库。这意味着我们可以使用apt软件包管理套件来完成安装。

由于这是我们第一次使用apt,我们应该从更新本地包索引开始。然后我们可以安装服务器:

代码语言:javascript
复制
sudo apt-get update
sudo apt-get install nginx

在Ubuntu 14.04中,Nginx配置为在安装时开始运行。

您可以通过在Web浏览器中访问服务器的域名或公共IP地址来测试服务器是否已启动并运行。

如果您没有指向服务器的域名,并且您不知道服务器的公共IP地址,可以通过在终端中输入以下内容之一来找到它:

代码语言:javascript
复制
ip addr show eth0 | grep inet | awk'{print $ 2; }'| sed's /\/.*$//'
代码语言:javascript
复制
111.111.111.111 
fe80 :: 601:17ff:fe61:9801

或者您可以尝试使用:

代码语言:javascript
复制
curl http://icanhazip.com
代码语言:javascript
复制
111.111.111.111

尝试使用Web浏览器中收到的其中一行。它应该指向到Nginx的默认登陆页面:

代码语言:javascript
复制
http://server_domain_name_or_IP

如果您看到上面的页面,则表示您已成功安装Nginx。

第二步- 安装MySQL以管理站点数据

现在我们有了一个Web服务器,我们需要安装MySQL,一个数据库管理系统,来存储和管理我们站点的数据。

您可以输入以下命令来安装:

代码语言:javascript
复制
sudo apt-get install mysql-server

系统将要求您提供root(管理)密码,以便在MySQL系统中使用。

现在安装了MySQL数据库软件,但其配置尚未完全完成。

首先,我们需要告诉MySQL生成存储其数据库和信息所需的目录结构。我们可以通过输入以下内容来执行:

代码语言:javascript
复制
sudo mysql_install_db

接下来,您将需要运行一个简单的安全脚本,该脚本将提示您修改一些不安全的默认值。输入以下命令开始脚本:

代码语言:javascript
复制
sudo mysql_secure_installation

您需要输入在安装期间选择的MySQL root密码。

接下来,它会询问您是否要更改该密码。如果您对MySQL root密码感到满意,请输入“N”表示否,然后单击“ENTER”。之后,系统将提示您删除一些测试用户和数据库。您应该通过这些提示点击“ENTER”以删除不安全的默认设置。

一旦脚本运行,MySQL就准备好了。

第三步- 安装PHP进行处理

现在我们已经安装了Nginx来为我们的页面和MySQL安装来存储和管理我们的数据,但是我们仍然需要一些东西来连接这两个部分并生成动态内容。在此,我们可以使用PHP。

由于Nginx不像其他一些Web服务器那样包含原生PHP处理,因此我们需要安装php5-fpm,即“fastCGI进程管理器”。我们会告诉Nginx将PHP请求传递给该软件进行处理。

我们可以安装这个模块,并且还将获取一个额外的帮助程序包,可允许PHP与我们的数据库后端进行通信。安装将引入必要的PHP核心文件。输入以下命令:

代码语言:javascript
复制
sudo apt-get install php5-fpm php5-mysql

配置PHP处理器

我们现在已经安装了PHP组件,但是我们需要进行轻微的配置更改以使我们的设置更安全。

使用root权限打开php5-fpm主配置文件:

代码语言:javascript
复制
sudo nano /etc/php5/fpm/php.ini

我们在这个文件中寻找的是设置的参数cgi.fix_pathinfo。它会用分号(;)注释,且默认设置为“1”。

这是一个非常不安全的设置,因为如果PHP文件不完全匹配它告诉PHP尝试执行它可以找到的最接近的文件。这基本上允许用户以允许他们执行不应该被允许执行的脚本的方式来创建PHP请求。

我们将通过取消注释该行并将其设置为“0”来更改这两个条件,如下所示:

代码语言:javascript
复制
cgi.fix_pathinfo=0

完成后保存并关闭文件。

现在,我们只需输入以下命令重新启动PHP处理器:

代码语言:javascript
复制
sudo service php5-fpm restart

这将实现我们所做的改变。

第四步- 配置Nginx以使用我们的PHP处理器

现在,我们已经安装了所有必需的组件。我们仍然需要做的唯一配置更改是告诉Nginx将我们的PHP处理器用于动态内容。

我们在服务器块级别执行此操作(服务器块类似于Apache的虚拟主机)。输入以下命令,打开默认的Nginx服务器块配置文件:

代码语言:javascript
复制
sudo nano /etc/nginx/sites-available/default

目前,删除注释后,Nginx默认服务器块文件将如下所示:

代码语言:javascript
复制
server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only = on;
​
​
    root / usr / share / nginx / html;
    index index.html index.htm;
​
 
    server_name localhost;
​
​
    location / {
        try_files $ uri $ uri / = 404;
    }
}
​

我们需要为我们的网站对此文件进行一些更改。

  • 首先,我们需要添加一个index.php选项作为我们index指令的第一个值,以允许在请求目录时提供PHP索引文件。
  • 我们还需要修改server_name指令以指向我们服务器的域名或公共IP地址。
  • 实际配置文件包括一些注释掉的行,用于定义错误处理例程。我们将取消注释以包含该功能。
  • 对于实际的PHP处理,我们需要取消注释另一段的一部分。我们还需要添加一个try_files指令来确保Nginx不会将错误请求传递给我们的PHP处理器。

您需要进行的更改如下面的文本所示:

代码语言:javascript
复制
server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only = on;
​
​
    root / usr / share / nginx / html;
    index index.php index.html index.htm;
​
 
    server_name server_domain_name_or_IP ;
​
 
    location / {
        try_files $ uri $ uri / = 404;
    }
​
 
    error_page 404 /404.html; 
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
        root / usr / share / nginx / html; 
    }
​
 
    location ~\.php$ { 
        try_files $ uri = 404; 
        fastcgi_split_path_info ^(。+ \。php)(/。+)$; 
        fastcgi_pass unix:/var/run/php5-fpm.sock; 
        fastcgi_index index.php; 
        fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; 
        include fastcgi_params;
    }
}
​

完成上述更改后,您可以保存并关闭该文件。

重新启动Nginx以进行必要的更改:

代码语言:javascript
复制
sudo service nginx restart

第五步- 创建PHP文件以测试配置

现在您的LNMP堆栈应该已设置好。我们仍然应该测试以确保Nginx可以正确地将.php文件传递给我们的PHP处理器。

我们可以通过在文档根目录中创建测试PHP文件来完成此操作。在文本编辑器中打开文档根目录中调用的新文件info.php

代码语言:javascript
复制
sudo nano /usr/share/nginx/html/info.php

我们可以在新文件中输入以下指令。这是有效的PHP代码,它将返回有关我们服务器的格式化信息:

代码语言:javascript
复制
<?php
phpinfo();
?>

完成后,保存并关闭文件。

现在,您可以通过访问/info.php内的服务器的域名或公共IP地址在Web浏览器中访问此页面:

代码语言:javascript
复制
http:// server_domain_name_or_IP /info.php

您将看到PHP生成的网页,其中包含有关您的服务器信息:

如果您看到一个看起来像这样的页面,那么您已成功使用Nginx设置PHP处理。

在对此进行测试之后,最好删除您创建的文件,因为它实际上可以为未经授权的用户提供有关您的配置的一些提示,这些提示可能有会帮助他们入侵您的系统。如果您以后需要,可以随时重新生成此文件。

现在,输入以下命令删除文件:

代码语言:javascript
复制
sudo rm /usr/share/nginx/html/info.php

结论

您现在应该在Ubuntu 14.04服务器上配置LNMP堆栈。这为您给访问者提供Web内容给予了非常灵活的基础。如果您在生产环境使用,我还是建议您直接使用云关系型数据库,云关系型数据库让您在云中轻松部署、管理和扩展的关系型数据库,提供安全可靠、伸缩灵活的按需云数据库服务。腾讯云关系型数据库提供 MySQL、SQL Server、MariaDB、PostgreSQL 数据库引擎,并针对数据库引擎的性能进行了优化。云关系型数据库是一种高度可用的托管服务,提供容灾、备份、恢复、监控、迁移等数据库运维全套解决方案,可将您从耗时的数据库管理任务中解放出来,让您有更多时间专注于您的应用和业务。

更多Linux教程请前往腾讯云+社区学习更多知识。


参考文献:《How To Install Linux, Nginx, MySQL, PHP (LNMP) stack on Ubuntu 14.04 》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 第一步- 安装Nginx Web服务器
  • 第二步- 安装MySQL以管理站点数据
  • 第三步- 安装PHP进行处理
    • 配置PHP处理器
    • 第四步- 配置Nginx以使用我们的PHP处理器
    • 第五步- 创建PHP文件以测试配置
    • 结论
    相关产品与服务
    云数据库 SQL Server
    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档