Ubuntu 16.04 搭建LEMP环境

最近把博客所在的 VPS 升级到了 Ubuntu 16.04,正好顺手把原来使用的 Apache 换成 Nginx,把 PHP5.6 换成 PHP7.0。

安装 MariaDB

数据库属于比较独立的模块,最先安装。

以前一直使用的是 MySQL,这次打算换成 MariaDB试一下。

在 Ubuntu 上安装 MariaDB 和其他软件一样方便,直接运行 apt-get 安装就行了

sudo apt-get install mariadb-server

安装成功后,接下来需要运行初始化程序

sudo /usr/bin/mysql_secure_installation

在完成初始化后,MariaDB 就可以使用了,但是这里有一点需要注意,在新版的 MariaDB 中,出于安全考虑,数据库默认的 root 用户只能在具有系统 root 权限的程序中使用。比如你在 Ubuntu 中使用的是非 root 用户,那么当你执行 mysql -u root -p 时是无法登陆的,必须使用 sudo mysql-u root -p 才可以。也就是说普通的 PHP 程序中如果我们使用 root 账户去连接数据库中会出现错误。因此我们必须给数据库添加一个新用户。

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

然后给这个用户赋予数据库访问权限

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

最后应用权限变更

FLUSH PRIVILEGES;

这样,MariaDB就可以投入实际使用了。

安装 Nginx

同样使用 apt-get 即可方便安装

sudo apt-get install nginx

Ubuntu 上的 Nginx 和 Apache 保持了同样的 Web 文件夹路径,也在 /var/www/html/

我们在 html 下新建一个文件夹 blog ,作为博客网站的根目录,然后在 blog 下新建一个 index.html方便测试。

接下来我们需要配置 Nginx,使 blog.zhh.me 指向 blog 文件夹。

Nginx 的网站配置文件存放在 /etc/nginx/sites-available/

我们在该目录下可以看到有一个 default 文件,即默认网站的配置文件,我们可以照着它来配置其他网站。

首先复制一份

sudo cp default blog

这样我们就得到了 blog 的配置文件,我们需要改动以下几个地方

首先需要把两行监听端口配置中的 default_server 删掉

然后把 root指向 blog 文件夹

root /var/www/html/blog

最后在 server_name 中填入域名 blog.zhh.me

这样我们就完成了基础的配置,想要启用该网站配置,需要使用 ln 命令将该配置文件软链接到 /etc/nginx/sites-enabled/

ln -s /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/

在使该配置生效之前,我们可以使用 nginx -t 命令测试配置文件是否正确,如果可用的话,运行 sudo systemctl restart nginx 重启 Nginx 就可以了。

此时我们在浏览器中访问 blog.zhh.me,就会看到我们刚才新建的 index.html

安装 PHP

在 Ubuntu 16.04 中,系统源的默认 PHP 版本就是 7.0 了,所以同样直接运行 apt-get 就行了

sudo apt-get install php-fpm php-mysql

安装完成后,我们首先需要修改一下 PHP 的配置文件,需要把 /etc/php/7.0/fpm/php.ini 中的 cgi.fix_pathinfo 设置项去掉注释,并设为0

cgi.fix_pathinfo=0

这个设置项会允许服务器在找不到用户指定文件的情况下去执行一个路径相近文件,非常不安全,强烈建议关闭掉

然后重启php服务使设置生效

sudo systemctl restart php7.0-fpm

接下来,需要配置 Nginx,使其支持 PHP。

打开我们的blog配置文件,首先需要增加 index.php 文件支持,在index 项中增加 index.php

index index.php index.html index.htm index.nginx-debian.html;

然后需要设置PHP文件的处理程序

在配置信息的最后加入

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

修改完成后,应该是下面这个样子

server {
    listen 80;
    listen [::]:80;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name blog.zhh.me;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
}

最后重启Nginx使设置生效。

我们可以将 /var/www/html/blog/ 下的 index.html 改成 index.php , 来测试配置是否成功。

标签:linux / mysql / ubuntu / nginx / php / mariadb

知识共享许可协议
版权声明:本文版权属于作者 plumes,并受法律保护。
本作品采用知识共享「署名 - 非商业性使用 - 相同方式共享 3.0 未本地化版本」许可协议进行许可。