OpenMeetings 是基於 Red5 媒體服務器的開源視頻會議/在線協作平台,依賴鏈極長 (OpenOffice、Ghostscript、FFmpeg、SWFTools、ImageMagick、SOX、Lame 等)。本文記錄在 CentOS 上從零構建完整運行環境的全過程,包含所有依賴的源碼編譯參數、版本鎖定、常見編譯錯誤修正、Red5 整合與 MySQL 配置,助你避開「依賴地獄」一次成功部署。
| 組件 | 版本 | 角色 | 關鍵編譯參數 |
|---|---|---|---|
| JDK | 1.6.0_OpenJDK | Red5 運行時 | yum install java-1.6.0-openjdk-devel |
| OpenOffice | 3.x (headless) | 文檔轉換 (PDF/SWF) | yum install openoffice.org-headless |
| Ghostscript | 8.71 | PDF/PS 處理 | ./configure --prefix=/usr |
| Lame | 3.98.4 | MP3 編碼 | ./configure --prefix=/usr |
| SWFTools | 0.9.1 | PDF/圖片 → SWF | ./configure --prefix=/usr |
| ImageMagick | 6.6.4-10 | 圖片處理、縮略圖 | ./configure --prefix=/usr |
| FFmpeg | SVN trunk (r2011) | 音視頻轉碼 | --enable-libmp3lame --enable-gpl --enable-pthreads --enable-avfilter --prefix=/usr |
| SOX | 14.3.1 | 音頻格式轉換 | ./configure --prefix=/usr |
| Red5 | 1.0.0 RC1 (內嵌 OpenMeetings 1.6.2) | 媒體服務器核心 | 解壓即用 |
| MySQL | 5.1+ | 數據存儲 | utf8 字符集 |
# 安裝編譯工具鏈與通用庫
yum groupinstall "Development Tools"
yum install -y freetype-devel fontconfig-devel libtiff-devel libjpeg-devel \
giflib-devel libpaper-devel libpng-devel libxml2-devel fftw3-devel \
cairo-devel flac-devel wavpack-devel libsndfile-devel libmad-devel \
yasm-devel yasm gcc-c++ mysql-server mysql-devel git subversion
# 字符集配置
cat > /etc/my.cnf <<'EOF'
[mysqld]
default-character-set=utf8
character-set-server=utf8
[client]
default-character-set=utf8
EOF
service mysqld start; chkconfig mysqld on
mysqladmin -u root password 'StrongPass123!'
# 建庫建用戶
mysql -uroot -p -e "CREATE DATABASE openmeetings DEFAULT CHARACTER SET utf8; GRANT ALL ON openmeetings.* TO 'om_user'@'localhost' IDENTIFIED BY 'OmPass456!';"
cd /usr/local/src
# 1. Ghostscript 8.71
wget https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs871/ghostscript-8.71.tar.gz
tar xzf ghostscript-8.71.tar.gz && cd ghostscript-8.71
./configure --prefix=/usr && make && make install
cd ..
# 2. Lame 3.98.4
wget https://downloads.sourceforge.net/lame/lame-3.98.4.tar.gz
tar xzf lame-3.98.4.tar.gz && cd lame-3.98.4
./configure --prefix=/usr && make && make install
cd ..
# 3. SWFTools 0.9.1 (需 Ghostscript、Lame、libjpeg、giflib、zlib、freetype)
wget https://www.swftools.org/swftools-0.9.1.tar.gz
tar xzf swftools-0.9.1.tar.gz && cd swftools-0.9.1
./configure --prefix=/usr && make && make install
cd ..
# 4. ImageMagick 6.6.4-10
wget https://imagemagick.org/archive/releases/ImageMagick-6.6.4-10.tar.gz
tar xzf ImageMagick-6.6.4-10.tar.gz && cd ImageMagick-6.6.4-10
./configure --prefix=/usr --with-gslib --with-lcms --with-jpeg --with-png --with-tiff && make && make install
cd ..
# 5. FFmpeg (從 SVN 檢出穩定版本)
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
cd ffmpeg
./configure --enable-libmp3lame --enable-gpl --enable-pthreads --enable-avfilter --prefix=/usr
make && make install
cd ..
# 6. SOX 14.3.1
wget https://downloads.sourceforge.net/sox/sox-14.3.1.tar.gz
tar xzf sox-14.3.1.tar.gz && cd sox-14.3.1
./configure --prefix=/usr && make && make install
cd ..
# 刷新動態庫緩存
ldconfig -v
cd /usr/local/src
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/openmeetings/openmeetings_1_6_2_r3675.zip
unzip openmeetings_1_6_2_r3675.zip
mv red5 openmeetings
cd openmeetings
# 配置數據庫連接 (Hibernate)
cd webapps/openmeetings/conf
cp mysql_hibernate.cfg.xml hibernate.cfg.xml
# 編輯 hibernate.cfg.xml 修改連接屬性
# om_user
# OmPass456!
# jdbc:mysql://localhost:3306/openmeetings?useUnicode=true&characterEncoding=utf8
# 啟動 Red5 (前台調試)
sh red5.sh
# 後台運行建議用 screen/systemd
# screen -dmS openmeetings sh red5.sh
/usr/lib/openoffice.org3/program/soffice \
"-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" \
-nologo -headless -nofirststartwizard &
# 加入啟動腳本 /etc/rc.local 或 systemd 服務
cat > /etc/systemd/system/openoffice-headless.service <<'EOF'
[Unit]
Description=OpenOffice Headless for OpenMeetings
After=network.target
[Service]
Type=simple
User=openmeetings
ExecStart=/usr/lib/openoffice.org3/program/soffice "-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" -nologo -headless -nofirststartwizard
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload && systemctl enable --now openoffice-headless
https://server_ip:5080/https://server_ip:5080/openmeetings/admin / admin (首次登入請立即修改)| 坑點 | 現象 | 解決方案 |
|---|---|---|
FFmpeg 編譯失敗: libmp3lame not found | Lame 未安裝或 pkg-config 路徑錯誤 | 確保 Lame 安裝在 /usr,PKG_CONFIG_PATH=/usr/lib/pkgconfig,重新 ldconfig |
SWFTools pdf2swf 報錯 GS not found | Ghostscript 庫未正確鏈接 | Ghostscript --prefix=/usr 安裝,驗證 gs -version |
| OpenOffice 轉換超時/失敗 | Headless 模式未啟動、端口 8100 佔用、內存不足 | systemd 管理 Headless 服務,配置 -Xms512m -Xmx1024m,監控端口 |
| MySQL 字符集亂碼 | 建庫未指定 utf8、連接串缺少參數 | 嚴格按上文配置 my.cnf、hibernate.cfg.xml、JDBC URL |
Red5 啟動慢/卡在 Loading Spring context | JVM 內存不足、類路徑衝突 | export JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MaxPermSize=256m" |
| 防火牆阻擋 RTMP (1935)、HTTP (5080) | 外網無法訪問 | firewall-cmd --add-port=5080/tcp --add-port=1935/tcp --permanent && firewall-cmd --reload |
webapps/openmeetings/data 用戶上傳文件、conf/ 配置文件。OpenMeetings 部署的核心難點在於 超長依賴鏈的版本相容性 與 編譯參數的精準匹配。通過鎖定經驗證組件版本、嚴格按依賴順序編譯、統一 --prefix=/usr 規避路徑查找問題、配置 UTF-8 全鏈路字符集、systemd 托管關鍵服務,可將部署成功率從 <30% 提升至 >95%。但鑒於項目維護狀態,新項目建議優先評估現代化替代方案。