nginx移植記錄
只是記錄而已,防止日後忘記。
由於最新版本的nginx要求比較新的automake版本,但是我們老大是保守型別的,系統版本很老了 然後有些東西不方便升級,以免造成不必要的麻煩,因此需要用比較老版本的nginx來實現。下面參考這幾個連結中提供的內容:
http://blog.csdn.net/crazyman2010/article/details/18266487
http://blog.csdn.net/u011641885/article/details/49863723
http://blog.csdn.net/fish43237/article/details/40515897
我這裡下載了他修改後的nginx-1.5..8_arm庫,斌修改了nginx-1.5.8_arm/auto/types/sizeof 檔案,因為現在大部分linux都是i686 64位的系統了,通過講$CC修改為系統的gcc那還是不能獲取正確的size。所以這裡就直接修改了
ngx_size=4
cat << END > $NGX_AUTOTEST.c
#include <sys/types.h>
#include <sys/time.h>
$NGX_INCLUDE_UNISTD_H
#include <signal.h>
#include <stdio.h>
#include <sys/resource.h>
$NGX_INCLUDE_INTTYPES_H
$NGX_INCLUDE_AUTO_CONFIG_H
int main() {
printf("%d", (int) sizeof($ngx_type));
return 0;
}
END
ngx_test="gcc $CC_TEST_FLAGS $CC_AUX_FLAGS \
-o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs"
eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
if [ -x $NGX_AUTOTEST ]; then
ngx_size=4
echo " $ngx_size bytes"
fi
下面我貼出我的my_configure_arm.sh檔案的內容:
#!/bin/sh
BUILD_PATH=$PWD/arm-build
CC_PATH=arm-linux-gcc
CPP_PATH=arm-linux-g++
./configure \
--prefix=$PWD/install \
--user=root \
--group=root \
--builddir=$BUILD_PATH \
--with-pcre \
--with-pcre=../pcre-8.20 \
--with-pcre-jit \
--with-http_flv_module \
--with-http_mp4_module \
--add-module=../nginx-rtmp-module \
--with-cc=$CC_PATH \
--with-cpp=$CPP_PATH
其中builddir目錄不能是build目錄,不然make的時候會出現make:沒有什麼可以做的為`default',我看了Makefile檔案裡面有build偽指令。新增的nginx-rtmp-module工程是最新的,在master分支,還新增了flv和MP4的module。
然後make install 後會安裝到當前的install目錄,主要是我沒有根使用者的許可權,所以nginx所使用的nginx.conf配置檔案的路徑,要保持和你安裝時候的路徑一致。
問題:
# ./nginx
nginx: [emerg] getpwnam("root") failed (2: No such file or directory)
這個問題查閱網上的解決方法沒有用,通過strace命令來跟蹤程式執行時的系統呼叫和所接收的訊號,得到如下資訊:
open("/etc/nsswitch.conf", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=4163, ...}) = 0
mmap2(NULL, 4163, PROT_READ, MAP_PRIVATE, 4, 0) = 0x2ab4d000
close(4) = 0
open("/lib/libnss_compat.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/libnss_compat.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
munmap(0x2ab4d000, 4163) = 0
open("/etc/ld.so.cache", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=4163, ...}) = 0
mmap2(NULL, 4163, PROT_READ, MAP_PRIVATE, 4, 0) = 0x2aba4000
close(4) = 0
open("/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
munmap(0x2aba4000, 4163) = 0
write(3, "1970/01/04 08:41:42 [emerg] 8091"..., 91) = 91
write(2, "nginx: [emerg] getpwnam(\"root\") "..., 70nginx: [emerg] getpwnam("root") failed (2: No such fi)
) = 70
exit_group(1) = ?
發現缺少libnss_*相關的庫檔案,講缺少的庫補上後,nginx可以正常執行了。
修改配置檔案/home/fulinux/nginx-src/nginx-1.5.8_arm/install/conf/nginx.conf,最後加上:
rtmp {
server {
listen 1935;
application live {
live on;
record off;
}
}
}
./nginx -s reload
通過如下命令向rtmp服務傳送視訊流:
# gst-launch -e v4l2src do-timestamp=true ! 'video/x-raw-yuv, format=(fourcc)I42
0, width=(int)640, height=(int)480, interlaced=(boolean)false, framerate=(fracti
on)15/1' ! vpuenc codec=6 bitrate=458752 seqheader-method=3 ! flvmux streamable=
true name=mux alsasrc device=plughw:1,0 blocksize=22050 ! audioconvert ! faac bi
trate=65536 ! mux. mux. ! rtmpsink location="rtmp://localhost:1935/live/video"
會有如下提示:
# ./nginx
# gst-launch -e v4l2src do-timestamp=true ! 'video/x-raw-yuv, format=(fourcc)I42
0, width=(int)640, height=(int)480, interlaced=(boolean)false, framerate=(fracti
on)15/1' ! vpuenc codec=6 bitrate=458752 seqheader-method=3 ! flvmux streamable=
true name=mux alsasrc device=plughw:1,0 blocksize=22050 ! audioconvert ! faac bi
trate=65536 ! mux. mux. ! rtmpsink location="rtmp://localhost:1935/live/video"
Setting pipeline to PAUSED ...
[INFO] Product Info: i.MX6Q/D/S
vpuenc versions :)
plugin: 3.0.7
wrapper: 1.0.35(VPUWRAPPER_ARM_LINUX Build on May 18 2017 16:22:43)
vpulib: 5.4.12
firmware: 2.3.10.40778
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstAudioSrcClock
[INFO] chromaInterleave 0, mapType 0, linear2TiledEnable 0
WARNING: from element /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: Can't record audio fast enough
Additional debug info:
gstbaseaudiosrc.c(840): gst_base_audio_src_create (): /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0:
Dropped 64386 samples. This is most likely because downstream can't keep up and is consuming samples too .
WARNING: from element /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: Can't record audio fast enough
Additional debug info:
gstbaseaudiosrc.c(840): gst_base_audio_src_create (): /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0:
Dropped 11907 samples. This is most likely because downstream can't keep up and is consuming samp
不過這個提示在我的平臺上暫且忽略,然後在PC上可以通過如下方法播放:
ffplay rtmp://192.168.0.51:1935/live/video
相關文章
- nginx 常用配置記錄Nginx
- hugo + nginx 搭建部落格記錄GoNginx
- Nginx反向代理minio踩坑記錄Nginx
- nginx日誌檔案按天記錄定時清理迴圈記錄Nginx
- nginx 重新編譯 lua 模組不停服(記錄)Nginx編譯
- Nginx的proxy_pass簡單使用記錄Nginx
- 【記錄】那些很實用的Nginx規則Nginx
- Nginx安裝學習使用詳細記錄Nginx
- nginx fastcgi 超時問題解決記錄NginxAST
- Nginx 的 access log 如何以 json 形式記錄?NginxJSON
- nginx的web快取服務環境部署記錄NginxWeb快取
- STM32F103C8T6移植HUAWEI LiteOS過程記錄
- centos7雲伺服器安裝nginx記錄CentOS伺服器Nginx
- Nginx 405 以及301 解決報錯記錄Nginx
- Nginx 1.14.2 移植指南(openEuler 20.03 LTS SP1)Nginx
- Nginx處理請求的11個階段(agentzh的Nginx 教程學習記錄)Nginx
- nginx下目錄瀏覽及其驗證功能、版本隱藏等配置記錄Nginx
- Nginx+uwsgi+Django 的web應用環境部署-完整記錄NginxDjangoWeb
- 記錄一個 Nginx-FastCGI-"Primary script unknown" 錯誤NginxAST
- 針對Nginx日誌的相關運維操作記錄Nginx運維
- Haproxy和Nginx負載均衡測試效果對比記錄Nginx負載
- 記錄一下,如何配置nodejs nginx的反向代理NodeJSNginx
- 記錄一次使用docker配置nginx 負載均衡練習DockerNginx負載
- 【docker】記錄一次nginx啟動失敗的檢測DockerNginx
- Nginx 負載均衡的Cache快取批量清理的操作記錄Nginx負載快取
- nginx筆記Nginx筆記
- nginx 反向代理到目錄Nginx
- nginx 防 webshell 跨目錄NginxWebshell
- micropython STM32移植筆記(一)Python筆記
- Nginx虛擬目錄alias和root目錄Nginx
- PUTTY 記錄操作記錄
- Vue 路由 history 模式踩坑記錄:nginx 配置解決 404 問題Vue路由模式Nginx
- 記錄一次 Nginx 配置 proxy_pass 後 返回404問題Nginx
- 域名解析的記錄型別:A記錄、CNAME、MX記錄、NS記錄型別
- 【Nginx學習筆記】-初識NginxNginx筆記
- nginx目錄穿越漏洞復現Nginx
- nginx 網站目錄重寫Nginx網站
- Cookie記錄瀏覽記錄Cookie