Debian8 Jessie安装LNMP架构(Nginx, MariaDB, PHP7)

LNMP是一组用于搭建网站的开源软件。LNMP代表Linux操作系统、Ngnix HTTP服务器(发音为Engine X)、MySQL/MariaDB数据库和PHP。在这篇教程中,我将介绍如何在Debian 8 服务器上安装LNMP。数据库选择MariaDB, 并安装最新的PHP7. 以下命令在Debian服务器上执行。

安装Nginx

相对于Apache,Nginx是一个轻量级的高性能web服务器并在近年来越来越流行。Nginx也可以同时作为一个反向代理。在Debian8上安装Nginx, 输入下面的命令。

sudo apt-get install nginx -y

安装完成后,Nginx会自动运行。

$ sudo service nginx status
[ ok ] nginx is running.

查看Nginx版本

$ nginx -v
nginx version: nginx/1.6.2

在浏览器地址栏中输入Debian服务器的IP, 回车。如果你看到下面的文字,说明Nginx正确地安装好了。

Nginx on Debian

你可以使用下面的命令查看服务器的IP。

curl http://icanhazip.com

安装MariaDB

MariaDB是MySQL的一个替代品。使用下面的命令安装:

sudo apt-get install -y mariadb-server mariadb-client

在安装过程中会要求你为MariaDB root用户设置一个密码。输入密码后按回车。记住,MariaDB root用户是数据库的管理员,与Linux的root用户是不同的。

MariaDB root用户密码

再次输入密码并回车。

MariaDB root密码

查看MariaDB版本

$ mysql --version
mysql Ver 15.1 Distrib 10.0.22-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

运行安全脚本

sudo mysql_secure_installation

输入MariaDB root用户密码。当它问你是否要更改root密码时,选择n. 然后你可以一路按回车键来回答其他所有的问题。

MariaDB数据库安装完成。

安装PHP7

在/etc/apt/sources.list文件中添加下面两行文字以安装dotdeb.org软件源。

deb http://packages.dotdeb.org jessie all
deb-src http://packages.dotdeb.org jessie all

下载并安装GnuPG key

wget https://www.dotdeb.org/dotdeb.gpg

sudo apt-key add dotdeb.gpg

更新本地软件包索引并安装PHP7

sudo apt-get update

sudo apt-get install php7.0-fpm php7.0-mysql php7.0-common php7.0-gd php7.0-json php7.0-cli php7.0-curl

配置PHP7

编辑php.ini文件

sudo vi /etc/php/7.0/fpm/php.ini

找到如下一行

;cgi.fix_pathinfo=1

去掉前面的分号,并将1改为0

cgi.fix_pathinfo=0

保存文件后重启php7.0-fpm

sudo service php7.0-fpm restart

配置Nginx Virtual Host

/etc/nginx/sites-available目录下创建一个新的virtual host配置文件

sudo vi /etc/nginx/sites-available/yourdomain.conf

将yourdomain替换成你实际的域名。然后在文件中添加下面的配置。

server {
listen 80;
server_name yourdoman.com www.yourdomain.com;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;

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

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;

location = /50x.html {
root /var/www/html;
}

location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

注意,上面第4行 root /var/www/html; 中的root是指网站的根目录,而不是指Linux系统的root用户。

保存文件后,创建一个软链接。

sudo ln -s /etc/nginx/sites-available/yourdomain.conf /etc/nginx/sites-enabled/yourdomain.conf

测试Nginx配置

sudo nginx -t

测试成功:

 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
 nginx: configuration file /etc/nginx/nginx.conf test is successful

重新加载Nginx配置

sudo service nginx reload

/var/www/html目录的所有者更改为Nginx用户www-data

sudo chown www-data:www-data /var/www/* -R

测试PHP

在/var/www/html/目录下新建一个文件info.php

sudo vi /var/www/html/info.php

将下面的内容粘贴到info.php文件中。

<?php
   phpinfo();
?>

保存文件。然后在浏览器的地址栏输入下面的地址。

yourdomain.com/info.php

用你的实际域名替换yourdomain.com. 如果你看见下面的文字,说明PHP运行正常。

LNMP PHP测试

请确保你已经为你的域名设置好了一个A记录。

info.php文件只是用于测试的。为了安全起见,你可以删除它。好了!现在你应该成功地在Debian 8 Jessie上搭建好了LNMP.

502 Bad Gateway

如果你在测试PHP时网页显示502 Bad Gateway错误。那么很有可能是nginx服务器fastcgi_pass的值与PHP www.conf文件中 listen的值不一致造成的。

打开你的virtual host文件。

sudo vi /etc/nginx/sites-available/yourdomain.conf

查看fastcgi_pass的值。

nginx fastcgi_pass

再打开php的www.conf文件。

sudo vi /etc/php/7.0/fpm/pool.d/www.conf

php listen

找到文件中的listen这一行,我们需要让nginx fastcgi_pass的值与php listen的值一致。修改完后重启nginx进程和php-fpm进程,这时502 bad gateway错误应该就解决了,可以正常打开网页了。

另外/run/php/php7.0-dpm.sock文件的所有者要与nginx进程用户www-data一致.

ls /run/php/php7.0-fpm.sock -lh
srw-rw---- 1 www-data www-data 0 Mar 19 03:31 /run/php/php7.0-fpm.sock
为这篇文章评分
[Total: 8 Average: 4.6]

16 Responses to “Debian8 Jessie安装LNMP架构(Nginx, MariaDB, PHP7)

  • 想问一下debian7怎么安装php7

  • 浮生萧条
    8 years ago

    测试nginx配置的时候报错
    nginx: [emerg] open() “/etc/nginx/fastcgi_param” failed (2: No such file or directory) in /etc/nginx/sites-enabled/default:67

    “青椒”解决方法

    • /etc/nginx/fastcgi_param这个文件被删除了? 新建一个。以下是原文件内容。

      fastcgi_param QUERY_STRING $query_string;
      fastcgi_param REQUEST_METHOD $request_method;
      fastcgi_param CONTENT_TYPE $content_type;
      fastcgi_param CONTENT_LENGTH $content_length;

      fastcgi_param SCRIPT_NAME $fastcgi_script_name;
      fastcgi_param REQUEST_URI $request_uri;
      fastcgi_param DOCUMENT_URI $document_uri;
      fastcgi_param DOCUMENT_ROOT $document_root;
      fastcgi_param SERVER_PROTOCOL $server_protocol;
      fastcgi_param REQUEST_SCHEME $scheme;
      fastcgi_param HTTPS $https if_not_empty;

      fastcgi_param GATEWAY_INTERFACE CGI/1.1;
      fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

      fastcgi_param REMOTE_ADDR $remote_addr;
      fastcgi_param REMOTE_PORT $remote_port;
      fastcgi_param SERVER_ADDR $server_addr;
      fastcgi_param SERVER_PORT $server_port;
      fastcgi_param SERVER_NAME $server_name;

      # PHP only, required if PHP was built with –enable-force-cgi-redirect
      fastcgi_param REDIRECT_STATUS 200;

      • 浮生萧条
        8 years ago

        这个文件夹下有个fastcgi_params文件,文件名多个s
        可以用这个文件么?

        • 可以。

          可能是你的vritual host配置文件中漏掉了 s 。

          倒数第三行。

          include fastcgi_params;

  • 您好。。所有东西都安装过一遍了没有报错,但是进入我的页面的时候直接找不到dns地址…

    • 这个需要你在域名注册商那里添加域名A记录。

      比如
      A @ 12.34.56.78
      A www 12.34.56.78


      • 这个地方我忽略了。。
        在域名商那边该怎么添加
        例如我已经在万网那里买了一个域名

        • A记录的作用是将域名解析为 IP 地址,一般网站需要添加两个A记录。一个是@,另外一个是www。

          @符号表示二级域名为空,例如 linuxdashen.com,将它的值设为你服务器的 IP。
          www表示二级域名是www,例如www.linuxdashen.com 同样将它的值设为你服务器的 IP。

          我用了CloudFlare的CDN服务,具体设置步骤跟万网会有所不同,但原理是一样的。

        • 老咩
          8 years ago

          好我找找

        • 老咩
          8 years ago

          神tm起作用了
          现在我的整个lnmp完成了
          谢谢大神
          不过disqus是什么呢
          好像好多人都在用

        • disqus是一个评论系统,很方便站长和评论者之间保持联系。很多CMS都可以安装disqus。

        • 老咩
          8 years ago

          …大哥
          服务器uri该怎么看
          我现在发现我登不进db了QwQ

        • 登录MariaDB: mysql -u root -p

        • 老咩
          8 years ago

          卧槽大神
          谢谢大神

Leave a Reply

Your email address will not be published.

The maximum upload file size: 2 MB. You can upload: image, audio, video, document, spreadsheet, interactive, text, archive, code, other. Links to YouTube, Facebook, Twitter and other services inserted in the comment text will be automatically embedded. Drop file here