<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux開發_CentOS7.4服務器搭建NFS、NGINX服務器,安裝ffmpeg、Qt環境

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2023-07-14 13:45 ? 次閱讀

1. 內容介紹

環境介紹:采用的是華為云的ECS彈性云服務器--鏡像安裝的CentOS7.4 64位 -----是服務器版,非桌面版哦。

在CentOS7.4服務器版本的環境下搭建NFS服務器、安裝ffmpeg、安裝nginx服務器、部署Qt編譯環境。

(1)配置NGINX為HTTP服務器,安裝rtmp模塊,完成rtmp視頻推流,支持緩存視頻到本地目錄、支持轉為HLS流,通過瀏覽器訪問直播流。

(2)部署Qt編譯環境,可以編譯Qt代碼,運行Qt程序。 因為是服務器,我這里部署Qt環境,運行Qt程序是屬于控制臺版本,不用Qt的GUI模塊,只是用核心模塊完成一些功能設計。

(3)安裝、編譯 ffmpeg : 支持源碼編譯安裝ffmpeg、在線安裝ffmpeg,通過ffmpeg可以完成音視頻的一些開發。比如:視頻轉碼、視頻合并、視頻剪切、視頻特效處理。----這里用ffmpeg并不是做播放器,是在服務器上用,主要是處理視頻文件。

(4)安裝NFS服務器,主要是方便與本地Linux系統進行通信,編譯代碼,文件共享。

(5)部署開機自動啟動程序:方便設置自己的程序為開機啟動。

2. 部署NFS服務器

注意:在云服務器上搭建NFS服務器,需要在控制臺開放端口,不然NFS的端口無法正常訪問,會被攔截。

2.1 安裝NFS

[root@ecs-c687-ecrs work]# yum install -y rpc-bind nfs-utils
 Loaded plugins: fastestmirror
 Determining fastest mirrors
 base                                                                                                                                  | 3.6 kB  00:00:00     
 epel                                                                                                                                  | 4.7 kB  00:00:00     
 extras                                                                                                                                | 2.9 kB  00:00:00     
 updates                                                                                                                               | 2.9 kB  00:00:00     
 (1/7): base/7/x86_64/group_gz                                                                                                         | 153 kB  00:00:00     
 (2/7): epel/x86_64/group_gz                                                                                                           |  97 kB  00:00:00     
 (3/7): epel/x86_64/updateinfo                                                                                                         | 1.0 MB  00:00:00     
 (4/7): base/7/x86_64/primary_db                                                                                                       | 6.1 MB  00:00:00     
 (5/7): epel/x86_64/primary_db                                                                                                         | 7.0 MB  00:00:00     
 (6/7): extras/7/x86_64/primary_db                                                                                                     | 250 kB  00:00:00     
 (7/7): updates/7/x86_64/primary_db                                                                                                    |  17 MB  00:00:01     
 No package rpc-bind available.
 Resolving Dependencies
 -- > Running transaction check
 --- > Package nfs-utils.x86_64 1:1.3.0-0.68.el7.2 will be installed
 -- > Processing Dependency: gssproxy >= 0.7.0-3 for package: 1:nfs-utils-1.3.0-0.68.el7.2.x86_64
 -- > Processing Dependency: rpcbind for package: 1:nfs-utils-1.3.0-0.68.el7.2.x86_64
 -- > Processing Dependency: quota for package: 1:nfs-utils-1.3.0-0.68.el7.2.x86_64
 -- > Processing Dependency: libnfsidmap for package: 1:nfs-utils-1.3.0-0.68.el7.2.x86_64
 -- > Processing Dependency: libevent for package: 1:nfs-utils-1.3.0-0.68.el7.2.x86_64
 -- > Processing Dependency: keyutils for package: 1:nfs-utils-1.3.0-0.68.el7.2.x86_64
 -- > Processing Dependency: libnfsidmap.so.0()(64bit) for package: 1:nfs-utils-1.3.0-0.68.el7.2.x86_64
 -- > Processing Dependency: libevent-2.0.so.5()(64bit) for package: 1:nfs-utils-1.3.0-0.68.el7.2.x86_64
 -- > Running transaction check
 --- > Package gssproxy.x86_64 0:0.7.0-30.el7_9 will be installed
 -- > Processing Dependency: libini_config >= 1.3.1-31 for package: gssproxy-0.7.0-30.el7_9.x86_64
 -- > Processing Dependency: libverto-module-base for package: gssproxy-0.7.0-30.el7_9.x86_64
 -- > Processing Dependency: libref_array.so.1(REF_ARRAY_0.1.1)(64bit) for package: gssproxy-0.7.0-30.el7_9.x86_64
 -- > Processing Dependency: libini_config.so.3(INI_CONFIG_1.2.0)(64bit) for package: gssproxy-0.7.0-30.el7_9.x86_64
 -- > Processing Dependency: libini_config.so.3(INI_CONFIG_1.1.0)(64bit) for package: gssproxy-0.7.0-30.el7_9.x86_64
 -- > Processing Dependency: libref_array.so.1()(64bit) for package: gssproxy-0.7.0-30.el7_9.x86_64
 -- > Processing Dependency: libini_config.so.3()(64bit) for package: gssproxy-0.7.0-30.el7_9.x86_64
 -- > Processing Dependency: libcollection.so.2()(64bit) for package: gssproxy-0.7.0-30.el7_9.x86_64
 -- > Processing Dependency: libbasicobjects.so.0()(64bit) for package: gssproxy-0.7.0-30.el7_9.x86_64
 --- > Package keyutils.x86_64 0:1.5.8-3.el7 will be installed
 --- > Package libevent.x86_64 0:2.0.21-4.el7 will be installed
 --- > Package libnfsidmap.x86_64 0:0.25-19.el7 will be installed
 --- > Package quota.x86_64 1:4.01-19.el7 will be installed
 -- > Processing Dependency: quota-nls = 1:4.01-19.el7 for package: 1:quota-4.01-19.el7.x86_64
 -- > Processing Dependency: tcp_wrappers for package: 1:quota-4.01-19.el7.x86_64
 --- > Package rpcbind.x86_64 0:0.2.0-49.el7 will be installed
 -- > Running transaction check
 --- > Package libbasicobjects.x86_64 0:0.1.1-32.el7 will be installed
 --- > Package libcollection.x86_64 0:0.7.0-32.el7 will be installed
 --- > Package libini_config.x86_64 0:1.3.1-32.el7 will be installed
 -- > Processing Dependency: libpath_utils.so.1(PATH_UTILS_0.2.1)(64bit) for package: libini_config-1.3.1-32.el7.x86_64
 -- > Processing Dependency: libpath_utils.so.1()(64bit) for package: libini_config-1.3.1-32.el7.x86_64
 --- > Package libref_array.x86_64 0:0.1.5-32.el7 will be installed
 --- > Package libverto-libevent.x86_64 0:0.2.5-4.el7 will be installed
 --- > Package quota-nls.noarch 1:4.01-19.el7 will be installed
 --- > Package tcp_wrappers.x86_64 0:7.6-77.el7 will be installed
 -- > Running transaction check
 --- > Package libpath_utils.x86_64 0:0.2.1-32.el7 will be installed
 -- > Finished Dependency Resolution
 ?
 Dependencies Resolved
 ?
 =============================================================================================================================================================
  Package                                   Arch                           Version                                      Repository                       Size
 =============================================================================================================================================================
 Installing:
  nfs-utils                                 x86_64                         1:1.3.0-0.68.el7.2                           updates                         413 k
 Installing for dependencies:
  gssproxy                                  x86_64                         0.7.0-30.el7_9                               updates                         111 k
  keyutils                                  x86_64                         1.5.8-3.el7                                  base                             54 k
  libbasicobjects                           x86_64                         0.1.1-32.el7                                 base                             26 k
  libcollection                             x86_64                         0.7.0-32.el7                                 base                             42 k
  libevent                                  x86_64                         2.0.21-4.el7                                 base                            214 k
  libini_config                             x86_64                         1.3.1-32.el7                                 base                             64 k
  libnfsidmap                               x86_64                         0.25-19.el7                                  base                             50 k
  libpath_utils                             x86_64                         0.2.1-32.el7                                 base                             28 k
  libref_array                              x86_64                         0.1.5-32.el7                                 base                             27 k
  libverto-libevent                         x86_64                         0.2.5-4.el7                                  base                            8.9 k
  quota                                     x86_64                         1:4.01-19.el7                                base                            179 k
  quota-nls                                 noarch                         1:4.01-19.el7                                base                             90 k
  rpcbind                                   x86_64                         0.2.0-49.el7                                 base                             60 k
  tcp_wrappers                              x86_64                         7.6-77.el7                                   base                             78 k
 ?
 Transaction Summary
 =============================================================================================================================================================
 Install  1 Package (+14 Dependent packages)
 ?
 Total download size: 1.4 M
 Installed size: 4.1 M
 Downloading packages:
 (1/15): keyutils-1.5.8-3.el7.x86_64.rpm                                                                                               |  54 kB  00:00:00     
 (2/15): libcollection-0.7.0-32.el7.x86_64.rpm                                                                                         |  42 kB  00:00:00     
 (3/15): gssproxy-0.7.0-30.el7_9.x86_64.rpm                                                                                            | 111 kB  00:00:00     
 (4/15): libevent-2.0.21-4.el7.x86_64.rpm                                                                                              | 214 kB  00:00:00     
 (5/15): libbasicobjects-0.1.1-32.el7.x86_64.rpm                                                                                       |  26 kB  00:00:00     
 (6/15): libini_config-1.3.1-32.el7.x86_64.rpm                                                                                         |  64 kB  00:00:00     
 (7/15): libnfsidmap-0.25-19.el7.x86_64.rpm                                                                                            |  50 kB  00:00:00     
 (8/15): libpath_utils-0.2.1-32.el7.x86_64.rpm                                                                                         |  28 kB  00:00:00     
 (9/15): libref_array-0.1.5-32.el7.x86_64.rpm                                                                                          |  27 kB  00:00:00     
 (10/15): libverto-libevent-0.2.5-4.el7.x86_64.rpm                                                                                     | 8.9 kB  00:00:00     
 (11/15): quota-nls-4.01-19.el7.noarch.rpm                                                                                             |  90 kB  00:00:00     
 (12/15): quota-4.01-19.el7.x86_64.rpm                                                                                                 | 179 kB  00:00:00     
 (13/15): tcp_wrappers-7.6-77.el7.x86_64.rpm                                                                                           |  78 kB  00:00:00     
 (14/15): rpcbind-0.2.0-49.el7.x86_64.rpm                                                                                              |  60 kB  00:00:00     
 (15/15): nfs-utils-1.3.0-0.68.el7.2.x86_64.rpm                                                                                        | 413 kB  00:00:00     
 -------------------------------------------------------------------------------------------------------------------------------------------------------------
 Total                                                                                                                        1.5 MB/s | 1.4 MB  00:00:00     
 Running transaction check
 Running transaction test
 Transaction test succeeded
 Running transaction
 Warning: RPMDB altered outside of yum.
   Installing : rpcbind-0.2.0-49.el7.x86_64                                                                                                              1/15 
   Installing : libbasicobjects-0.1.1-32.el7.x86_64                                                                                                      2/15 
   Installing : libref_array-0.1.5-32.el7.x86_64                                                                                                         3/15 
   Installing : libcollection-0.7.0-32.el7.x86_64                                                                                                        4/15 
   Installing : libevent-2.0.21-4.el7.x86_64                                                                                                             5/15 
   Installing : libverto-libevent-0.2.5-4.el7.x86_64                                                                                                     6/15 
   Installing : 1:quota-nls-4.01-19.el7.noarch                                                                                                           7/15 
   Installing : tcp_wrappers-7.6-77.el7.x86_64                                                                                                           8/15 
   Installing : 1:quota-4.01-19.el7.x86_64                                                                                                               9/15 
   Installing : keyutils-1.5.8-3.el7.x86_64                                                                                                             10/15 
   Installing : libnfsidmap-0.25-19.el7.x86_64                                                                                                          11/15 
   Installing : libpath_utils-0.2.1-32.el7.x86_64                                                                                                       12/15 
   Installing : libini_config-1.3.1-32.el7.x86_64                                                                                                       13/15 
   Installing : gssproxy-0.7.0-30.el7_9.x86_64                                                                                                          14/15 
   Installing : 1:nfs-utils-1.3.0-0.68.el7.2.x86_64                                                                                                     15/15 
   Verifying  : gssproxy-0.7.0-30.el7_9.x86_64                                                                                                           1/15 
   Verifying  : 1:quota-4.01-19.el7.x86_64                                                                                                               2/15 
   Verifying  : libpath_utils-0.2.1-32.el7.x86_64                                                                                                        3/15 
   Verifying  : libnfsidmap-0.25-19.el7.x86_64                                                                                                           4/15 
   Verifying  : libevent-2.0.21-4.el7.x86_64                                                                                                             5/15 
   Verifying  : keyutils-1.5.8-3.el7.x86_64                                                                                                              6/15 
   Verifying  : libverto-libevent-0.2.5-4.el7.x86_64                                                                                                     7/15 
   Verifying  : tcp_wrappers-7.6-77.el7.x86_64                                                                                                           8/15 
   Verifying  : libcollection-0.7.0-32.el7.x86_64                                                                                                        9/15 
   Verifying  : 1:quota-nls-4.01-19.el7.noarch                                                                                                          10/15 
   Verifying  : libref_array-0.1.5-32.el7.x86_64                                                                                                        11/15 
   Verifying  : libbasicobjects-0.1.1-32.el7.x86_64                                                                                                     12/15 
   Verifying  : 1:nfs-utils-1.3.0-0.68.el7.2.x86_64                                                                                                     13/15 
   Verifying  : libini_config-1.3.1-32.el7.x86_64                                                                                                       14/15 
   Verifying  : rpcbind-0.2.0-49.el7.x86_64                                                                                                             15/15 
 ?
 Installed:
   nfs-utils.x86_64 1:1.3.0-0.68.el7.2                                                                                                                        
 ?
 Dependency Installed:
   gssproxy.x86_64 0:0.7.0-30.el7_9     keyutils.x86_64 0:1.5.8-3.el7            libbasicobjects.x86_64 0:0.1.1-32.el7   libcollection.x86_64 0:0.7.0-32.el7  
   libevent.x86_64 0:2.0.21-4.el7       libini_config.x86_64 0:1.3.1-32.el7      libnfsidmap.x86_64 0:0.25-19.el7        libpath_utils.x86_64 0:0.2.1-32.el7  
   libref_array.x86_64 0:0.1.5-32.el7   libverto-libevent.x86_64 0:0.2.5-4.el7   quota.x86_64 1:4.01-19.el7              quota-nls.noarch 1:4.01-19.el7       
   rpcbind.x86_64 0:0.2.0-49.el7        tcp_wrappers.x86_64 0:7.6-77.el7        
 ?
 Complete!
 [root@ecs-c687-ecrs work]# yum install -y rpcbind
 Loaded plugins: fastestmirror
 Loading mirror speeds from cached hostfile
 Package rpcbind-0.2.0-49.el7.x86_64 already installed and latest version
 Nothing to do
 [root@ecs-c687-ecrs work]#

2.2 設置節點

(1)設置節點名稱

hostnamectl set-hostname nfs

(2)服務端安裝NFS

yum -y install nfs-utils rpcbind

2.3 服務端配置

在NFS服務端上創建共享目錄/data/nfs并設置權限

mkdir -p /data/nfs
 chmod 666 /data/nfs

2.4 編輯export文件

vim /etc/exports 
 ?
 /data/nfs *(rw,no_root_squash,no_all_squash,sync)
 ?
 其中的/data/nfs 就是NFS服務器需要共享出去的目錄。 *號表示所有IP地址都可以訪問。
 參數介紹:
 rw  讀寫權限
 no_root_squash  客戶端使用 root 身份來操作服務器的文件系統
 sync  代表數據會同步寫入到內存與硬盤中

(1)配置生效

exportfs -r

(2)啟動rpcbind、nfs服務

systemctl enable rpcbind && systemctl start rpcbind 
 systemctl enable nfs && systemctl start nfs

(3)查看 RPC 服務的注冊狀況

rpcinfo -p localhost
 ?
    program vers proto   port  service
     100000    4   tcp    111  portmapper
     100000    3   tcp    111  portmapper
     100000    2   tcp    111  portmapper
     100000    4   udp    111  portmapper
     100000    3   udp    111  portmapper
     100000    2   udp    111  portmapper
     100024    1   udp  39748  status
     100024    1   tcp  41475  status
     100005    1   udp  20048  mountd
     100005    1   tcp  20048  mountd
     100005    2   udp  20048  mountd
     100005    2   tcp  20048  mountd
     100005    3   udp  20048  mountd
     100005    3   tcp  20048  mountd
     100003    3   tcp   2049  nfs
     100003    4   tcp   2049  nfs
     100227    3   tcp   2049  nfs_acl
     100003    3   udp   2049  nfs
     100003    4   udp   2049  nfs
     100227    3   udp   2049  nfs_acl
     100021    1   udp  46720  nlockmgr
     100021    3   udp  46720  nlockmgr
     100021    4   udp  46720  nlockmgr
     100021    1   tcp  33605  nlockmgr
     100021    3   tcp  33605  nlockmgr
     100021    4   tcp  33605  nlockmgr

(4)showmount令來查閱是否可以聯機

showmount -e localhost
    
選項與參數:
-a :顯示目前主機與客戶端的 NFS 聯機分享的狀態;
-e :顯示某部主機的 /etc/exports 所分享的目錄數據。

2.5 客戶端配置

(1)安裝nfs-utils客戶端 ---一般系統都自帶了,不用安裝。

yum -y install nfs-utils

(2)創建掛載目錄---就是用來掛載NFS服務器的共享目錄

mkdir /home/work

(3)查看服務器拋出的共享目錄信息

showmount -e < NFS服務器IP地址 >

(4)掛載服務器共享目錄

mount -t nfs < NFS服務器IP地址 >:< NFS服務器路徑 > < 掛載到本地的路徑 >

(5)查看掛載結果

df -h

(6)卸載已掛在的NFS

umount < 掛載到本地的路徑 >

3. 安裝ffmpeg

3.1 安裝yasm

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz  #下載源碼包
tar zxvf yasm-1.3.0.tar.gz #解壓
cd yasm-1.3.0 #進入目錄
./configure #配置
make && make install #編譯安裝

3.2 在線安裝ffmpeg

(1)設置下載源

CentOS沒有官方FFmpeg軟件包,可以使用第三方YUM源(Nux Dextop)下載,就是版本較低,ffmpeg 2.8。

(1) yum -y install epel-release
(2) yum update -y
(3) rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
(4) 
[CentOS 7]  
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm   

[CentOS 6]
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm

(2)安裝FFmpeg 和 FFmpeg開發包

sudo yum install ffmpeg ffmpeg-devel -y

(3)測試ffmpeg是否安裝OK

ffmpeg -version

查看版本:

[root@nfs ecrs_web_lib_centos]# ffmpeg -version
ffmpeg version 2.8.15 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-36)
configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --extra-ldflags='-Wl,-z,relro ' --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-version3 --enable-bzlib --disable-crystalhd --enable-gnutls --enable-ladspa --enable-libass --enable-libcdio --enable-libdc1394 --enable-libfdk-aac --enable-nonfree --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libx264 --enable-libx265 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
libavutil      54. 31.100 / 54. 31.100
libavcodec     56. 60.100 / 56. 60.100
libavformat    56. 40.101 / 56. 40.101
libavdevice    56.  4.100 / 56.  4.100
libavfilter     5. 40.101 /  5. 40.101
libavresample   2.  1.  0 /  2.  1.  0
libswscale      3.  1.101 /  3.  1.101
libswresample   1.  2.101 /  1.  2.101
libpostproc    53.  3.100 / 53.  3.100
[root@nfs ecrs_web_lib_centos]#

3.3 從源碼編譯ffmpeg

1)編譯X264
[root@ecs-c687-ecrs work_pc]# tar xvf last_x264.tar.bz2 
./configure
make
make install2)編譯ffmpeg
./configure --enable-shared --target-os=linux --enable-gpl --enable-ffmpeg --enable-libx264

3.4 如果有多個ffmpeg版本存在怎么辦?

如果系統里有多個ffmpeg存在,那么在命令行執行ffmpeg肯定是不知道當前這個命令是不是自己想要的。

如果是編譯ffmpeg源碼得到ffmpeg相關文件,那么在執行./configure時,加一個選項,設置一下安裝路徑--prefix=$PWD/_install。這樣執行make install時,安裝的文件會拷貝到當前目錄下的_install目錄里。

然后再通過ln建立一個鏈接文件到/usr/local/bin/目錄下。

ln -s /home/wbyq/ffmpe4.2.2/_install/bin/ffmpeg /usr/local/bin/ffmpeg422

然后將/home/wbyq/ffmpe4.2.2/_install/lib目錄加到系統庫搜索的環境變量里。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/wbyq/ffmpe4.2.2/_install/lib

如果覺得設置環境變量麻煩,以后也不常修改這些庫,那么可以將ffmpeg的全部.so庫拷貝到/usr/lib目錄下去。

cp /home/wbyq/ffmpe4.2.2/_install/lib/* /usr/lib -dfv

說明:拷貝動態庫最好都加上-d參數,保留庫之間的鏈接屬性。

拷貝之后再執行ldconfig命令生效,也就是刷新緩存文件,讓系統知道你更改了/usr/lib目錄。

4. 編譯zlib

4.1 編譯zlib

wget http://www.zlib.net/zlib-1.2.12.tar.gz  #下載zlib
tar zxvf zlib-1.2.12.tar.gz #解壓
cd zlib-1.2.12 #進入目錄
./configure #配置
make && make install #編譯安裝

4.2 安裝g++編譯器

如果需要編譯C++代碼,需提前安裝g++編譯器,默認只有gcc編譯器。

yum -y install gcc-c++

4.3 編譯quazip

wget https://udomain.dl.sourceforge.net/project/quazip/quazip/0.7.3/quazip-0.7.3.zip  #下載quazip
unzip quazip-0.7.3.zip  #解壓
cd quazip-0.7.3 #進入目錄
qmake   #生成Makefile 
make    #編譯

說明: quazip是Qt的工程,需要使用qmake進行編譯。

如果是桌面版Linux那就很簡單的,直接在Qt官網上下載xxx.run安裝包,在命令行運行就可以安裝。

那如果在Linux服務器上如何安裝Qt的編譯環境?因為可能有這么個需求,需要在Linux服務器命令行上編譯Qt代碼。 這種情況下就需要搭建一個Qt編譯環境。

解決辦法: 將桌面版上安裝好的Qt目錄下,對應的編譯器套件目錄打包拷貝到Linux服務器上解碼即可使用。

比如:我在ubuntu18.04上安裝了Qt5.12.6,我的安裝目錄:/home/wbyq/Qt5.12.6, 那么將/home/wbyq/Qt5.12.6/5.12.6/gcc_64/目錄打包即可。

下面是/home/wbyq/Qt5.12.6/5.12.6/gcc_64/目錄下的文件。

wbyq@wbyq:~/work$ ls /home/wbyq/Qt5.12.6/5.12.6/gcc_64/
bin  doc  include  lib  mkspecs  phrasebooks  plugins  qml  translations

打包壓縮的命令:

tar czvf gcc_64.tar.gz /home/wbyq/Qt5.12.6/5.12.6/gcc_64

打包之后生成的文件: gcc_64.tar.gz ,拷貝到Linux服務器上解壓,然后將bin目錄下的qmake文件建立一個軟鏈接文件到/usr/local/bin/目錄下。

ln -s /home/work/gcc_64/bin/qmake  /usr/local/bin/qmake

前面的目錄/home/work/gcc_64/bin/qmake 是我在服務器上解壓的路徑。

然后就可以在Qt的工程目錄下使用qmake生成Makefile文件,然后執行make即可編譯Qt程序了。

如果編譯好的Qt程序無法正常的運行,缺少庫,需要告訴系統你的Qt動態庫在哪里。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/work/gcc_64/lib

這行命令在當前命令行執行只是當前終端進程有效,如果想要全局生效,將這行代碼加到/etc/profile文件最后,然后執行reoot命令重啟系統即可。

5. Centos中安裝帶rtmp模塊的Nginx

5.1 新安裝的系統可以先安裝一些工具

yum install -y pcre pcre-devel openssl openssl-devel zlib zlib-devel gcc gcc-c++ 
yum install -y vim wget lsof git zip unzip

5.2 獲取Nginx二進制源碼

聽說srtmp模塊暫時只支持Nginx13-15版本,當前就在官網下載Nginx14

wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar xvf nginx-1.14.2.tar.gz

5.2 獲取nginx-rtmp-module

wget https://github.com/arut/nginx-rtmp-module/archive/refs/tags/v1.2.1.tar.gz
tar xvf v1.2.1.tar.gz

5.3 編譯nginx

cd nginx-1.14.2
./configure --add-module=../nginx-rtmp-module-1.2.1/ --with-http_ssl_module
make && make install
    
#建立軟鏈接
ln -s /usr/local/nginx/sbin/nginx /usr/bin

特別說明:

如果在配置時報錯,一般就是缺東西了,安裝了再配置。

比如:報錯 ./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the mo ....
    
解決:
yum -y install pcre-devel
yum -y install openssl openssl-devel

5.4 修改Nginx的配置文件

打開/usr/local/nginx/conf/nginx.conf文件,在文件最后面加入下面的配置。

rtmp {  
    server {  
        listen 8888;   
        application live {  
            live on;  
        	}
         }  
}

上面8888是rtmp推流和拉流的端口。

修改nginx.conf之后,重啟nginx服務:

sudo service nginx restart

重啟服務之后,使用netstat -ltn命令查看TCP監聽的端口,確認下Nginx的監聽端口是否正常。

正常情況,一個是我們自己設置的rtmp服務監聽端口8888,還有一個80是Nginx默認的HTTP服務監聽端口。

接下來可以在瀏覽器里輸入本機IP地址:http://127.0.0.1/,查看Nginx服務開啟狀態。

5.5 設置開機啟動

wget http://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx

chmod +x /etc/init.d/nginx

update-rc.d nginx defaults

5.6 控制nginx服務的3個命令: 啟動、停止、重啟

service nginx start
service nginx stop
service nginx restart  或者 nginx -s reload  (運行中生效配置文件)

5.7 進行rtmp推流

服務器搭建好之后,推流和拉流的地址就是:  rtmp://< 服務器IP地址 >:8888/live/< 推流存放的目錄 >
例如: rtmp://127.0.0.1:8888/live/xl

5.8 nginx保存推流視頻文件

如果需要讓推流上來的文件保存下來后續進行查看歷史文件,可以配置nginx進行保存。

在原來的/usr/local/nginx/conf/nginx.conf配置文件里rtmp模塊中增加新的配置:

record all;
record_unique on;
record_path "./video";  #視頻緩存的路徑
record_suffix -%Y-%m-%d-%H_%M_%S.flv;

完整/usr/local/nginx/conf/nginx.conf里的rtmp模塊的配置如下:

#RTMP服務
rtmp {  
    server {  
           listen 8888;   
            application live {  
            live on;  #開啟實時
			record all;
    		record_unique on;
    		record_path "./video";  #視頻緩存的路徑
    		record_suffix -%Y-%m-%d-%H_%M_%S.flv;
        	}
         } 	 
}

配置之后執行命令nginx -s reload重啟服務器即可。

5.9 rtmp直播流轉為hls直播流

什么是HLS直播流?

HLS 全稱是 HTTP Live Streaming,是一個由 Apple 公司提出的基于 HTTP 的媒體流傳輸協議,用于實時音視頻流的傳輸。目前HLS協議被廣泛的應用于視頻點播和直播領域。

原理介紹
HLS 跟 DASH 協議的原理非常類似。通過將整條流切割成一個小的可以通過 HTTP 下載的媒體文件,然后提供一個配套的媒體列表文件,提供給客戶端,讓客戶端順序地拉取這些媒體文件播放,來實現看上去是在播放一條流的效果。由于傳輸層協議只需要標準的 HTTP 協議,HLS 可以方便的透過防火墻或者代理服務器,而且可以很方便的利用 CDN 進行分發加速,并且客戶端實現起來也很方便。

HLS 把整個流分成一個個小的基于 HTTP 的文件來下載,每次只下載一些。HLS 協議由三部分組成:HTTP、M3U8、TS。這三部分中,HTTP 是傳輸協議,M3U8 是索引文件,TS 是音視頻的媒體信息。

HLS協議編碼格式要求:

視頻的編碼格式:H264
音頻的編碼格式:AAC、MP3、AC-3
視頻的封裝格式:ts
保存 ts 索引的 m3u8 文件

配置/usr/local/nginx/conf/nginx.conf將RTMP流轉為HLS流。

http模塊的server配置里增加新的配置:

location /live_hls{
	  types {
	  #m3u8 type設置
	  application/vnd.apple.mpegurl m3u8;
	  #ts分片文件設置
	  video/mp2t ts;
	}
	#指向訪問m3u8文件目錄
	alias ./m3u8File; #和rtmp模塊里的hls_path設置路徑一樣
	add_header Cache-Control no-cache; #禁止緩存
}

rtmp模塊的server配置里增加新的配置:

hls on;   #開啟hls
hls_path ./m3u8File;  #hls的ts切片存放路徑 (這是個目錄,會自動創建的)
hls_fragment 2s;	  #本地切片長度
hls_playlist_length 6s;#HLS播放列表長度

/usr/local/nginx/conf/nginx.conf文件的完整的配置如下:

worker_processes  1;   #Nginx進程數,建議設置為等于CPU總核數
 
events {
    worker_connections  1024;  #工作模式與連接數上限
}
 
rtmp_auto_push on;
 
#RTMP服務
rtmp {  
    server {  
        listen 8888;   
        application live {  
            live on;  #開啟實時
			record all;
    		record_unique on;
    		record_path "./video";  #視頻緩存的路徑
    		record_suffix -%Y-%m-%d-%H_%M_%S.flv;
			
            hls on;   #開啟hls
            hls_path ./m3u8File;  #hls的ts切片存放路徑
            hls_fragment 2s;	  #本地切片長度
            hls_playlist_length 6s;#HLS播放列表長度
        	}
         } 	 
}
 
#HTTP服務
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
 
    server {
        listen       8099;
        server_name  localhost;
 
        location / {
            root   html;
            index  index.html index.htm;
        }
 
        location /live_hls{
		    types{
			    #m3u8 type設置
				application/vnd.apple.mpegurl m3u8;
				#ts分片文件設置
				video/mp2t ts;
			}
			#指向訪問m3u8文件目錄
			alias ./m3u8File;
			add_header Cache-Control no-cache; #禁止緩存
		}
 
        location /control{
		    rtmp_control all;
		}
		
		location /stat{
		    rtmp_stat all;
			rtmp_stat_stylesheet stat.xsl;
		}
		location /stat.xsl{
		    root ./nginx-rtmp-module-master;
		}
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

配置之后重啟服務器即可。

按照前面的配置,RTMP推流地址和HTTP訪問地址如下:

RTMP推流和拉流地址: rtmp://127.0.0.1:8888/live/video01


那么對應的HTTP的訪問地址:http://127.0.0.1:8099/live_hls/video01.m3u8

image-20220917174115945

image-20220917174207795

image-20220917174244906

說明: 轉為HLS流之后,如果瀏覽器支持HLS流就可以直接輸入地址播放。一般手機瀏覽器都支持的。比如:蘋果手機的自帶瀏覽器,QQ瀏覽器等瀏覽器都支持直接播放HLS流。PC機的谷歌瀏覽器默認是不支持的。

5.10 NGINX配置HTTP文件服務器

在5.8小節里介紹了如何配置NGINX保留RTMP推流的視頻文件,如果想做一個直播回放,歷史記錄查看的播放器,那么就可以將rtmp視頻緩存的目錄作為HTTP文件服務器訪問的根目錄,通過訪問這個根目錄獲取目錄下文件的索引,得到視頻文件的訪問地址就可以直接進行播放,就能做一個視頻回放播放器。

http模塊里新增加一個server配置,并填入新的配置,詳細內容如下:

server {
		 listen       8090;
		 server_name  localhost;
		 location / {
			root ./video;  #指定哪個目錄作為Http文件服務器的根目錄,如果你這里寫了file就是你的根目錄,那么訪問的時候file就不會出現在目錄中
			autoindex on;   #設置允許列出整個目錄
			autoindex_exact_size off; #默認為on,顯示出文件的確切大小,單位是bytes。改為off后,顯示出文件的大概大小,單位是kB或者MB或者GB
			autoindex_localtime on; #默認為off,顯示的文件時間為GMT時間。改為on后,顯示的文件時間為文件的服務器時間
			charset utf-8; #防止文件亂碼顯示, 如果用utf-8還是亂碼,就改成gbk試試	
        }
	}

特別說明: nginx是支持配置多個server配置,監聽不同的端口,可以給文件服務器單獨設置一個監聽端口,專門作為文件遍歷使用。

image-20220919100939019

/usr/local/nginx/conf/nginx.conf文件的完整的配置如下:

worker_processes  1;   #Nginx進程數,建議設置為等于CPU總核數
 
events {
    worker_connections  1024;  #工作模式與連接數上限
}
 
rtmp_auto_push on;
 
#RTMP服務
rtmp {  
    server {  
        listen 8888;   
        application live {  
            live on;  #開啟實時
			record all;
    		record_unique on;
    		record_path "./video";  #視頻緩存的路徑
    		record_suffix -%Y-%m-%d-%H_%M_%S.flv;
			
            hls on;   #開啟hls
            hls_path ./m3u8File;  #hls的ts切片存放路徑
            hls_fragment 2s;	  #本地切片長度
            hls_playlist_length 6s;#HLS播放列表長度
        	}
         } 	 
}
 
#HTTP服務
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
 
	server {
		 listen       8090;
		 server_name  localhost;
		 location / {
			root ./video;  #指定哪個目錄作為Http文件服務器的根目錄,如果你這里寫了file就是你的根目錄,那么訪問的時候file就不會出現在目錄中
			autoindex on;   #設置允許列出整個目錄
			autoindex_exact_size off; #默認為on,顯示出文件的確切大小,單位是bytes。改為off后,顯示出文件的大概大小,單位是kB或者MB或者GB
			autoindex_localtime on; #默認為off,顯示的文件時間為GMT時間。改為on后,顯示的文件時間為文件的服務器時間
			charset utf-8; #防止文件亂碼顯示, 如果用utf-8還是亂碼,就改成gbk試試	
        }
	}
	
    server {
        listen       8099;
        server_name  localhost;
 
        location / {
            root   html;
            index  index.html index.htm;
        }
		
        location /live_hls{
		    types{
			    #m3u8 type設置
				application/vnd.apple.mpegurl m3u8;
				#ts分片文件設置
				video/mp2t ts;
			}
			#指向訪問m3u8文件目錄
			alias ./m3u8File;
			add_header Cache-Control no-cache; #禁止緩存
		}
 
        location /control{
		    rtmp_control all;
		}
		
		location /stat{
		    rtmp_stat all;
			rtmp_stat_stylesheet stat.xsl;
		}
		location /stat.xsl{
		    root ./nginx-rtmp-module-master;
		}
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

訪問文件測試:http://127.0.0.1:8090

image-20220919101144689

6. Linux下開機啟動的執行流程

6.1 開機執行腳本順序

第一步:init /etc/inittab

第二步:啟動相應的腳本,并且打開終端

rc.sysinit

rc.d(里面的腳本)

rc.local

第三步:啟動login登錄界面 login

第四步:在用戶登錄的時候執行sh腳本的順序,每次登錄的時候都會完全執行的

/etc/profile.d/file

/etc/profile

/etc/bashrc

/root/.bashrc

/root/.bash_profile

6.2 Linux中修改環境變量及生效方法

修改/etc/profile 或者 /etc/bashrc 可以讓環境變量全部用戶全局生效(需要重啟系統)。 修改~/.bash_profile 或~/.bashrc對當前用戶全局有效(需要重啟系統)。

如果需要立即生效,修改完之后用source命令執行,如: source .bash_profile

6.3 rcX.d的啟動級別

一般有開機自啟動的需求時,一般會在/etc/rc.local文件中寫命令行或腳本執行命令的方式來實現。也可以在/etc/profile文件里實現(不建議)。

現在很多Linux發行版,默認是沒有/etc/rc.local這個文件或者沒有去執行,而使用的是/etc/rcX.d。

rcX.d并不是指這個目錄或者文件就是叫rcX.d,這其中的X對應是0~6這7個數字,不同的數字對應著不同的級別

查看當前系統/etc/rcX.d目錄:

[root@ecs-c687-ecrs work]# ls /etc/ | grep rc
bashrc
csh.cshrc
inputrc
mail.rc
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
rc.d
rc.local
vimrc
virc
wgetrc

通過runlevel命令查看當前系統的啟動級別:

啟動級別(X所代表的數字)啟動級別所代表的含義
0停機(不能使用)
1單用戶模式
2多用戶模式,但不能使用NFS等
3完整的多用戶模式
4系統保留(未使用)
5圖形化界面模式
6重啟模式(不能使用)

我當前使用的是CentOS7.4服務器版本,啟動級別如下:

[root@ecs-c687-ecrs ]# runlevel
N 3

查看/etc/rc3.d/目錄下文件的詳細信息:

[root@ecs-c687-ecrs ~]# ls /etc/rc3.d/ -l
total 0
lrwxrwxrwx. 1 root root 20 Feb 14  2022 K50netconsole - > ../init.d/netconsole
lrwxrwxrwx. 1 root root 17 Feb 14  2022 K90network - > ../init.d/network
lrwxrwxrwx  1 root root 19 Sep 15 22:07 S12hostguard - > ../init.d/hostguard
lrwxrwxrwx  1 root root 24 Feb 14  2022 S50multi-queue-hw - > ../init.d/multi-queue-hw

可以看到該目錄下的文件都是鏈接文件,而且都是指向/etc/init.d中的shell腳本或者其他可執行文件,它們的命名方式基本都是以S或者K開頭,其后緊跟一個數字,數字后則是鏈接文件的名字,這個名字可以自行定義。

命名規則解釋如下:

以K90network為例:
    
K表示stop,S表示start。(表示需要傳入參數),也就是說開機自啟動命令會向腳本傳入start或者stop,在腳本里可以收到參數$1進行一些判斷,完成一些不同情況下的邏輯處理。比如:開機執行什么代碼,關機執行什么代碼。

90 表示腳本執行等級。(通常越小越優先)

network與/etc/init.d下的腳本文件名稱保持一致。

6.4 利用rcX.d實現開機自動執行腳本

比如:需求是開機之后創建一個文件,并向文件里存放一些數據。

(1)先在/etc/init.d目錄下創建一個up_demo.sh腳本,編寫腳本代碼:

#!/bin/bash
echo $0 $1 > > /home/up_test.txt

修改腳本權限:

[root@ecs-c687-ecrs init.d]# chmod 777 /etc/init.d/up_demo.sh 
[root@ecs-c687-ecrs init.d]# ls up_demo.sh -l
-rwxrwxrwx 1 root root 76 Sep 16 14:13 up_demo.sh

(2) 在/etc/rc3.d目錄里,創建軟連接。 (因為我的系統啟動級別為3)

[root@ecs-c687-ecrs rc3.d]# ln -s /etc/init.d/up_demo.sh S10up_demo
[root@ecs-c687-ecrs rc3.d]# ls -l
total 0
lrwxrwxrwx. 1 root root 20 Feb 14  2022 K50netconsole - > ../init.d/netconsole
lrwxrwxrwx. 1 root root 17 Feb 14  2022 K90network - > ../init.d/network
lrwxrwxrwx  1 root root 22 Sep 16 14:17 S10up_demo - > /etc/init.d/up_demo.sh
lrwxrwxrwx  1 root root 19 Sep 15 22:07 S12hostguard - > ../init.d/hostguard
lrwxrwxrwx  1 root root 24 Feb 14  2022 S50multi-queue-hw - > ../init.d/multi-queue-hw

(3)重啟系統,進入到/home目錄下查看文件內容,可以看到開機啟動成功,內容已經寫到up_test.txt文件里了。

Welcome to Huawei Cloud Service

[root@ecs-c687-ecrs ~]# cd /home/
[root@ecs-c687-ecrs home]# ls
lib_run.sh  up_test.txt  video  work  work_pc  work.tar.gz
[root@ecs-c687-ecrs home]# cat up_test.txt 
/etc/rc.d/init.d/up_demo.sh start
[root@ecs-c687-ecrs home]#

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11001

    瀏覽量

    206847
  • 服務器
    +關注

    關注

    12

    文章

    8178

    瀏覽量

    82720
  • Qt
    Qt
    +關注

    關注

    1

    文章

    299

    瀏覽量

    37405
  • NFS
    NFS
    +關注

    關注

    1

    文章

    52

    瀏覽量

    25985
  • nginx
    +關注

    關注

    0

    文章

    136

    瀏覽量

    12010
收藏 人收藏

    評論

    相關推薦

    【AWorks試用體驗】+NFS服務器搭建

    本帖最后由 youzizhile 于 2015-8-18 15:53 編輯 6.4 NFS服務器搭建6.4.1 NFS能做什么?在嵌入式Lin
    發表于 08-18 15:51

    【OK210試用體驗】之(4)——NFS服務器搭建

    的文件。$ sudo mount -tnfs localhost:/home/lius/rootfs /mnt(掛載)$ sudo umount /mnt/(卸載)b.用開發板驗證NFS服務器是否可用
    發表于 09-09 00:34

    TQ210 NFS服務器的配置和使用

      這一講將介紹怎么在虛擬機的Linux系統上安裝NFS服務器,然后在TQ210v6開發板上的Linux
    發表于 11-23 15:35

    4412開發板學習筆記-NFS服務器搭建

    Linux根文件系統裁剪和集成也是十分有必要的。接下來說說如何搭建NFS服務器1、安裝nfs
    發表于 06-20 14:29

    Linux 配置 NFS進行服務器端配置,重啟NFS時報錯,請問這是為什么?

    -utils rpcbind 完成了nfs-utills 和 rpcbind(Centos5版本下是portmap)完成了相關的安裝。2、接下來進行服務器端配置,重啟
    發表于 06-21 20:00

    Linux如何搭建自己的Git服務器

    首先需要裝好CentOS系統,作為測試,你可以選擇裝在虛擬機上,這樣比較方便。這步默認你會,就不講了。有了CentOS,那么如何搭建Git服務器呢?
    發表于 07-15 07:50

    ubuntu下搭建NFS服務器

    ubuntu下搭建NFS服務器如何在ubuntu下搭建NFS服務器,是困擾很多人的一個問題,下面
    發表于 11-02 16:08

    CentOS的ntp服務器搭建

    【ntp】CentOS搭建ntp服務器,并實現時間同步
    發表于 03-20 11:18

    Nginx服務器搭建步驟

    搭建Nginx服務器②SSL加密網站③基于域名虛擬主機
    發表于 04-07 16:20

    服務器搭建嵌入式Linux開發環境的步驟

    Linux學習之云服務器搭建嵌入式Linux開發環境第一步:購買云
    發表于 11-08 07:37

    在windows下也可以搭建nfs和tftp服務器開發板提供服務

    Windows下TFTP的服務器軟件有哪些?在windows下也可以搭建nfs和tftp服務器開發板提供
    發表于 12-27 06:40

    【風火輪YY3568開發板免費體驗】FFMPEG的軟編碼、RTMP直播服務、以及板上直播服務器搭建

    nginx-rtmp還要強大,而且是國人自己搞的,因為更新的太快,而且官方教程也很不錯,這里直接給官方鏈接:SRS教程。不過我一會兒還要在板子上搭建RTMP服務器,所以大家也可以直接翻到第三章節,板子上
    發表于 08-29 09:49

    Linux學習之云服務器搭建嵌入式Linux開發環境

    Linux學習之云服務器搭建嵌入式Linux開發環境第一步:購買云
    發表于 11-03 12:21 ?12次下載
    <b class='flag-5'>Linux</b>學習之云<b class='flag-5'>服務器</b><b class='flag-5'>搭建</b>嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>開發</b><b class='flag-5'>環境</b>

    瑞芯為RK3568開發搭建NFS服務器

    瑞芯為RK3568開發搭建NFS服務器
    的頭像 發表于 05-24 14:10 ?846次閱讀
    瑞芯為RK3568<b class='flag-5'>開發</b>板<b class='flag-5'>搭建</b><b class='flag-5'>NFS</b><b class='flag-5'>服務器</b>

    服務器linux中如何搭建php運行環境?

    要在云服務器Linux系統上搭建PHP運行環境,您可以按照以下步驟進行: 1、安裝PHP: 使用包管理工具(如apt、yum等)
    的頭像 發表于 03-21 17:08 ?167次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>