最近拿到一臺WRT1900ACSv2丢胚,想在路由上面掛站兑牡,openwrt上默認(rèn)的web server是uhttpd,還是想換成更加熟悉的nginx寒波,遂開始了折騰。
先找下這臺機(jī)器的信息升熊,上網(wǎng)站:https://openwrt.org/toh/views/toh_fwdownload
cpu代號是mvebu,機(jī)型代號是shelby俄烁,先刷個官方固件,最新的穩(wěn)定版本是18.06.1
裝個nginx级野,源里面默認(rèn)版本是1.12.2-1
但是页屠。。勺阐。
直接這樣把uhttpd停止,把nginx啟動是不能用的矛双,默認(rèn)的nginx無法支持cgi渊抽,也就是默認(rèn)的nginx進(jìn)不去luci的頁面。
搜到一篇文章:
https://right.com.cn/forum/thread-321157-1-1.html
看后面的評論议忽,最新版本的nginx已經(jīng)有模塊支持cgi了懒闷,不用按照樓主說的做反向代理。
先去找下官方有沒有現(xiàn)成的
https://archive.openwrt.org/snapshots/trunk/mvebu/generic/packages/packages/
居然沒有nginx-mod-luci模塊,算了愤估,自己編譯吧帮辟,自食其力。
還是喜歡用完整源代碼的環(huán)境編譯玩焰,用sdk的環(huán)境直接編譯的話每次都死得很難看由驹,老是提示缺少這個缺少那個,煩昔园。
先搞份18.06的代碼蔓榄。
https://github.com/openwrt/openwrt.git
注意選擇18.06的分支。
這次系統(tǒng)換成了centos7默刚,要先裝下依賴甥郑。
yum install ncurses-libs ncurses-devel zlib-devel gawk flex-devel patch gcc gcc-c++ perl subversion git-core unzip bzip2 perl-Thread-Queue wget perl-Thread-Queue openssl-devel zlib-static perl-Data-Dumper
源碼目錄update&install一下
./scripts/feeds update -a
./scripts/feeds install -a
定制一下固件,主要是選擇平臺和機(jī)型荤西,其他的不用改了澜搅。
make menuconfig
一路退出,最后保存一下邪锌。
開始編譯
make -j4 V=99
新代碼現(xiàn)在不用做任何修改勉躺,直接無痛編譯完成。i5的臺式機(jī)大概編譯半小時能完成秃流。
編譯完成后赂蕴,把最新的nginx代碼搞過來。
https://github.com/openwrt/packages.git
在net文件夾可以找到nginx
但是我們要的nginx-mode-luci模塊還依賴uwsgi-cgi模塊舶胀,同樣在net目錄下
把這2個文件夾拷貝到原來18.06代碼的feeds/packages/net目錄下
編譯一下這2個新模塊概说,因?yàn)樵瓉?8.06的代碼沒有uwsgi,所以還是要先install&update一下嚣伐。
./scripts/feeds update -a
./scripts/feeds install -a
定制一下固件
make menuconfig
選擇路徑Network-Web Servers/Proxies
可以找到nginx-mod-luci了糖赔,我這里是把nginx相關(guān)的全勾上(選中為M)。
往下翻轩端,找到uwsgi放典,全勾上。
一路exit基茵。
開始編譯奋构,先編譯nginx
make package/feeds/packages/nginx/compile -j5 V=s
再編譯uwsgi
make package/feeds/packages/uwsgi-cgi/compile -j5 V=s
幾分鐘就編譯完了。
在bin/packages/arm_cortex-a9_vfpv3/packages文件夾
可以找到我們的東西了拱层!全部裝上弥臼。
停止原來的uhttpd并disable防止自動啟動
/etc/init.d/uhttpd stop
/etc/init.d/uhttpd disable
開啟nginx并設(shè)置為自動啟動
/etc/init.d/nginx enable
/etc/init.d/nginx start
ps一下看看nginx是否已經(jīng)啟動
注意,跟恩山上的那篇教程不同根灯,這里不用對nginx做任何配置径缅,直接訪問一下路由ip掺栅,熟悉的界面已經(jīng)回來了。
我們?nèi)ヂ酚衫锟聪耼ginx的配置纳猪,cd到/etc/nginx
可以看到氧卧,nginx-mod-luci模塊會自動生成一個新的nginx.conf配置文件,把原來安裝nginx自動生成的nginx.conf文件改名變成nginx.conf_old
看下nginx.conf文件內(nèi)容
user nobody nogroup;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 0;
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 1G;
large_client_header_buffers 2 1k;
gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 1;
gzip_proxied any;
root /www;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
}
include luci_uwsgi.conf;
}
include /etc/nginx/conf.d/*.conf;
}
我們不用做任何修改氏堤,即可讓nginx支持cgi沙绝,顯示luci。
至于掛站丽猬,大家對nginx很熟了宿饱,不多說了。