在ubuntu上手工搭建Nginx+php5+mysql(LEMP)环境

作者: 康康 分类: linux学习 发布时间: 2017-01-20 21:39

1.安装Nginx Web服务器

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

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

sudo apt-get update
sudo apt-get install nginx

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

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

如果你看到上面的页面,你已经成功安装了Nginx。

2.安装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就准备好了。

3.安装PHP进行处理

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

由于Nginx的不包含像其他一些Web服务器PHP原生处理,我们需要安装php5-fpm,它的全称是“FastCGI进程管理器”。我们将告诉Nginx将PHP请求传递给这个软件进行处理。

我们可以安装这个模块,并且还将获得一个额外的帮助包,它将允许PHP与我们的数据库后端进行通信。安装将提取必要的PHP核心文件。通过键入以下内容来执行此操作:

sudo apt-get install php5-fpm php5-mysql

配置PHP处理器

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

打开主php5-fpm具有root权限的配置文件:

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

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

4.配置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 <span class="highlight">index.php</span> index.html index.htm;

    server_name <span class="highlight">server_domain_name_or_IP</span>;

    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

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

现在,你可以通过访问您的服务器的域名或公网IP地址,随后通过在Web浏览器访问这个页面/info.php

HTTP:// server_domain_name_or_IP /info.php

您应该看到一个由PHP生成的网页,其中包含有关您的服务器的信息:

如果你看到一个类似这样的页面,你已经成功地设置了PHP处理Nginx。

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

配置开机自动启动Nginx + PHP
vi /etc/rc.local
加入以下内容:
ulimit -SHn 51200
/usr/local/php/sbin/php-fpm start
/usr/local/nginx/sbin/nginx

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注