• 推荐!搬瓦工官方代理,自动更换被封IPJust My Socks

ad

建站教程(2):在Ubuntu上配置Nginx+MySQL+PHP7

本篇教程包含在Ubuntu上配置Nginx+MySQL+PHP7,针对新手,图解教程,搭建个人网站所需坏境与软件,为后期的搭建个人博客或者网站打下基础~

 

购买VPS与域名

本站目前使用的VPS

域名建议购买cn或者com的,如果需要国内备案的话,可以直接在腾讯云买,方便备案(国内的VPS域名必须备案才能使用)。

但是国内价格普遍偏贵,如果你正好不想备案或者想省钱,推荐你去NameSilo购买域名,很便宜(首年5.99刀,续费8.99刀),免费提供信息保密服务:NameSilo域名购买与DNS解析

买好自己的服务器后,可以通过Xshell通过IP和密码登录,连上去后就开始安装环境了~

 

安装Nginx

Ubutun(本教程是基于Ubuntu 16.04)安装nginx还是很简单的,就两句命令(全部root权限):

apt-get update

apt-get install nginx

install nginx

安装好后,可以访问http://xx.xx.xx.xx(或者是你的域名),如果显示下图所示结果,就说明成功了

nginx welcome

 

安装MySQL

还是很简单,一行命令:

apt-get install mysql-server

输入完之后你会被要求输入root的密码,输完之后就安装成功了:

mysql-root-password

 

安装PHP

安装命令:

apt-get install php-fpm php-mysql

 

配置Nginx使用PHP

现在我们已经安装了所有需要的软件,目前要做的是修改Nginx的配置文件来使用PHP processor来处理动态内容。

修改Nginx的server block configuration:

vim /etc/nginx/sites-available/default

打开应该是这样的:

nginx-default-config

我们需要做如下修改:

  1. 添加index.php作为我们的起始页面;
  2. 修改server_name来指向我们的域名或者是公网IP;
  3. 忽略那些以#开头的行。(原文:For the actual PHP processing, we just need to uncomment a segment of the file that handles PHP requests by removing the pound symbols (#) from in front of each line. This will be the location ~\.php$ location block, the included fastcgi-php.conf snippet, and the socket associated with php-fpm
  4. 用同样的方法忽略.htaccess文件。(原文:We will also uncomment the location block dealing with .htaccess files using the same method. Nginx doesn’t process these files. If any of these files happen to find their way into the document root, they should not be served to visitors.

所以,修改完后我们的配置文件应该是这个样子的:

nginx-default-modified

验证配置文件有没有错误:

nginx -t

如果提示OK则说明配置搞定:

nginx-t

重启Nginx:

/etc/init.d/nginx restart

 

测试PHP与Nginx有没有集成成功

添加一个info.php:(这里的 /var/www/html/ 对应配置文件中root的路径)

vim /var/www/html/info.php

内容为:

<?php 
phpinfo();

访问http://xx.xx.xx.xx/info.php(或者是你的域名),如下图所示则说明全部安装成功~

php-info

 

更多图解适合新手教程请戳:手把手教你搭建自己的个人网站~ :cowboy:

点赞
  1. leo说道:

    请问vim /etc/nginx/sites-available/default 修改完之后怎么保存并退出?

    1. leo说道:

      不好意思,知道了

    2. flyzy小站说道:

      先按 ESC,然后 :wq 退出并保存

  2. RIYI说道:

    一键安装LNMP与手动安装体现区别在哪。排除我们这些手残党。我反复调试Nginx设置。和上面评论似的的问题。折腾一天我也解决不了。我只是一个纯代码萌新,看的我头疼。但是不觉厌烦。恐是我时间不够。急于想做自己的网站。买了VPS搭了ss。很多资源都去看,看的我头疼,一个篇文章我反复看,思考。找出我问题症结。总是难以寻找。

    1. flyzy小站说道:

      一键lnmp方便点,适合新手:LNMP环境一键安装包

  3. shazam说道:

    博主,如何忽略.htaccess文件?

    1. flyzy小站说道:

      我用的Nginx,没有配置过这个

  4. elisa说道:

    root@vultr:~# apt-get install nginx
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    nginx is already the newest version (1.14.0-0ubuntu1).
    0 upgraded, 0 newly installed, 0 to remove and 66 not upgraded.
    2 not fully installed or removed.
    After this operation, 0 B of additional disk space will be used.
    Do you want to continue? [Y/n] y
    Setting up nginx-core (1.14.0-0ubuntu1) ...
    Job for nginx.service failed because the control process exited with error code.
    See "systemctl status nginx.service" and "journalctl -xe" for details.
    invoke-rc.d: initscript nginx, action "start" failed.
    ● nginx.service - A high performance web server and a reverse proxy server
    Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Tue 2018-09-18 09:38:56 UTC; 40ms ago
    Docs: man:nginx(8)
    Process: 3768 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)
    Process: 3756 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)

    Sep 18 09:38:53 vultr.guest systemd[1]: Starting A high performance web server and a reverse proxy server...
    Sep 18 09:38:53 vultr.guest nginx[3768]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    Sep 18 09:38:54 vultr.guest nginx[3768]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    Sep 18 09:38:54 vultr.guest nginx[3768]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    Sep 18 09:38:55 vultr.guest nginx[3768]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    Sep 18 09:38:55 vultr.guest nginx[3768]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    Sep 18 09:38:56 vultr.guest nginx[3768]: nginx: [emerg] still could not bind()
    Sep 18 09:38:56 vultr.guest systemd[1]: nginx.service: Control process exited, code=exited status=1
    Sep 18 09:38:56 vultr.guest systemd[1]: nginx.service: Failed with result 'exit-code'.
    Sep 18 09:38:56 vultr.guest systemd[1]: Failed to start A high performance web server and a reverse proxy server.
    dpkg: error processing package nginx-core (--configure):
    installed nginx-core package post-installation script subprocess returned error exit status 1
    dpkg: dependency problems prevent configuration of nginx:
    nginx depends on nginx-core (<< 1.14.0-0ubuntu1.1~) | nginx-full (<< 1.14.0-0ubuntu1.1~) | nginx-light (<< 1.14.0-0ubuntu1.1~) | nginx-extras (<= 1.14.0-0ubuntu1) | nginx-full (>= 1.14.0-0ubuntu1) | nginx-light (>= 1.14.0-0ubuntu1) | nginx-extras (>= 1.14.0-0ubuntu1); however:
    Package nginx-core is not configured yet.
    Package nginx-full is not installed.
    Package nginx-light is not installed.
    Package nginx-extras is not installed.

    dpkg: error processing package nginx (--configure):
    dependency problems - leaving unconfigured
    No apport report written because the error message indicates its a followup error from a previous failure.
    Errors were encountered while processing:
    nginx-core
    nginx
    E: Sub-process /usr/bin/dpkg returned an error code (1)
    大佬这是怎么回事啊

    1. flyzy小站说道:

      80端口被占用?

  5. Frank说道:

    我想问一下,如果我在安装MySQL的时候没出现输入root账户密码的 窗口,会影响到后面的MySQL与PHP的动态集成吗?哈哈,我是小白,可能问题没提明白。总之就是我在安装MySQL的时候没出现输入root账户密码,最后做完这个页面,访问不了http://**.**.**.**/info.php页面

    1. flyzy小站说道:

      访问不了info.php是你nginx没有启动成功或者没有在根目录下没有info.php这个文件(404),如果是直接下载info.php那么就是php跟nginx没有集成成功,注意修改nginx配置文件

  6. chloe说道:

    大佬,最后一步,那个添加info.php 那个内容添加到哪里啊,直接把你那段复制在下面?

    1. flyzy小站说道:

      放在你的root目录下

      1. chloe说道:

        哈,谢谢,搞定了!!

  7. 个人想学习wordpress 建站 关键还是穷 前段时间通过本站 顺利租用了vul的服务器过墙,我想问下如果要搭建个人网站是不是也可以通过那个服务器,不在租用服务器。

    1. flyzy小站说道:

      可以用一个

  8. Newcomer说道:

    请问我配置好后,从浏览器访问info.php时,没有报错但也没有任何info信息是因为什么呢,是不是info.php文件内写入的php代码和我自己vps上所安装的php版本不匹配呢?

    1. flyzy小站说道:

      你是不是没有保存文件?就算你没有解析成功,也应该有文字显示啊

  9. soul专属mm说道:

    最后验证的时候 打开http://xx.xx.xx.xx/info.php ,没有打开网页 把文件下载下来了 这是什么鬼????

    1. flyzy小站说道:

      那就是你nginx配置php的解析没有配置好,配置完重启nginx了吗?

      1. soul专属mm说道:

        已经好了 谢谢

  10. berg说道:

    老哥问一下,为什么我的按你说的弄得,但最后显示502,而不是PHP的那个界面?

    1. flyzy小站说道:

      502是服务器错误,是不是php没有安装好?或者nginx配置php解析没有配置好

      1. berg说道:

        我有按照你说的,对照了一遍你的php配置,没问题的呀!

        1. 梦secre说道:

          你的这一步解决了吗,怎么解决的

          1. flyzy小站说道:

            看下nginx的日志文件,看看什么错误

        2. 小车说道:

          我也是502,完全按照教程操作的

  11. East说道:

    安装好nginx后怎么显示那个welcome的界面额。看不懂。。 :cry:

    1. flyzy小站说道:

      直接在浏览器里输入你的域名或者ip就行了

  12. EEE说道:

    info.php. 访问是502 Bad Gateway呢

    1. flyzy小站说道:

      这个我也不清楚你问题是哪里 502是服务器的问题 你自己仔细看下哪一步做错了吧

  13. shangshen说道:

    老哥我整完了结果打开页面还是显示welcome to ngixl

    1. flyzy小站说道:

      后面加/info.php了吗

      1. shangshen说道:

        加了

        1. flyzy小站说道:

          加了怎么可能是welcome,你指向的都不是同一个文件。你把你的域名留下我试试

          1. flyzy小站说道:

            http://www.zhihuifangche.com/info.php,返回的是502 Bad Gateway。你配置有错误,自己检查

          2. shangshen说道:

            好的

  14. 说道:

    验证出现这个怎么整
    nginx: [emerg] open() "/etc/nginx/snippets/fatcgi-php.conf" failed (2: No such file or directory) in /etc/nginx/sites-enabled/default:52
    nginx: configuration file /etc/nginx/nginx.conf test failed

    1. flyzy小站说道:

      fatcgi-php?应该是fastcgi-php.conf才对啊

      1. shangshen说道:

        加了呀

  15. 说道:

    做完了这几步,输入http://xx.xx.xx.xx/info.php,(我的网站地址)显示:网站拒绝了我们的连接请求。

    1. flyzy小站说道:

      直接访问域名可以吗?
      应该是你的nginx配置有问题。用nginx -t命令检查一下

      1. 说道:

        感谢回复,我检查了没问题,我又重新输入apt-get update,显示FATAL -> Failed to fork.能不能重新安装呢,

      2. 说道:

        不知道怎么弄得,成功了 出现了最后的哪个页面

      3. 说道:

        安装MySQL的时候,出现红字 Process: 22309 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=1/FAILURE)
        Failed to start MySQL Community Server.最后显示E: Sub-process /usr/bin/dpkg returned an error code (1)
        是怎么回事?

        1. flyzy小站说道:

          这种问题你问搜索引擎比较好

  16. 某人说道:

    第6个不是很清楚 :smile:

    1. 某人说道:

      不不不是第5个 :razz:

      1. flyzy小站说道:

        修改Nginx配置文件,修改后的配置文件如第二张图所示,修改内容包括上述4点。

        1. 某人说道:

          :evil: 就是改好了怎么确定呢?

          1. flyzy小站说道:

            关注公众号flyzyz小站,回复vim编辑器使用

  17. sawyer说道:

    自己debug了一下,需要把php版本自己改一下,不然找不到路径 502错误
    在修改default那一步

    1. zbx说道:

      怎么改?

    2. daqipao说道:

      膜拜大神,我来详细解释一下怎么改 1.先用php -v 查看当前php版本号 2.在"配置nginx使用php"那一步中修改fastcgi_pass unix:/run/php/php7.0-fpm.sock;的时候,里面的php7.0修改为你的php版本就可以了,我的是php7.2,修改后记得重启nginx。 :razz:

      1. Jvren233说道:

        膜拜大神 :razz:

      2. ergrdd说道:

        感谢!

  18. 哭哭哭说道:

    购买了国内的域名,在server_name那里写了,但是IP地址的能访问,域名的不能 :cry:

    1. flyzy2005说道:

      你添加DNS解析了吗?要将你的域名解析到你的服务器ip。还有修改配置要重启nginx

  19. subtlyrabbit说道:

    老哥,一直卡在”6.测试PHP与Nginx有没有集成成功“这里 :twisted:
    一直显示Welcome to nginx!而不是那个php :lol: 怎么破?

    1. flyzy2005说道:

      你在后面加/info.php了吗

      1. subtlyrabbit说道:

        /var/www/html/是nginx.conf路径吗 :cry: 不然我好像也没找到它的路径 :cry:

        1. flyzy2005说道:

          不是的。Ubuntu系统下一般来说不需要你改动nginx.conf的。你就根据我教程里的,修改/etc/nginx/sites-available/default这个配置文件就可以了~
          /var/www/html是你nginx对应的网站根目录,也就是你放info.php的地方。说的更通俗一点,以我的网站作为例子,www.flyzy2005.com/info.php其实就是找/var/www/html文件夹下面的info.php这个文件

          1. subtlyrabbit说道:

            博主我都确认前面都一模一样没有问题但还是显示不出来 :lol: 关注了
            不过先祝您新年快乐 :cool: 初一都不忘更

  20. yukisama说道:

    :exclaim: 老哥,依据这个教程一切OK。但在安装php后,配置Nginx执行php一项,在“vim /etc/nginx/sites-available/default”这个指令行,粘贴enter的时候不小心多了一个"\",最后执行命令成了“vim /etc/nginx/sites-available/default\”,然后就完全不一样了。。怎么破?

    1. flyzy2005说道:

      运行vim /etc/nginx/sites-available/default\ 应该是让你再输接下来命令是吧? 就是提示>,你直接输入;或者ctrl+c退出该命令重新输入

      1. yukisama说道:

        :exclaim: 都木有用,好气;能有什么方法把这些删掉重新开始吗?(不摧毁服务器的前提下),因为ss还在里面

        1. flyzy2005说道:

          怎么会 你现在是卡在哪里了?微信公众号截图发给我瞅瞅

          1. yukisama说道:

            23:21已发微信截图 :symbols: