1. 程式人生 > >Mac XMPP Openfire 伺服器配置

Mac XMPP Openfire 伺服器配置

前言

  • Openfire 是免費的、開源的、基於可拓展通訊和表示協議(XMPP)、採用 Java 程式語言開發的實時協作伺服器。Openfire 安裝和使用都非常簡單,並利用 Web 進行管理。單臺伺服器可支援上萬併發使用者。可以使用它輕易的構建高效率的即時通訊伺服器。由於是採用開放的XMPP協議,您可以使用各種支援XMPP協議的IM客戶端軟體登陸服務.

1、配置準備工作

  • 1)配置伺服器準備工作

    • 下載相關軟體

      • jdk-8u91-macosx-x64.dmg

      • openfire_4_1_1.dmg

      • spark_2_8_3.dmg

      • JDK 官網

  • 2)配置伺服器注意事項

    • 提前下載好相關軟體,且安裝目錄最好安裝在全英文路徑下。如果路徑有中文名,那麼可能會出現一些莫名其妙的問題。

    • 在安裝配置 Openfire 或其他 xmpp 伺服器前,需要先安裝 MySQL 資料庫。

  • 3)示例配置環境

    • macOS 10.11.6
    • macOS 10.13.3

2、下載安裝 Openfire

  • Openfire 官網下載最新的 Mac 版本 Openfire 安裝包。

  • 下載完後雙擊安裝包,點選 pkg 檔案,在安裝引導下進行傻瓜式安裝。安裝完成後,進入系統偏好設定,點選 Openfire 圖示。

  • 進入 Openfire 偏好設定介面。點選 Start Openfire,讓 OpenFire 服務開始啟動(預設是啟動的),啟動完畢後,我們就可以點選 Administration 下的按鈕 Open Admin Console,進入伺服器後臺,然後會要求輸入管理員賬號密碼。

  • Openfire 服務啟動不了問題解決

    • 安裝好之後,第一次是可以啟動 openfire 伺服器的,但是電腦重啟後,就再也不能啟動伺服器了,每次一點選 “Start Openfire”,然後載入一下,狀態還是 “Start Openfire” 沒變化,有時甚至還會跳出錯誤提示框,提示 “Could not start the Openfire server”。

    • 解決方案如下:

      • 1)首先需要確認是否已經安裝了 Java 的執行環境,以及 JAVA jdk 是否與當前 macOS 系統版本,Openfire 版本成對應,如果不是,就請先安裝相匹配對應的軟體。

        • 在終端中輸入 java -version
          ,就可以檢視電腦有沒有安裝 JAVA 執行環境。
      • 2)如果軟體,環境對應的,最終的解決辦法是

        • 1> 開啟終端,輸入以下命令:

          # 獲取 Openfire 目錄的訪問許可權  
          $ sudo chmod -R 777 /usr/local/openfire/bin
          
          # 以超級管理員的許可權執行指令碼  
          $ sudo su
          
          # 開啟 openfire 路徑
          cd /usr/local/openfire/bin
          
          # 設定 Java 的環境變數  
          export JAVA_HOME=`/usr/libexec/java_home`
          
          # 輸出檢驗環境變數的值
          echo $JAVA_HOME
          
          • 輸入上面的命令後回車,就會出現後面的這些語句

            /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
            
        • 2> 接著在終端,輸入以下命令:

          cd /usr/local/openfire/bin  
          
          # 執行 Openfire shell 指令碼  
          ./openfire.sh
          
          • 輸入上面的命令後回車,就會出現後面的這些語句

            Openfire 4.1.2 [2016-2-21 2:47:51]
            管理平臺開始監聽:
              http://qianchia-macbookair.local:9090
              https://qianchia-macbookair.local:9091
            Successfully loaded plugin 'admin'.
            
        • 3> 執行完這些命令之後,伺服器就可以啟動了,每次開機後,都啟動不了的話,都試下這個方法。

3、配置 Openfire 伺服器

  • 在 Openfire 偏好設定介面中,點選 Open Admin Console,進入 web 配置頁面,開始配置 Openfire 伺服器。

3.1 選擇語言

  • 簡體中文

3.2 伺服器設定

  • 域:如果只是本地機器上登入,可以設定為本地的域 127.0.0.1。需要遠端登入的話,設定為相應的 IP 地址或域名即可。此處設定為 Mac 的機器名。

  • Server Host Name (FQDN):伺服器名,不能為 IP 地址。

3.3 資料庫設定

  • 1)選擇資料庫

    • 前期 MySQL 資料庫準備工作

      • 1> 設定 /usr/local/openfire 資料夾的訪問許可權為可讀寫

        • 方法 1:在 finder 中前往資料夾 /usr/local/,右鍵 openfire 資料夾,顯示簡介,點選如圖右下角中的鎖圖示解鎖,並設定許可權為可以讀寫。

        • 方法 2:開啟終端,輸入如下命令,其中 777 表示授權可讀寫許可權,000 表示無訪問許可權。

          $ sudo chmod 777 /usr/local/openfire
          
      • 2> 在終端中登陸 MySQL,輸入以下命令,然後輸入資料庫的 root 密碼登入

        # 登入 mysql
        $ mysql -u root -p
        
        • 輸入原 root 賬戶密碼,登入成功後終端會輸出:

          Welcome to the MySQL monitor.  Commands end with ; or \g.
          Your MySQL connection id is 946
          Server version: 5.7.17 MySQL Community Server (GPL)
            		
          Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
            		
          Oracle is a registered trademark of Oracle Corporation and/or its
          affiliates. Other names may be trademarks of their respective 
          owners.
            		
          Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
          
        • -bash: mysql: command not found
          
      • 3> 在終端輸入以下命令,建立資料庫 openfire

        create database openfire;
        
        • 回車後,終端輸出

          Query OK, 1 row affected (0.03 sec)
          
      • 4> 在終端輸入以下命令,匯入 openfire 資原始檔夾 resources/database 下的資料表

        use openfire;
        
        source /usr/local/openfire/resources/database/openfire_mysql.sql
        
        • 在終端出現一排匯入過程

          Query OK, 1 row affected (0.00 sec)
          
          Query OK, 1 row affected (0.00 sec)
          
          Query OK, 1 row affected (0.00 sec)
          
          mysql> 
          
        	
      * 5> 在終端輸入以下命令,重新整理許可權
      
        ```objc
        flush privileges;
      
      • 回車後,終端輸出

        Query OK, 0 rows affected (0.07 sec)
        
      • 6> 在終端輸入以下命令,退出 MySQL

        exit
        
    • 如果要設定外部資料庫(推薦,比如:MySQL),選擇標準資料庫連線。

  • 2)設定資料庫連線

    • 設定標準資料庫連線

    • 1> 資料庫驅動選項

      • 選擇 MySQL,前提是已安裝 MySQL。
    • 2> JDBC 驅動程式類

      • 預設不變,預設為:

        com.mysql.jdbc.Driver
        
    • 3> 資料庫 URL

      • 形式如下:

        jdbc:mysql://你的主機名:埠號/資料庫名稱
        		
        jdbc:mysql://[host-name]:3306/[database-name]?rewriteBatchedStatements=true
        
        • [host-name] :主機名
        • [database-name]:資料庫名稱
      • 這裡設定為:

        jdbc:mysql://localhost:3306/openfire
        
        • 其中主機名 [host-name] 改為 localhost。
        • 其中資料庫名稱 [database-name] 改為 openfire。
      • 解決資料庫字元編碼問題,可以在後面加

        ?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8
        
      • 最終的 url 形式是

        jdbc:mysql://localhost:3306/openfire?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8
        
      • 注意:前提是已存在一個名為 openfire 的資料庫,否則會報如下錯誤,連線配置不成功。openfire 資料庫的建立具體見前面所講的 “前期 MySQL 資料庫準備工作”。

        • The Openfire database schema does not appear to be installed. Follow the installation guide to fix this error.
    • 4> 使用者名稱和密碼

      • 這裡的使用者名稱密碼,是訪問 MySQL 資料庫時使用的帳號和密碼。

        • 使用者名稱:root
        • 密碼:root 賬戶密碼

3.4 配置檔案設定

  • 如果不打算使用 LDAP,則保持預設設定即可。

  • 特性設定時出錯問題解決

    • 解決方法

      • 在 OpenFire 偏好設定中重啟 OpenFire,然後重新進入 OpenFire web 配置頁面,重新開始配置 Openfire 伺服器即可。

3.5 管理員賬戶設定

  • 可以隨便填寫一個管理員郵箱,輸入要設定的密碼即可。管理員賬號預設為 “admin”,如果不設定密碼,則預設密碼為 “admin”。

  • 自定義管理員賬戶名方法

    • 在終端輸入以下命令,輸入資料庫的 root 密碼,登陸具體的資料庫(openfire)

      $ mysql -u root -p openfire
      
    • 刪除表 “ofUser” 中的 admin 帳戶

      delete from ofUser where username = 'admin';  
      
    • 建立自定義管理員(使用者名稱:qianchia,密碼:123456)

      insert into ofUser (username, plainPassword, encryptedPassword, name, email, creationDate, modificationDate) values('qianchia','123456','123456','Administrator','[email protected]','0','0');
      
    • 檢視使用者

      select * from ofUser;
      
      • 如果可以往資料庫裡插入使用者但是在使用者摘要卻沒有資料,這是因為 openfire 的資料庫驅動包太舊了,而安裝的資料庫太新了,把 openfire 裡的驅動包換成新的就行了,路徑:/usr/local/openfire/lib。

3.6 登陸管理控制檯

  • 完成安裝後可以輸入使用者名稱和密碼登陸管理控制檯

  • 預設的管理員帳號是 “admin”,預設管理員密碼 “admin”,如果上面設定了新密碼,則管理員密碼是新密碼。如果重設了使用者名稱,必須重啟 openfire 伺服器。

  • 無法登入管理控制平臺問題解決

    • 安裝 Openfire 後 admin 無法登入管理控制平臺。登入時提示:Login failed:make sure your username and password are correct and that you’re an admin or moderator。

    • 解決方案如下:

      • 1)使用 MySQL 管理工具(如 MySQL Workbench)進入資料庫,進入表 “ofuser”,將該表清空

        • 然後執行該 SQL

          INSERT INTO ofUser (username, plainPassword, name, email, creationDate, modificationDate) VALUES ('admin', 'admin', 'Administrator', '[email protected]', '0', '0'); 
          
      • 2)關閉 Openfire 服務,就是從其控制檯 stop 然後再 start,再用使用者名稱:admin,密碼:admin 登入即可。

4、測試 Openfire 伺服器

4.1 新增測試賬戶

  • 伺服器配置完成之後,我們可以建立幾個使用者,然後客戶端可以使用這些使用者資訊登入,互相傳輸訊息。

4.2 XMPP 客戶端設定與使用

  • 有許多通訊聊天客戶端可以支援 XMPP 協議,比如,Mac 電腦就自帶了一個 “資訊” app,“資訊” app 就支援 jabber 通訊協議(XMPP 的別名)。

  • 開啟 Mac 的 “資訊” app,點選選單 資訊 -> 新增賬戶,選擇其他 “資訊” 賬戶…

  • 選擇 jabber 賬戶型別,填寫相關資訊

    • 賬戶型別:Jabber
    • 使用者名稱:上邊新增的測試賬戶名,格式必須為:名稱@openfire伺服器名稱
    • 密碼:使用者名稱對應的密碼
    • 伺服器:openfire 伺服器地址,可以使用自動查詢伺服器和埠
    • 埠:openfire 伺服器客戶端埠
  • 然後,提示驗證證書,選擇繼續。

  • 登入成功。

  • 登入成功後在 openfire 伺服器端可以看到使用者的登入狀態。

5、解除安裝 Openfire 伺服器

  • 1)解除安裝之前首先要停止 Openfire 服務。

    • 系統偏好中點選 Openfire 圖示,如下圖

    • 在 Openfire 偏好設定介面中,點選 Stop Openfire。

  • 2)刪除 Openfire 檔案。

    • 在終端裡,輸入以下三條命令執行即可。

      $ sudo rm -rf /Library/PreferencePanes/Openfire.prefPane
      
    • 以上執行後需要輸入管理員密碼。

      $ sudo rm -rf /usr/local/openfire
      
      $ sudo rm /Library/LaunchDaemons/org.jivesoftware.openfire.plist
      

6、常見問題

  • 1)每次重啟 Mac 電腦都需要重新配置 Openfire 問題

    • 解決方法:

      • 開啟 /usr/local/openfire/conf/ 資料夾。
      • 將 openfire.xml 和 security.xml 兩個檔案的許可權設定為讀與寫。
      • 重新完成 Openfire 配置。