介绍
LEMP软件堆栈是一组软件,可用于服务动态网页和Web应用程序. 这是描述Linux操作系统的缩写,具有Nginx网页服务器。
在本指南中,我们将展示如何在Ubuntu 14.04服务器上安装LEMP堆栈。Ubuntu操作系统照顾第一个要求。
<$>[注] 注: LEMP Stack 可以通过在启动时添加 此脚本到其用户数据来自动安装到您的 Droplet。
前提条件
在完成本教程之前,您应该在您的服务器上拥有sudo
特权的常规非根用户帐户,您可以通过在我们的 Ubuntu 14.04初始服务器设置中完成步骤 1 到 4 来学习如何设置此类帐户。
一旦您的帐户可用,请使用该用户名登录您的服务器,您现在已经准备好开始本指南中列出的步骤。
1、安装 Nginx Web 服务器
为了向我们的网站访问者显示网页,我们将使用现代、高效的网页服务器 Nginx。
我们将获得的所有软件将直接来自Ubuntu的默认包存库,这意味着我们可以使用apt
包管理套件来完成安装。
由于这是我们第一次在这个会话中使用apt
,我们应该从更新本地包索引开始,然后我们可以安装服务器:
1sudo apt-get update
2sudo 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,一个数据库管理系统,以存储和管理我们网站的数据。
您可以通过键入轻松安装:
1sudo apt-get install mysql-server
您将被要求提供一个根(管理)密码,用于MySQL系统中使用。
MySQL 数据库软件已安装,但其配置尚未完全完成。
首先,我们需要告诉MySQL生成它需要存储其数据库和信息的目录结构,我们可以通过键入这样做:
1sudo mysql_install_db
接下来,您将想要运行一个简单的安全脚本,这将提示您修改一些不安全的默认设置。
1sudo mysql_secure_installation
您需要输入您在安装过程中选择的MySQL根密码。
接下来,它会问你是否想要更改这个密码. 如果你对你的MySQL根密码感到满意,请键入N
为不
,然后按ENTER
。之后,你将被要求删除一些测试用户和数据库。
一旦脚本已经运行,MySQL就已经准备好了。
3. 安装 PHP 来处理
现在我们安装了 Nginx 来服务我们的页面,安装了 MySQL 来存储和管理我们的数据,但我们仍然需要一些东西来连接这两个部分并生成动态内容。
由于 Nginx 不会像其他一些 Web 服务器那样包含原生 PHP 处理,所以我们需要安装「php5-fpm」,即fastCGI 流程管理器
。
我们可以安装此模块,还会获取一个额外的辅助包,允许PHP与我们的数据库后端进行通信。
1sudo apt-get install php5-fpm php5-mysql
配置 PHP 处理器
现在我们已经安装了我们的PHP组件,但我们需要进行轻微的配置更改,以使我们的设置更安全。
打开带 root 特权的主要 php5-fpm
配置文件:
1sudo nano /etc/php5/fpm/php.ini
我们在这个文件中寻找的是设置cgi.fix_pathinfo
的参数,这将用半列(;)评论并默认设置为1
。
这是一个非常不安全的设置,因为它告诉PHP尝试执行最接近的文件,如果PHP文件不准确匹配,它可以找到。
我们将通过不评论行来改变这两个条件,并将其设置为0
如下:
1cgi.fix_pathinfo=0
保存并关闭文件,当你完成。
现在,我们只需要通过键入重新启动我们的PHP处理器:
1sudo service php5-fpm restart
这将实现我们所做的变化。
配置 Nginx 以使用我们的 PHP 处理器
现在,我们已经安装了所有所需的组件,我们唯一需要做的配置更改是告诉 Nginx 使用我们的 PHP 处理器进行动态内容。
我们在服务器块级别上做这件事(服务器块类似于Apache的虚拟主机)。
1sudo 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 处理,我们将需要不评论另一部分。
您需要做的更改在下面的文本中是红色的:
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 以进行必要的更改:
1sudo service nginx restart
创建一个PHP文件来测试配置
我们还应该测试以确保 Nginx 可以正确地将.php 文件发送到我们的 PHP 处理器。
我们可以通过在我们的文档根中创建测试PHP文件来做到这一点,在文档根中打开一个名为info.php
的新文件:
1sudo nano /usr/share/nginx/html/info.php
这是有效的PHP代码,将返回有关我们的服务器的格式化信息:
1<?php
2phpinfo();
3?>
完成后,保存并关闭文件。
现在,您可以通过访问您的服务器的域名或公共IP地址来访问您的Web浏览器中的此页面,然后是/info.php
:
http://server_domain_name_or_IP/info.php
您应该看到一个由PHP生成的网页,其中包含有关您的服务器的信息:
如果你看到一个看起来像这样的页面,你已经成功地设置了PHP处理与Nginx。
测试后,最好删除您创建的文件,因为它实际上可以给未经授权的用户一些关于您的配置的提示,这可能有助于他们尝试打破。
现在,通过键入删除文件:
1sudo rm /usr/share/nginx/html/info.php
结论
您现在应该在 Ubuntu 14.04 服务器上配置一个 LEMP 堆栈,这为您提供了一个非常灵活的基础,以便为您的访问者提供网页内容。