[Azure][Linux]Mantis 安裝筆記

[Azure][Linux]Mantis 安裝筆記

 

這一陣子剛有遇到需要安裝 Mantis 來使用,以往安裝都是在實體機器上,這次試試看換到 Centos 6.5 的版本上,分別使用 Hyper-V 的 VM 和 Azure 上的 VM 來做測試,並且把相關指令給記錄下來,免得以後要再重新安裝的時候又忘記了。目前 CentOS 安裝算是相當的方便,而大部分在 Centos 所需要使用的很多套件,也都幾乎都可以完全使用 yum 來安裝了,但我還是習慣將 Apache , PHP 和 mySQL 都是拿 source 來 build,這樣以後發覺有甚麼功能缺少或者是需要調整,會比較方便一點。

 

Pre-Installation


為了方便安裝順利,因此除了前面所說的 Apache , PHP & mySQL 是下載 Source 來進行編譯,其他一些套件我就直接用 yum 來做安裝。但因為 azure 上面的 vm 登入的時候不是使用 root,這樣安裝過程會比較不方便,因此我先利用以下指令來變更 root 的密碼,這樣安裝就會比較容易一點。至於安裝在 Hyper-V 上面的 VM,就沒有這樣的煩惱了。

Access a root shell…  
# sudo -s  
  
Disable SELinux enforcement  
# setenforce 0  
  
Change the root password (or any other user)  
# passwd  
New password:  
  
Turn SELinux enforcement back on  
# setenforce 1

 

當使用 root 身分登入之後,先利用 yum 來安裝套件

# yum install  curl-devel  lib-xml2-devel  lib-jpeg-devel  freetype-devel  ncurses-devel  zlib-devel  gd-devel  libxml2-devel  openssl-devel

 

上述幾個安裝來說都不大會有問題,但是如果要安裝 libmcrypt-devel 的話,在 azure 上面可以直接使用 yum 來安裝

#yum install  libmcrypt-devel

 

但如果是使用 Centos 6.5 的光碟或者是網路安裝的話,則需要自行去下載 source 手動編譯處理

# wget http://softlayer.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz
 
# tar zxvf  libmcrypt-2.5.8.tar.gz
 
# cd libmcrypt-2.5.8
 
# configure
 
# make
 
# make install

 

因為我們需要編譯那些程式,因此需要安裝 gcc,但在 azure 上面安裝的時候會比較麻煩,會因為套件相容性的問題造成需要先手動來安裝 kernel-header,才能再用 yum 安裝 gcc,因此如果是使用 azure 的環境,則要先用以下的指令來安裝

Azure
# yum --disableexcludes=main install kernel-headers-2.6.32-279.14.1.el6.openlogic.x86_64
 
Install C Complier 
# yum install gcc-c++

 

Download Package


接下來我們要來下載三個主要軟體,基本上更新的版本應該也是可以,只是為了後續還要裝一些其他的東西,因此我就沒有都使用到最新的版本。在進行之前我先建立一個 /src 的目錄,把這些相關的套件都放到這個目錄下:

mysql 5.6.15
# wget http://mysql.isu.edu.tw/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz
 
Apache 2.2.26
# wget http://ftp.twaren.net/Unix/Web/apache//httpd/httpd-2.2.26.tar.gz
 
PHP 5.4.24
# wget http://tw1.php.net/distributions/php-5.4.24.tar.gz
 

 

而這次我們主要安裝的是 Mantis,也為了後續在做系統維護的處理上會比較方便,因此除了下載 Mantis 的 Source 之外,另外我也下載了 phpMyAdmin 來搭配使用。

Mantis 1.2.15
# wget http://sourceforge.net/projects/mantisbt/files/mantis-stable/1.2.15/mantisbt-1.2.15.tar.gz/download
 
phpMyAdmin 4.1.15
# wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.1.5/phpMyAdmin-4.1.5-all-languages.tar.gz

 

Add New Partition


因為在 azure 上面所使用的 CentOS 6.5 是已經包裝好的,為了避免後續磁碟空間不足,我另外掛了一個 50GB 的 VHD 的檔案,因此我必須要用指令來掛上這個新的磁碟,並指定一個目錄名稱,這樣後續才可以來使用。首先先用 fdisk -l 的方式來查驗新增的 vhd 檔案是否有被 vm 偵測到。

image

 

確認磁碟代號是 /dev/sdc 之後,接著我們用 fdisk /dev/sdc 的指令來建立 Partition,以下編號 1 的地方輸入 n,表示建立一個新的 Partition。編號 2 的地方輸入 p,選擇我們要建立的是 Primary Partition。編號 3 的地方輸入 p ,用來查看我們剛剛建立的 Partition 的資訊,要記住這裡所得到的訊息 「/dev/sdc1」,編號 4 的地方輸入 w,表示確認要寫入到磁碟。

image

 

接下來就可以使用以下的指令來進行格式化

# mkfs -t ext4 /dev/sdc1

 

等待一下子之後,接著我們就可以把那個 Partition 掛在起來使用了

建立目錄
# mkdir /var/data
 
掛載到 /var/data 下來使用 
# mount /dev/sdc1  /var/data

 

接著使用 blkid 的指令,來查看所有磁碟的裝置 UUID 和 TYPE

image

 

並將這些資訊給記錄到 /etc/fstab 內,這樣下次啟動的時候就會自動掛載起來了。因此到這個部分完成之後,可以使用 reboot 指令進行重新開機,接著使用 df -m 的指令,如果一切都沒有問題的話,則應該會看到 /var/data 這個節點會有你當初建立磁碟的空間了。

 

Complier


一般我會先安裝 mysql,因為他比較單純,接著安裝 Apache,最後才安裝 PHP。

而 mysql 在之前的版本,是透過 configure 和 make,但到了之後的版本,則要使用 CMAKE 來做編譯,因此要先透過 yum 把 CMAKE 給安裝好之後,將壓縮檔案透過 tar zxvf 的指令解壓縮後,進入到解開的目錄下進行編譯

Install CMAKE
# yum install  cmake
 
編譯 mysql 
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/var/data/mysql -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ZLIB=system -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
 
# make 
 
# make install

 

其中比較要特別注意的是,如果在編譯的過程中有發生錯誤,如果需要再重新編譯時,要記得先將目錄下的 CMakeCache.txt 的檔案刪除,否則會一值出現同樣的錯誤。如果順利安裝完成,則透過以下的方式進行設定

建立啟動 mysql 的帳號
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin mysql
 
設定放置資料庫的區域
# mkdir /var/data/mysql
# chown -R mysql.mysql  /var/data/mysql
 
設定 mysql 的啟動腳本
# cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
# chmod +x /etc/init.d/mysqld
# chkconfig --add mysqld
 
建立資料庫
# cd /usr/local/mysql
# scripts/mysql_install_db  --basedir=/usr/local/mysql  --datadir=/var/data/mysql  --user=mysql
 
修改啟動參數
# vi /etc/my.cnf

 

安裝玩 mysql 之後,接下來則進行安裝 apache,一樣也是先將壓縮檔案透過 tar zxvf 的指令解壓縮後,再進入到解開的目錄下進行編譯

編譯 Apache
# ./configure --enable-dav-fs --enable-rewrite --enable-dav --enable-so --enable-cgi --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config
# make
# make install
 
建立啟動 Apache 的帳號
# groupadd -r apache
# useradd -g apache -r -s /sbin/nologin apache
 
建立 web 目錄
# mkdir /var/data/web
# chown -R apache.apache /var/data/web

 

但因為 Apache 透過編譯 source 的狀況下,需要自己撰寫啟動腳本,因此透過 vi /etc/init.d/httpd 的方式,將下面的內容放在該檔案中

#!/bin/sh
#
# Startup script for the Apache Web Server
#
# chkconfig: 345 85 15
# description: Apache is a World Wide Web server.  It is used to serve \
# HTML files and CGI.
# processname: httpd
# pidfile: /var/run/httpd.pid
# config: /etc/httpd/conf/httpd.conf

apachectl=/usr/local/apache2/bin/apachectl

# Source function library.
. /etc/rc.d/init.d/functions

# See how we were called.
case "$1" in
start)
echo -n "Starting httpd: "
daemon $apachectl -k start
echo
touch /var/lock/subsys/httpd
;;
stop)
echo -n "Shutting down http: "
killproc httpd
echo
rm -f /var/lock/subsys/httpd
rm -f /var/run/httpd.pid
;;
status)
status httpd
;;
restart)
$0 stop
$0 start
;;
reload)
echo -n "Reloading httpd: "
killproc httpd -HUP
echo
;;
graceful)
echo -n "$1 httpd: "
daemon $apachectl $1
echo
;;
help|configtest|fullstatus)
echo -n "$1 httpd: "
$apachectl $1
;;
*)
echo "Usage: httpd {start|stop|restart|reload|status|fullstatus|graceful|help|configtest} "
exit 1
esac

exit 0

 

設定好之後,再透過以下指令設定權限後,就完成 Apache 的安裝

# chmod +x /etc/init.d/httpd
# chkconfig --add httpd

 

最後我們就要來安裝 PHP 了,一樣也是先將壓縮檔案透過 tar zxvf 的指令解壓縮後,再進入到解開的目錄下進行編譯

編譯 PHP
# ./configure --with-config-file-path=/usr/local/apache2/conf --prefix=/usr/local/php --enable-sockets --enable-ftp --with-zlib --with-freetype-dir --with-gd --with-curl --enable-mbstring --with-jpeg-dir --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-apxs2=/usr/local/apache2/bin/apxs --with-mcrypt  --with-openssl
# make
# make install

 

接著在我們編譯時候加入的第一個參數 config-file-path 所指定的目錄下 /usr/local/apache2/conf,產生一個 php.ini 的檔案,用來存放 PHP 的相關參數

[Date]
date.timezone = "Asia/Taipei"

 

並且在 /usr/local/apache2/conf/mime.type 中加入 ( 也可以加在 http.conf 的參數檔內,但前面要記得加入 AddType )

application/x-httpd-php                         php phps

 

此時如果啟動 apache,會發現還是一樣無法連線,主要是因為 CentOS 預設 iptables 是啟動的,而且只允許 tcp 22 的通過,因此我們要修改 /etc/sysconfig/iptables 的設定,把需要的 port 給開啟就可以了

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

 

 

Install Mantis


等前面的步驟都完成 後,就可以來進行安裝 mantis 了,以目前所拿到的版本,我會先將檔案解壓縮放在 /var/data/web/mantisbt-1.2.15 的目錄下,並且建立一個符號鏈結 issue 在 /var/data/web 的目錄下 ( 這樣以後更換不同版本的時候會比較方便一點 ),接著將 mantis 的相關目錄設定擁有者是 apache 的使用者和使用群組,接著我們就可以在 Apache 的設定檔 http.conf 的最後面,加入相關設定。在這個範例中我們建立一個 issue 的別名,指定到 /var/data/web/issue,並且設定相關參數

Alias   /issue  "/var/data/web/issue"
 
<Directory "/var/data/web/issue">
        DirectoryIndex index.php
        Options FollowSymLinks
        AllowOverride   None
        Order   allow,deny
        Allow from all
</Directory>

 

接下來就可以連接網站進行相關設定了。因為第一次連線的時候,Mantis 會自動判斷尚未安裝,因此會跳到安裝的畫面去,而執行完畢之後,為了安全的緣故,因此我就將 mantis 下面的 admin 目錄給刪除。設定好之後,就可以使用預設的帳號 Administrator 和預設的密碼 root 來進行登錄,並且就可以進行相關設定和使用了。