【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

06-01 1375阅读

一、搭建背景及web环境搭建作用

  最近在某鱼淘了一台雅典娜路由器256g版硬改了2g运行内存,刷了lean的QWRT固件,原本计划玩docker并在docker搭建nginx和php的,不过因为墙的原因下载镜像源比较麻烦,想了一下既然玩docker也这样麻烦,我的路由器运行内存(2g)和储存emmc(256g)也比较大,索性直接在路由器上搭建web环境算了,这样后续用ipv6做外网访问还可以做反向代理;那很多同学可能会问在路由器搭建web有什么用?因为我平时的web环境都是在个人电脑上搭建的,没有办法确保24小时在线,同时购买国内服务器带宽小价格还贵,部分需要响应快的web又不方便搭建在境外服务器,所有搭建在24小时在线的路由器上就是最好的选择,当然了除此以外,一般虚拟机上能够做的事情,这个web也能做了;此篇过程从一个完全小白的角度编写,力求只要是按照我的步骤搭建,基本上都能成功;

二、硬件要求

  因为长时间运行web的环境需要占用资源,对路由器还是有要求的,路由器内存最好512m以上(我在512亚瑟路由器上搭建后,内存只剩200m不到了),存储空间最好1g以上(可以挂载u盘或者移动硬盘作储存使用),同时路由器固件需要openwrt或者qwrt的固件(其他固件我没有试过);

下面我的硬件情况(在浏览器登录路由器后台就可以看到)

【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

三、搭建过程

1.安装前期准备工作,挂载点修改

挂载点修改的目的是为了方便后面指定web的根目录,同时也为了后续上传代码方便,详细修改如图

【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

自定义修改为/home,这个目录要记好,后面需要使用,这个挂载点的修改可以在ssh终端上用命令修改,这里为了方便不习惯命令的小伙伴直接用的路由器后台页面修改

【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

自此,安装nginx和php的前期准备工作就已经做好了,下面进入正式安装过程;

2.安装nginx

nginx的安装有两个方式,可以在路由器后台软件包里面安装,也可以登录ssh用命令安装,下图是登录路由器后台安装的截图,openwrt会有一点不同,进入路径都差不多:

【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

 考虑到部分操作必须用命令配置,我这里重点讲一下登录ssh用命令安装并配置的方法,详细如下

2.1:ssh命令安装需要的工具:FinalShell,这个工具是免费的,自己搜索一下安装就行,工具主要目的是为了登录路由器后台进行命令操作,登录路由器的是你登录路由器后台的ip,账号是:root,密码是你登录路由管理器的密码:比如我的路由器后台ip是:192.168.11.1,端口默认:22 账号:root

【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

登录以后的界面如下:(有的是第一次登录后会自动断开,再次登录就好了) 

【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

 安装命令如下:(openwrt的默认安装目录是/etc)

(1):安装nginx

opkg update

opkg install nginx

(2):创建nginx工作目录:安装好nginx后,需要创建代码存放的目录(也叫web根目录),现在需要用到前面挂载的目录/home,我们在这个目录下新建一个web目录,命令如下:(当然你也可以把目录改成其他名字,或者放到其他地方,后面在nginx配置文件里面把目录改成你建的其他目录名称就行,我这里的目录建在前面挂载的空间最大的home目录下面)

mkdir /home/web

(3):创建nginx用户组和用户并指定用户目录

#安装用户及用户组ipk

opkg install shadow-useradd shadow-groupadd

#添加用户组

groupadd www

#添加用户到用户组www

useradd -g www www

#将Nginx的工作目录绑定到www用户

chown -R www:www /home/web

(4):配置nginx的配置文件

安装完nginx后会在这个目录/etc/config/nginx下生成默认的nginx配置,但是这个配置文件是80端口的和系统本身登录后台的登录页面冲突,所以需要先删除这个配置内容,删除内容前先用下面的命令备份:

cp /etc/config/nginx /etc/config/nginx_backup

然后用下面的命令编辑内容

vi /etc/config/nginx

进入后界面如下:

【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

按 i 字母今日编辑状态,光标移动内容最后面按删除键,删除完全部内容,然后按 ESC键退出编辑状态,英文输入状态下输入冒号 :wq 退出编辑页面,完成系统默认配置文件删除;

其次需要删除系统默认的uci.conf文件,删除前同样先备份

cp /etc/nginx/uci.conf /etc/nginx/uci.conf1

备份好后使用文件删除命令:

rm /etc/nginx/uci.conf

删除完系统默认的配置文件后,现在进行我们自己想要的nginx的配置文件,文件默认目录在/etc/nginx/nginx.conf;很多nginx安装失败的原因就在于nginx安装好了以后没有删除系统默认配置文件然后重新进行nginx.conf配置,导致nginx不能正常运行,所以这里需要使用vi命令创建或者修改nginx.conf文件,vi命令如果打开不存在文件,默认会创建文件,命令如下:

vi /etc/nginx/nginx.conf

【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

我这里进入后面发现配置文件是空的,这个不用担心,直接把我下面的代码全部复制进去保存就行:

user www www;
worker_processes  1; 
pid        /var/run/nginx.pid;
events {
        use epoll;
        worker_connections  1024;
}
http {
        include mime.types;
        default_type application/octet-stream;
        sendfile on;
        tcp_nopush on;
        keepalive_timeout 65;
        gzip on;
        access_log   off;
    
        include       vhost.conf;
}

代码复制进去一定要注意看看最顶端的这个代码是不是user开头的,因为大多数情况下直接复制粘贴后,user前面的u会被覆盖掉,需要把光标移动到前面是手动加上u,这个地方非常重要,不然配置文件会报错

【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

 复制完成后,按一下esc键退出编辑状态,英文输入状态下输入冒号 :wq 退出编辑页面;

(5):创建vhost.conf文件,这个文件的作用大家可以自己搜索一下,创建的方式和前面nginx.conf文件一样;这里有一个点非常重要,listen的端口必须是80端口以外的端口,因为大家登陆路由后台页面的web程序已经把80端口占用了,如果继续使用80端口,会导致大家没有办法登陆路由器管理后台,这也是很多人安装nginx失败的重要原因,我这里使用了8080端口,命令如下:

vi /etc/nginx/vhost.conf

server {
        listen       8080;
        server_name  localhost;
        root  /home/web;
        index  index.html index.htm index.php default.php;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        root html;
        }
        location ~* ^.+\.php(\/.*)*$ {
        fastcgi_pass   127.0.0.1:9000;  #FastCGI的server
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /home/web/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

注意点和上面的nginx.conf配置一样,直接复制进去容易把最前面的一位数少了,需要单独加上

【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

正确的配置应该如下,同样的也是按一下键盘左上角的ESC键,然后英文状态下输入  :wq  保持退出

至此,nginx的安装已经完成,大家安装nginx过程中会遇到的坑,只要用我的方法就会全部搞定;

 3.安装php步骤

(1)php7文件包的安装:在openwrt和qwrt系统的软件包里面已经没有了php5的文件包了,我查询看了一下只有php7和php8,这也是很多小伙伴安装网上教程安装失败的原因,我这里安装php7,同样安装方法也是用ssh命令的方式安装,方法很简单,直接把下面代码复制粘贴进入就行:

opkg update
opkg install php7
opkg install php7-cli php7-fpm
opkg install php7-mod-gd php7-mod-session  
opkg install php7-mod-pdo-mysql php7-mod-pdo
opkg install php7-mod-mcrypt php7-mod-mbstring php7-fastcgi php7-cgi php7-mod-xml php7-mod-ctype php7-mod-curl php7-mod-exif php7-mod-ftp php7-mod-iconv php7-mod-json php7-mod-sockets

(2)安装安装时区和spawn-fcgi,代码如下:

opkg install nginx spawn-fcgi zoneinfo-core zoneinfo-asia

(3):配置php.ini文件,命令如下

vi /etc/php.ini

进入后移到;short_open_tag = on,然后按一下 i 键,进入vi编辑状态,把前面 ; 号去掉,这样这项就被打开了,然后再把doc_root = "/www" 前面的 ; 去掉并修改为doc_root = "/home/web" ,

另外找到

memory_limit = 8M  把这里的修改为memory_limit = 128M

并在最后一行加上默认时区设置和mysql关联

date.timezone = Asia/Chongqing                                            

mysql.default_socket = /var/run/mysqld.sock  【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

最后同样按键盘左上角的ESC键退出编辑状态,英文状态下输入 :wq 退出,这样php就安装完成;

4.安装mysql

因为我不需要mysql环境,我就没有实际安装,我把大概安装步骤和代码写一下:

(1):安装mysql

opkg update

opkg install mysql-server

(2):配置过程,以下步骤需要一步一步的来,不要全部直接复制粘贴

#创建数据库文件夹

mkdir -p /home/data /home/data/mysql /home/data/tmp

#创建默认的数据库

/usr/bin/mysql_install_db --force

#启动mysql

/etc/init.d/mysqld start

#输入如下命令创建mysql的密码

/usr/bin/mysqladmin -u root password 123456

#登陆数据库

mysql -u root -p

#连接上mysql之后,创建数据库(可以自己定义,记住就行了,之后会用到)

create database abcd

\g

#查看当前可用数据库

show databases

\g

#退出mysql

quit

至此,mysql安装配置完成

 

5.配置nginx和php的运行关联

其实前面vhost.conf已经配置了nginx和php的关联,现在我们在FastCGI里面在做一个简单配置

FastCGI具体配置:

vi /etc/nginx/fastcgi_params

if ( $request_filename ~* (.*).php ) {
        set $php_url $1;
}
if (!-e $php_url.php) {
         return 403;
}
 
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  SCRIPT_FILENAME   $document_root/$fastcgi_script_name;
fastcgi_param  SCRIPT_FILENAME    /home/web/$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  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;

同样按ESC键退出编辑状态,英文输入法状态下输入 :wq 保存退出,至此,配置完成

【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

7.开启fastcgi服务、nginx服务,加入自动启动,测试是否有异常

 (1):开启fastcgi服务,直接在ssh输入以下命令

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 2 -f /usr/bin/php-cgi

输入后显示:spawn-fcgi: child spawned successfully: PID: 2756,这样就成功开启了

如果要开机启动,将上述指令放置到/etc/rc.local脚本之下

如果rc.local 中有exit 0 ,记得注释掉,不然就不会开始监听9000端口

vi /etc/rc.local

【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

同样,加入后需要按左上角ESC键,英文状态下输入  :wq  保存退出,这样就配置成功 

(2):开启nginx服务,测试服务有没有问题

/etc/init.d/nginx enable

/etc/init.d/nginx start

再输入

nginx -t

结果返回

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

nginx: configuration file /etc/nginx/nginx.conf test is successful

再加载一下配置看看有没有报错,输入一下命令:

nginx -s reload

如果报错内容

[error] 11094#0: invalid PID number "" in "/var/run/nginx.pid"

错误的原因,一般是路径错误:Nginx无法找到指定的PID文件路径,如文件不存在或路径配置有误导致,直接输入下面的代码就完美解决

nginx -c /etc/nginx/nginx.conf

这个代码就是指定路径,然后再次加载

nginx -s reload

没有报错的话,这样就是配置没有问题了,至此搭建工作全部完成,下面就开始检验成果了

四、结果检验 

这里的结果检验就是上传php代码运行,代码上传方式有两种,第一打开samba网络共享,直接在文件中上传代码,第二种通过FTP上传,我这里选择第一种演示

QWTR的固件原始装了samba服务,直接按照图片路径打开就行,目录这个地方输入最开始挂载的/home目录,名称随意写一个,然后点击 保存&应用

【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

打开服务后,你双击打开网上邻居,就可以看到共享文件夹了,点击进入上传代码

【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)  

点击进入,在之前建好的nginx跟目录新建一个index.php文件,把以下代码复制进入,保存 

 

 然后在浏览器输入你的路由器ip加端口8080,192.168.12.1:8080,显示以下页面,说明正常运行

 【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

 下面是我写的某节目源php代理,播放截图,完美运行

【小白教程】openwrt/qwrt搭建web环境onmp(nginx+php+myspl)

至此,教程全部结束,如果有不清楚的可以留言,我看到会及时回复,希望大家都能搭建起自己的路由器web环境 

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码