1. 程式人生 > >Ubuntu下redmine搭建及優化

Ubuntu下redmine搭建及優化

##搭建伺服器

前公司一直用的JIRA,現在換公司了,規模沒有那麼大,對於專案BUG的管理沒有那麼完善,一直用的BUGFREE,最近公司來了個專案總監,想和大公司規範一樣,需要搭建redmine的專案管理伺服器,小公司嘛沒什麼人,只有找我們這Android系統工程師來看看,最後這個任務就落到我頭上了,剛開始對於伺服器的搭建沒什麼頭緒,慢慢從網上找到了解決辦法,

##埠開放問題

通過同區域網內IP和埠訪問,果然第二天出現一個問題,不能訪問,重啟伺服器之後只能本機訪問,通過ping能夠訪問到伺服器,但是telnet連結埠超時,於是就懷疑是伺服器埠的問題,

sudo iptables -I INPUT -p tcp --dport 8081 -j ACCEPT

通過上面這個命令開放redmine伺服器埠8081,到這問題就解決了,但是過了一天又遇到類似的情況,伺服器電腦我不知道重啟沒有重啟,通過ssh連結伺服器用指令碼檢視./ctlscript.sh status,redmine是已經執行的,結果如下:

subversion already running
    apache already running
    mysql already running

但就是訪問不了(除了本地訪問),重啟redmine伺服器再次進行訪問,然而還是沒有效果;再次執行開放埠命令,恢復正常。於是自己想著在啟動的指令碼上做一些手腳,自己就對ctlscript.sh這個shell指令碼看了看,既然重啟redmine伺服器沒有開放埠,那就在指令碼啟動後插入開放埠的命令,省得我們每次啟動伺服器時都要自己開放一次埠。

APACHE_SCRIPT=$INSTALLDIR/apache2/scripts/ctl.sh
    …
    elif [ “x$2” = “xapache” ]; then
        if test -x $APACHE_SCRIPT; then
            APACHESCRIPTstartAPACHEERROR=APACHE_SCRIPT start             APACHE_ERROR=?
        fi
    elif

指令碼中有大部分類似上面片段這種的,上面片段指令碼可知,真正啟動伺服器指令碼是$INSTALLDIR/apache2/scripts/ctl.sh這個路徑。跟蹤到這個指令碼,也不許看別的地方

start_apache() {
        test_apache_config
        is_apache_runniredmineng
        RUNNING=$?

if [ $RUNNING -eq 1 ]; then
        echo “$0 $ARG: httpd (pid $HTTPD_PID) already running”
        else
        cleanpid
        if $HTTPD ; then
            echo “$0 $ARG: httpd started at port 8080”
            +echo ‘123’ | sudo -S iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
            +echo “8080 accept”
        else
            echo “$0 $ARG: httpd could not be started”
            ERROR=3
        fi
        fi
    }

+號後面是自己新增的,成功啟動之後開放埠並且列印資訊在終端上,這樣每次啟動的時候應該就可以順帶埠一起開放了

##開機自啟動

自己也優化了一下,每次開機的時候無需去自己啟動redmine伺服器指令碼,網上也搜尋了很多類似的方案,之後就決定用crontab這種方法,之前也研究看了看。

於是自己就新建了redmine.cron檔案

@reboot nohup /home/tao/redmine-3.4.6-1/ctlscript.sh start >> /home/tao/crontablist/reboot.log 2>&1 &

crontab redmine.cron 新增方案,通過crontab -l 查詢,然後重啟自行去驗證一下,log以及伺服器的狀態
    
##檢測伺服器埠

進一步優化,自己寫了個Python指令碼利用crontab來定時的檢測redmine伺服器是否正在執行以及埠是否開放問題。

##!/usr/bin/python
    # -- coding: UTF-8 --
       import os,sys,ConfigParser,telnetlib,time
    #import socket
      print time.strftime(’%Y-%m-%d %H:%M:%S’,time.localtime(time.time()))
    #redmine目錄
    redminePath = os.path.dirname(os.path.abspath(file))
    redmineShell = redminePath + ‘/ctlscript.sh’
    ##shell 命令列
    checkCmd = redmineShell + ’ status’
    stopCmd = redmineShell + ’ stop’
    restartCmd = redmineShell + ’ restart’
    fail = ‘echo redmine伺服器啟動失敗’
    #checkPort = ‘telnet 127.0.0.1 port’
    openPort = “echo ‘123’ | sudo -S iptables -I INPUT -p tcp --dport port_id -j ACCEPT”

#Shell命令工具
    class ShellUtils:
        def init(self):
            print “ShellUtils建構函式”
        @classmethod
        def getStrOut(cls,cmd):
            f = os.popen(checkCmd,‘r’)
            strout = f.read()
            f.close()
            return strout
        @classmethod
        def execute(cls,cmd):
            id = os.system(cmd)
            return id

#配置檔案工具類
    class ConfigUtils:
        def init(self):
            pass
        def addConfigParser(self,filename):
            self.config = ConfigParser.ConfigParser()
            self.config.read(filename)
        def getValue(self,section,option):
            return self.config.get(section,option)

#測試埠是否開放
    def testconn( host , port ):
        #sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        #sk.settimeout(1)
        server = telnetlib.Telnet()
        try:
            #sk.connect((host,port))
            server.open(host,port)
            return 1
        except Exception:
            return 0
        finally:
            server.close()
            #sk.close()

#例項配置檔案工具類
    configUtils = ConfigUtils()
    configUtils.addConfigParser(redmineShell + ‘/properties.ini’)
      #執行redmine檢測指令碼
    strOut = ShellUtils.getStrOut(checkCmd)

#判斷指令碼每行輸出內容
    for line in strOut.splitlines(False):
        if “not running” in line:#某一伺服器沒有執行
            startid = ShellUtils.execute(restartCmd)
            break
        else:
            port = 0
            if “subversion” in line: #subversion伺服器執行,從配置檔案中取得其埠號
                port = configUtils.getValue(“Subversion”,“subversion_port”)
            elif “apache” in line:
                port = configUtils.getValue(“Apache”,“apache_server_port”)
            elif “mysql” in line:
                port = configUtils.getValue(“MySQL”,“mysql_port”)
            test_id = testconn(“127.0.0.1”,port)
            if test_id == 0:
                #開啟
                ShellUtils.execute(openPort.replace(“port_id”,port))
            elif test_id == 1:
                print (‘埠{0}已經是開放狀態’.format(port))

該指令碼放在/home/tao/redmine-3.4.6-1伺服器目錄下,指令碼邏輯很簡單

1、執行檢測指令碼,如沒有執行則開啟伺服器
  2、如已經在執行,則檢測伺服器中埠

其中還有讀取配置檔案properties.ini獲取啟動的三個服務埠號,以及python中檢測埠的介面,本來想通過“telnet 127.0.0.1 port”命令來檢測埠情況的,心想既然用python指令碼編寫,不想那麼“shell化”。其中python語言檢測指令碼網上查了下可以有兩種方法,上面程式碼中都有。

然後就類似重啟的優化,在redmine.cron檔案中新增:

*/10 * * * * python /home/tao/redmine-3.4.6-1/autotest.py >> /home/tao/crontablist/autotest.log 2>&1 &

意思是每10分鐘執行一次autotest.py指令碼。crontab redmine.cron新增方案 。

相關推薦

Ubunturedmine搭建優化

##搭建伺服器 前公司一直用的JIRA,現在換公司了,規模沒有那麼大,對於專案BUG的管理沒有那麼完善,一直用的BUGFREE,最近公司來了個專案總監,想和大公司規範一樣,需要搭建redmine的專案管理伺服器,小公司嘛沒什麼人,只有找我們這Android系統工

ubuntuPycharm安裝配置

字體大小 creat 配置 註冊 字體 spa tar.gz mark 註冊碼 1.從http://www.jetbrains.com/pycharm/download/下載最新的Pycharm tar xfz pycharm-*.tar.gz,將Pycharm文件夾解壓到

Ubuntu安裝MySQL簡單操作

base lms vsp pic splay mysql- != nbsp tar Ubuntu上安裝MySQL非常簡單只需要幾條命令就可以完成。 1. sudo apt-get install mysql-server 2. apt-get isntall mysql-c

ubuntu安裝mysql卸載mysql方法

查看 ati 用戶名 google mysql-cli entos googl 通過 oot 首先: 別的系統下可能是 sudo apt-get install libaio 但在 Ubuntu Kylin 下 需要 sudo apt-get install liba

zookeeper集群搭建優化

eal snapshot 環境 方式 ocs 是否 threshold 生成文件 忽略 zookeeper配置:三臺集群。 zookeeper二進制包安裝方法:tar -xf zookeeper-3.4.6.tar.gz -C /usr/localcd /usr/local

ubuntu安裝Teamviewer使用

這兩天一直在折騰Teamviewer的安裝,一路遇到了不少坑,特此整理記錄吧。 一、Windows和Ubuntu環境下安裝Teamviewer 我們常用的功能是Windows下遠端控制Ubuntu,此時兩個環境下的Teamviewer版本要保證一致,否則一方會提示另

linux ubuntuvsftp搭建,tar安裝包模式

linux ubuntu下vsftp搭建,tar安裝包模式 下載tar包:http://download.chinaunix.net/download.php?id=43934&ResourceID=19 下載得到vsftpd-3.0.2.tar.gz 上傳到linux/ho

ubuntu安裝curl報錯處理

1)安裝curl 1.1  下載安裝包 wget https://curl.haxx.se/download/curl-7.55.1.tar.gz 1.2 解壓 tar -xzvf curl-7.55.1.tar.gz 1.3 安裝 cd curl-

Ubuntugcc安裝使用

在Ubuntu下安裝GCC和其他一些Linux系統有點不一樣。 一、安裝 方法一:sudo apt-get build-dep gcc方法二:sudo apt-get install build-essential安裝完了可以執行如下的命令來檢視版本,gcc -

ubuntu安裝cmakecmake簡單使用

前言 最近突然想將開發環境轉移到linux上,同時也準備閱讀些github上的開原始碼,發現現在開源專案一般都是用cmake管理的。所以就在自己的虛擬機器上搗鼓了一天。一開始我也不知道cmake是啥,後來通過折騰也大概知道其作用,它所做的事其實就是告訴編譯器如何去編譯連結原始碼。你也許想問不是有make

ubuntu rabbitMQ安裝配置遠端訪問web管理介面

#1 更新 apt-get update apt-get upgrade #2 安裝Erlang wget http://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc apt-key add erla

ubuntu安裝方式彙總 ubuntu安裝memcachememcached ubuntu安裝mongo擴充套件 ubuntu安裝redis擴充套件

apt-get 可輔助通過 apt-cache search curl | grep php 查詢已支援的外掛,然後通過下面apt-get下載安裝,例: apt-get install php5-curl 可具體參考:ubuntu下安裝memcache及mem

Shadowsocks伺服器搭建優化

轉載自:http://blog.51cto.com/xvjunjie/2071369   客戶端下載地址:https://github.com/shadowsocks (1)基礎安裝篇: 系統:Ubuntu 1.  檢視Python版本:保證Pyth

ubuntu網路配置IP修改

以下內容為原創,歡迎轉載,轉載請說明來源:https://blog.csdn.net/masterbee/article/details/80253820 當安裝完成ubuntu或其它類似的linux系統後,為了連線上網,一般還需要配置網路IP等操作。 簡單步驟如下: 1、首先先檢視PCI

Windowsactivemq搭建應用場景

一:搭建及執行1:解壓下載好的activemq壓縮包2:進入${dir}/apache-activemq-5.5.0/bin目錄,雙擊執行activemq.bat,等待出現:3:進入http://127.0.0.1:8161/admin/(這是activemq自帶的一個web

rails學習之windows環境搭建專案建立(圖文並茂,簡單易懂)

第一步: 直接下載railsinstaller進行安裝,這樣省去很多後續問題和麻煩。 筆者用的是railsinstaller-2.1.0,這是一個exe程式,下載好之後直接點選安裝即可。 注:需 要railsinstaller-2.1.0的安裝程式的留下郵箱,我單個發。 第

[oracle]UbuntuORA-27102ORA-00845錯誤處理

錯誤資訊: ORA-27102: out of memory Linux-x86_64 Error: 28: No space left on device 00845, 00000, "MEMORY_TARGET not supported on this system

ubuntuapktool安裝使用

apktool安裝 1.從官網下載 網址:https://code.google.com/p/android-apktool/downloads/list 或者我已經下載好的 apktool1.5.2.tar.bz2 linux系統下 apktool-install-l

ubuntu 安裝memcached配置遠端訪問

官網地址 wget 下載 wget http://memcached.org/files/memcached-1.5.9.tar.gz 解壓 tar -zxvf memcached-1.

ubuntu14.04redmine搭建過程

httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1