<p>公司要做一個IM系統,現階段人力資源很有限。產品、研發、測試目前就我一個人。跟領導溝通后決定先采用開源原件tigase先解決有無問題,后續人員到位后進行重構。本文主要介紹生產環境下tigase的安裝問題(此次安裝是在測試機器中進行,但是周邊環境近似生產環境)。</p><p>網上已有很多Tigase的安裝文檔,Tigase官方文檔(英文)也很詳細。但是我還是要再寫一下安裝過程,主要原因是網上的安裝文檔基本都是在特別簡單的環境中進行安裝的過程,細節不夠豐富;Tigase官方文檔內容和方式很多,也很詳細,但是對於新手閱讀准備時間較長,此外英文讀起來相對困難,一不小心會遺漏細節(原版文檔隨着版本的更新,有些錯誤的地方)。</p><p>tigase官方文檔有很多安裝方式,但是在真實的生產環境下,GUI等方式並不適用。linux服務器需要通過ssh方式連接,中間有堡壘機,研發人員拿不到linux用戶的密碼(Web安裝方式在某些步驟需要輸入root密碼,該方式也不一定適用)。DBA要掌握數據庫管理權限,一般也不會給數據庫用戶提供超級管理員權限,端口也可能不是默認端口(tigase如果用mysql數據庫,個別存儲過程需要此權限。DBA提供的用戶密碼往往很復雜,含有特殊字符,也需要進行特殊處理)。因此在初步研究后,開始了tigase的安裝。安裝大概花了1天半時間,期間各種趟坑。</p><p><strong>安裝環境</strong></p><table><tbody><tr class="firstRow"><td width="162" valign="top" style="word-break: break-all;">環境</td><td width="254" valign="top" style="word-break: break-all;">版本</td></tr><tr><td width="162" valign="top" style="word-break: break-all;">操作系統</td><td width="254" valign="top" style="word-break: break-all;">CentOS release 6.5 (Final)</td></tr><tr><td width="162" valign="top" style="word-break: break-all;">數據庫</td><td width="254" valign="top" style="word-break: break-all;">MySQL 5.6.23</td></tr><tr><td width="162" valign="top" style="word-break: break-all;">tigase server</td><td width="254" valign="top" style="word-break: break-all;">7.1.0</td></tr><tr><td width="162" valign="top" style="word-break: break-all;">JDK</td><td width="254" valign="top" style="word-break: break-all;">1.8</td></tr></tbody></table><p>一、硬件服務器操作系統<br></p><p>運維團隊負責上架,操作系統CentOS release 6.5 (Final)。 感謝 蓋益</p><p>兩台機器 bw-test-ab-v01,bw-test-ab-v02(暫時不可訪問,運維團隊跟進)</p><p>原計划在兩台上部署tigase集群,結果有一台不可使用,方案果斷改成先單機部署(以后再上集群部署方法)。</p><p>二、數據庫</p><p>DBA團隊負責安裝數據庫 MySQL 5.6.23,安裝在bw-test-ab-v01服務器。感謝 盛亮、畢常奇</p><p> 數據庫安裝在bw-test-ab-v01</p><p> 具體參數如下 用戶:tigasedb_test 密碼:r#xxxxxxx09H^jTQ%p 端口:3324 地址:10.xxx.90.194 (用x隱去敏感信息)</p><p>三、JDK安裝</p><p>1、在usr目錄下創建java安裝目錄<br></p><p>cd /usr</p><p>mkdir java</p><p>2、拷貝文件jdk-8u112-linux-x64.tar.gz 到/usr/java 目錄(java目錄需要提前創建)</p><p>3、解壓jdk到當前目錄</p><p>tar -zxvf jdk-8u112-linux-x64.tar.gz得到文件夾jdk1.8.0_112</p><p>4、建立快捷連接(節省目錄長度)</p><p>ln -s /usr/java/jdk1.8.0_60/ /usr/jdk</p><p>5、編輯配置文件,配置環境變量</p><p>vim /etc/profile</p><p>文件末尾添加如下內容:</p><p>JAVA_HOME=/usr/jdk</p><p>CLASSPATH=$JAVA_HOME/lib/</p><p>PATH=$PATH:$JAVA_HOME/bin</p><p>export PATH JAVA_HOME CLASSPATH</p><p>6、執行命令配置生效</p><p>source /etc/profile</p><p>四、Tigase服務器安裝</p><p>1、准備tigase服務器文件</p><p>將tigase-server-7.1.0-b4379-dist-max.tar.gz 文件拷貝到bw-test-ab-v01 機器的 /usr目錄。解壓縮 tar -xzvf tigase-server-7.1.0-b4379-dist-max.tar.gz ,將得到的目錄重命名為tigase。 tigase服務器的安裝目錄為 /usr/tigase。</p><p>2、修改tigase.conf (/usr/tigase/etc目錄中) 中 JAVA_HOME=/usr/jdk (JDK安裝路徑)。</p><p>3、初始化數據庫</p><p>(1)在/usr/tigase目錄執行命令 mysql -h 10.xxx.90.194 -P 3324 -utigasedb_test -p'r#xxxxxxx09H^jTQ%p'; (密碼用由於有特殊字符,需要用''括起來,另外發現mysql -h localhost -P 3324 -utigasedb_test -p'r#xxxxxxx09H^jTQ%p'; 連不上數據庫,可能跟數據庫安裝方式相關)</p><p>(2)官方文檔Prepare the MySQL Database for the Tigase Server章節有一堆數據庫賬號授權過程,我這邊DBA估計已經做了相關工作了,此步驟略過。</p><p>(3)初始化數據庫表結構</p><p>mysql> use tigasedb;(切換當前數據庫)</p><p>分別執行如下5條語句</p><p>mysql> source database/mysql-schema-7-1-schema.sql; (這一條文件名官方文檔寫出錯了 ) </p><p>mysql> source database/mysql-pubsub-schema-3.2.0.sql;</p><p>mysql> source database/mysql-socks5-schema.sql;</p><p>mysql> source database/mysql-schema-7-1-sp.sql (官方文檔遺漏此條,如果不執行,tigase server無法正常啟動)</p><p>mysql> source database/mysql-schema-7-1-props.sql (不確定是否必須執行)</p><p><span style="color: rgb(255, 0, 0);">注意:</span>在執行mysql-schema-7-1-sp.sql語句時,由於DBA提供的賬號沒有SUPER權限(一般DBA都不會給),出現如下錯誤</p><p>ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)</p><p>經排查,是mysql-schema-4-sp.sql文件中的TigGetDBProperty函數沒有創建成功,果斷聯系DBA給開了權限,將此函數的creat語句單獨執行了一遍,成功。</p><p>(4)配置數據庫UTF-8支持。DBA給的庫已經是該編碼了,忽略。</p><p>4、修改init.properties文件。配置如下</p><p>config-type=--gen-config-def</p><p>--admins=admin@bw-test-ab-v01.dns.guazi.com</p><p>--virt-hosts=bw-test-ab-v01.dns.guazi.com</p><p>--debug=server</p><p>--comp-name-1=http</p><p>--comp-class-1=tigase.http.HttpMessageReceiver</p><p>--user-db=mysql</p><p>--user-db-uri=jdbc:mysql://10.xxx.90.194:3324/tigasedb?user=tigasedb_test&password=r#xxxxxxx09H^jTQ%25p&useUnicode=true&characterEncoding=UTF-8</p><p>http/setup/admin-credentials=admin:tigase</p><p>注意幾個點:</p><p>(1)virt-hosts配什么</p><p>tigase有一個安裝方式 Installation Using Web Installer,才用此方式,中間某一步,tigase會自動讀出虛擬主機名字。這個方式我不詳細講了。</p><p>virt-hosts值跟具體的網絡環境有關,更多細節未來再描述。我用的方法,通過兩個linux命令</p><p>cat /etc/resolv.conf 得到dns.guazi.com</p><p>hostname 得到bw-test-ab-v01</p><p>拼接起來搞定。(之前我在windows上配置tigase7.0.4的時候,是修改了一下hosts文件,設置127.0.0.1為test@org,最后hosts貌似配的機器名)</p><p>(2)user-db-uri的配置</p><p>由於數據庫密碼中含有'<span style="color: rgb(255, 0, 0);">%</span>'<span style="color: rgb(227, 0, 0);">需要轉碼</span>, '%'需要改為 '%25' 配置為r#I7Gk9sn09H^jTQ<span style="color: rgb(227, 0, 0);">%25</span>p 。否則tigase連不上數據庫</p><p>(3)admins配置</p><p>此時,tigase數據庫中還沒有用戶,這里配置admin@bw-test-ab-v01.dns.guazi.com為管理員,等到服務器裝好后,注冊admin@bw-test-ab-v01.dns.guazi.com用戶,該用戶默認就會具有管理員權限。當然可以配置多個管理員。</p><p>(4)http/setup/admin-credentials=admin:tigase 是通過Web方式安裝的初始賬戶和密碼,我沒有將它刪掉。</p><p>5、啟動tigase服務器</p><p>按照以上步驟,完成了Tigase服務器配置,在/usr/tigase目錄下運行 ./scripts/tigase.sh start 即可啟動服務器。觀察日志logs/tigase-console.log 和 logs/tigase.log.0 沒有報錯。服務器安裝完畢。訪問 http://10.xxx.90.194:8080/ 正常。</p><p>四、注冊用戶</p><p>訪問地址http://10.xxx.90.194:8080/ui,能看到注冊按鈕,理論上就可以注冊用戶使用了。但是我裝的tigase-server-7.1.0-b4379這個版本此功能竟然無法使用(注冊用戶沒反應,數據庫中也沒有成功),目前我還不確定是我安裝問題,還是這個版本的什么bug。</p><p>怎么解決呢?通過數據庫直接注冊用戶。</p><p>在Navicat(我連接數據庫的客戶端),運行命令 call TigAddUserPlainPw('test1@bw-test-ab-v01.dns.guazi.com', 'test1'); 成功注冊用戶test1@bw-test-ab-v01.dns.guazi.com,密碼test1。 在注冊一個admin@bw-test-ab-v01.dns.guazi.com用戶(管理員)。</p><p>檢查數據庫表tig_users,用戶注冊成功。</p><p>五、使用</p><p>我是用的Psi軟件,兩個用戶能夠正常使用。同時通過Psi軟件能夠注冊新用戶。更多使用細節,以后再聊。</p>
<p style="clear:both;"></p>
<p class="translate">
來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/31556438/viewspace-2284421/,如需轉載,請注明出處,否則將追究法律責任。
</p>
原文地址:http://blog.itpub.net/31556438/viewspace-2284421/