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
?
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新增方案 。
相關推薦
Ubuntu下redmine搭建及優化
##搭建伺服器 前公司一直用的JIRA,現在換公司了,規模沒有那麼大,對於專案BUG的管理沒有那麼完善,一直用的BUGFREE,最近公司來了個專案總監,想和大公司規範一樣,需要搭建redmine的專案管理伺服器,小公司嘛沒什麼人,只有找我們這Android系統工
ubuntu下Pycharm安裝及配置
字體大小 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 ubuntu下vsftp搭建,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-
Ubuntu下gcc安裝及使用
在Ubuntu下安裝GCC和其他一些Linux系統有點不一樣。 一、安裝 方法一:sudo apt-get build-dep gcc方法二:sudo apt-get install build-essential安裝完了可以執行如下的命令來檢視版本,gcc -
ubuntu下安裝cmake及cmake簡單使用
前言 最近突然想將開發環境轉移到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下安裝memcache及memcached 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
Windows下activemq搭建及應用場景
一:搭建及執行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]Ubuntu下ORA-27102及ORA-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
ubuntu下apktool安裝及使用
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.04下redmine搭建過程
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1