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

介绍

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

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

准备

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

第一步- 安装Nginx Web服务器

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

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

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

sudo apt-get update
sudo apt-get install nginx

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

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

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

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

或者您可以尝试使用:

curl http://icanhazip.com
111.111.111.111

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

http://server_domain_name_or_IP

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

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

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

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

sudo apt-get install mysql-server

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

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

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

sudo mysql_install_db

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

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核心文件。输入以下命令:

sudo apt-get install php5-fpm php5-mysql

配置PHP处理器

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

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

sudo nano /etc/php5/fpm/php.ini

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

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

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

cgi.fix_pathinfo=0

完成后保存并关闭文件。

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

sudo service php5-fpm restart

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

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

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

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

sudo nano /etc/nginx/sites-available/default

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

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处理器。

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

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以进行必要的更改:

sudo service nginx restart

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

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

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

sudo nano /usr/share/nginx/html/info.php

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

<?php
phpinfo();
?>

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

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

http:// server_domain_name_or_IP /info.php

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

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

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

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

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 》

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏刺客博客

Linux下使用mysqldump进行数据库备份恢复

mysqldump -uroot -proot  --databases data >1.sql

1.3K20
来自专栏刺客博客

Debian利用Aria2离线下载资源

49730
来自专栏Java帮帮-微信公众号-技术文章全总结

05.Git分支管理

05.Git分支管理 Git 分支管理 几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。...

38470
来自专栏每日一篇技术文章

weex-01-环境搭建

关于为什么学习weex,这里不做解释,相信你下载了app目的就是要学会这个跨平台框架,本系列教程着重讲解使用weex开发如何开发项目,关于底层的原理,会在教程最...

14610
来自专栏北京马哥教育

一次linux服务器被黑客入侵后的处理

场景: 周一上班centos服务器ssh不可用,web和数据库等应用不响应。好在vnc可以登录 使用last命令查询,2号之前的登录信息已被清空,并且sshd文...

43090
来自专栏前端vue

编写接口连接并查询数据库数据(二)

安装测试工具postman 不想下载软件的话可以用谷歌插件postman 这个东西是测试用的,不需要的可以不下载

1.1K10
来自专栏13blog.site

Spring+SpringMVC+MyBatis+easyUI整合基础篇(十一)SVN服务器进阶

前言 上一篇文章《Spring+SpringMVC+MyBatis+easyUI整合基础篇(十)SVN搭建》简单的讲了一下SVN服务器的搭建,并没有详细的介绍配...

329100
来自专栏idba

聊聊 5.7 error log 那些事儿

MySQL的错误日志(error log)用来记录mysqld启动和关闭过程的信息,启停slave以及死锁日志,bug,core dump 等信息。 在调研 M...

13010
来自专栏用户2442861的专栏

局域网聊天工具(可发送图片与文件)

http://blog.csdn.net/sunshinestation/article/details/4437404

99710
来自专栏雨过天晴

原 荐 IntelliJ IDEA系列编辑器

40830

扫码关注云+社区

领取腾讯云代金券