斐讯K3路由器搭建网站:Nginx+PHP7配置

  • 2017-08-20
  • 2,424
  • 14
  • 2

更新 2017.8.20,2018.4.12 网友批评的是,更新了一些设置细节

家用路由器一般一年到头24小时开机,除了发射WiFi,还能当网站服务器!!!他是一台可定制的Linux系统,网站搭建在本地而不是云端,心里更加踏实~

产品:斐讯K3路由器

系统:Openwrt 斐讯官方改版系统(ROOT权限)

要求:电信公网IP(非必要条件),路由器已刷固件


安装WEB基础环境

由于固件自带Apache软件好像属于系统文件只读不能修改,固安装nginx来配合php,


root@LEDE:~# opkg update
root@LEDE:~# opkg install nginx
[K3 /tmp]# opkg install nginx
Installing nginx (1.12.1-1) to root...
Downloading http://pkg.entware.net/binaries/armv7/nginx_1.12.1-1_armv7soft.ipk
Installing libc (2.23-6) to root...
Downloading http://pkg.entware.net/binaries/armv7/libc_2.23-6_armv7soft.ipk
Installing libgcc (6.3.0-6) to root...
Downloading http://pkg.entware.net/binaries/armv7/libgcc_6.3.0-6_armv7soft.ipk
Installing libssp (6.3.0-6) to root...
Downloading http://pkg.entware.net/binaries/armv7/libssp_6.3.0-6_armv7soft.ipk
Installing librt (2.23-6) to root...
Downloading http://pkg.entware.net/binaries/armv7/librt_2.23-6_armv7soft.ipk
Installing libpthread (2.23-6) to root...
Downloading http://pkg.entware.net/binaries/armv7/libpthread_2.23-6_armv7soft.ipk
Installing libpcre (8.41-2) to root...
Downloading http://pkg.entware.net/binaries/armv7/libpcre_8.41-2_armv7soft.ipk
Installing libopenssl (1.0.2n-1) to root...
Downloading http://pkg.entware.net/binaries/armv7/libopenssl_1.0.2n-1_armv7soft.ipk
Installing zlib (1.2.11-1) to root...
Downloading http://pkg.entware.net/binaries/armv7/zlib_1.2.11-1_armv7soft.ipk
Installing liblua (5.1.5-1) to root...
Downloading http://pkg.entware.net/binaries/armv7/liblua_5.1.5-1_armv7soft.ipk
Configuring libgcc.
Configuring libc.
Configuring libpthread.
Configuring libssp.
Configuring librt.
Configuring libpcre.
Configuring liblua.
Configuring zlib.
Configuring libopenssl.
Configuring nginx.

输入nginx启动命令,报错:

nginx: [emerg] getgrnam("nobody") failed in /opt/etc/nginx/nginx.conf:2

getgrnam是“获取组名”的简称。总之,错误告诉我们组名“nobody”不存在,你可以看看:

root@LEDE:~# cat /etc/group

没有看到以“ nobody::” 开头的行,这就是发生错误的原因。。文件内只包含并列出了root::的用户组,不考虑其他因素就用它来帮助启动nginx吧,通过以下方式编辑nginx配置:

$ vi /opt/etc/nginx/nginx.conf 并更改该行:

user  nobody;
修改为
user  admin root;

然而继续报错:

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

 

我们要避开openwrt路由器自带的80端口已经被路由器管理页占用,重启命令启动,无任何提示,但是你打开http://192.168.99.99:81服务已经可用了.:

root@LEDE:~# /opt/etc/nginx/nginx.conf
server {                                                                  
        listen       81;

安装PHP:

root@LEDE:~# opkg install php7 php7-cgi
Installing php7 (7.1.12-3) to root...
Downloading http://pkg.entware.net/binaries/armv7/php7_7.1.12-3_armv7soft.ipk
Installing libxml2 (2.9.7-1) to root...
Downloading http://pkg.entware.net/binaries/armv7/libxml2_2.9.7-1_armv7soft.ipk
Installing php7-cgi (7.1.12-3) to root...
Downloading http://pkg.entware.net/binaries/armv7/php7-cgi_7.1.12-3_armv7soft.ipk
Installing libstdcpp (6.3.0-6) to root...
Downloading http://pkg.entware.net/binaries/armv7/libstdcpp_6.3.0-6_armv7soft.ipk
Configuring libxml2.
Configuring php7.
Configuring libstdcpp.
Configuring php7-cgi.

接下来测试PHP是否安装成功:

root@LEDE:~# wget https://waylee.net/wp-content/uploads/2017/08/test.tar -O test.php

浏览器浏览php网页提示下载php,将下面文件注释#去掉,红色字改成默认网站目录

root@LEDE:~# vi /opt/etc/nginx/nginx.conf
        location ~ \.php$ {                                                   
            root           /opt/share/nginx/html;                             
            fastcgi_pass   127.0.0.1:9000;                                    
            fastcgi_index  index.php;                                         
            fastcgi_param  SCRIPT_FILENAME  /opt/share/nginx/html$fastcgi_script_name;
            include        fastcgi_params;                                            
        }   

重启nginx,直接提示404错误的报错:原来我忘记安装了spawn-fcgi执行命令:

root@LEDE: spawn-fcgi -a 127.0.0.1 -p 9000 -C 2 -f  php-cgi

现在php应该服务没啥问题,但是提示:No input file specified.无输出啊??

root@LEDE: /opt/etc/php.ini
doc_root = "/opt/share/www" 
修改为
doc_root = " /opt/share/nginx/html"

准备再启动一次spwan-fcgi报错,具体错误如下:

root@LEDE: spawn-fcgi -a 127.0.0.1 -p 9000 -C 2 -f  php-cgi
spawn-fcgi: child exited with: 2
我加入-n参数,显示详细错误:
root@LEDE: spawn-fcgi -a 127.0.0.1 -p 9000 -C 2 -f  php-cgi -n
spawn-fcgi: exec failed: No such file or directory

原来是找不到目录,执行:查找命令

root@LEDE:find / -name php*
/tmp/media/nand/opt/lib/upgrade/keep.d/php7
/tmp/media/nand/opt/lib/opkg/info/php7-cgi.list
/tmp/media/nand/opt/lib/opkg/info/php7-cgi.control
/tmp/media/nand/opt/lib/opkg/info/php7.list
/tmp/media/nand/opt/lib/opkg/info/php7.control
/tmp/media/nand/opt/lib/opkg/info/php7.conffiles
/tmp/media/nand/opt/etc/php.ini
/tmp/media/nand/opt/bin/php-fcgi
/tmp/media/nand/opt/bin/php-cgi
正确命令:
root@LEDE: spawn-fcgi -a 127.0.0.1 -p 9000 -C 2 -f  /tmp/media/nand/opt/bin/php-cgi -n

打开浏览器输入:http://服务器IP地址/test.php

上传网页程序到路由器吧~:

使用frp穿透内外,绑定域名,演示地址:http://diygu.com/test.php

有任何疏漏欢迎网友指出。

评论

  • 用户屏蔽回复
    Google Chrome 55 Google Chrome 55 Windows 7 Windows 7

    顶顶顶顶顶顶顶顶顶

  • 少少离家回复
    UC Browser 11 UC Browser 11 Android 7.0 Android 7.0

    兄弟 我也搞了个k3 问下k3怎么才能shell 我在百度找不到k3的教程 要看到给我发个联系 谢谢了QQ315878969

    • Waylee回复
      Google Chrome 63 Google Chrome 63 Windows 10 Windows 10

      推荐一个强大的路由器论坛,恩山论坛.我就是靠看他学习的.

  • 休闲鞋回复
    Google Chrome 55 Google Chrome 55 Windows XP Windows XP

    瞎折腾,步骤都不全,你是复制别人的内容吧

    • Waylee回复
      MIUI Browser 9 MIUI Browser 9 Android 6.0.1 Android 6.0.1

      哪里不全呢,安装个php坏境。。。两个命令修改个配置文件就行了

    • Waylee回复
      MIUI Browser 9 MIUI Browser 9 Android 6.0.1 Android 6.0.1

      仔细看了一下,的确写的太简单了。
      当时瞎折腾,写的很潦草。只是当笔记。

  • 啊图啦回复
    Maxthon 5 Maxthon 5 Windows 7 Windows 7

    兄弟 加我QQ4723571 帮我远程设置下 行吗?弄好后给你点辛苦费······

  • biancheng回复
    Google Chrome 55 Google Chrome 55 Windows 7 Windows 7

    博主现在还在用K3当服务器吗?感觉速度挺快的,家里万恶的电信光猫自动拨号,无超级密码、无法端口映射,搞不通……

    • Waylee回复
      Firefox 57 Firefox 57 Windows 10 Windows 10

      告诉你一个不幸的消息,有消息,今年可能要全面的不分配外网IP了.路由器做服务器以后可能不行了.

  • 西枫里博客回复
    Sogou Explorer Sogou Explorer Windows 7 Windows 7

    哈哈,这个好。服务器费用都省了。

    • 小伟回复
      QQbrowser QQbrowser Android 8.0 Android 8.0

      我准备建立镜像,本事访问量少,问题不大。
      考虑带宽问题,我再套一层阿里云cdn,应该速度客观哦。加上路由器属于我内网第三级的备用ap,不怕死机

  • 银色月航回复
    Chrome 63 Chrome 63 iPhone iOS 10.0.2 iPhone iOS 10.0.2

    真心好东西,需要购买固定IP嘛,还是动态IP域名映射?

  • 学徒阿甘回复
    Maxthon 5 Maxthon 5 Windows 7 Windows 7

    老铁,你这个博客就是服务器搭建的吗?
    来个Q群交流啊
    我就想自己买个主机当服务器

    • Waylee回复
      Google Chrome 66 Google Chrome 66 Windows 10 Windows 10

      我的博客,是用阿里云建立的哦

发表评论