簡介
最近由于項目管理需要,找了一些開源相關的軟件页响,有幾款大體看下了,從頁面段誊、功能都還不錯闰蚕,比如
-
Taiga
-
orangescrum
-
jitamin
-
openproject
-
wekan
經過一些簡單對比之后,包括需求连舍、流行度没陡、安裝難易程度等,暫時選用了wekan來試一把
安裝過程
環(huán)境
- Linux機器一臺
- root權限
安裝步驟
- 創(chuàng)建wekan用戶
- 安裝Nodejs(或者nvm)
- 安裝MongoDB
- 安裝Wekan
- 設置為系統(tǒng)服務(可選)
- 安裝Nginx作為反向代理(可選)
創(chuàng)建wekan用戶
useradd -m -d /opt/wekan wekan
passwd wekan
su wekan
Step1. 安裝Nodejs
下載Nodejs
wget https://nodejs.org/dist/v10.16.1/node-v10.16.1-linux-x64.tar.xz
解壓
xz -d node-v10.16.1-linux-x64.tar.xz
tar xvf node-v10.16.1-linux-x64.tar
解壓成功如下
total 164
drwx------ 2 wekan wekan 4096 Aug 1 01:59 bin
-rw------- 1 wekan wekan 51895 Aug 1 01:59 CHANGELOG.md
drwx------ 3 wekan wekan 4096 Aug 1 01:59 include
drwx------ 3 wekan wekan 4096 Aug 1 01:59 lib
-rw------- 1 wekan wekan 68764 Aug 1 01:59 LICENSE
-rw------- 1 wekan wekan 26840 Aug 1 01:59 README.md
drwx------ 5 wekan wekan 4096 Aug 1 01:59 share
配置環(huán)境變量
打開~/.bashrc
索赏,增加如下一行
export PATH=/path_to_node/bin:$PATH
中間path_to_node
替換為對應的nodejs的正確路徑盼玄,然后使配置生效,source ~/.bashrc
潜腻,執(zhí)行node -v
[wekan@host-*** ***]$ node -v
v10.16.1
Step2.安裝MongoDB
參考官方教程和網絡教程埃儿,有簡單的一鍵安裝和自定義的安裝,下面的教程是較為繁瑣和靈活的自定義的安裝
下載
在這里選擇
這邊下載的是
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.11.tgz
解壓配置
tar zxvf mongodb-linux-x86_64-4.0.11.tgz
在~/.bashrc
里面配置環(huán)境變量融涣,步驟和node安裝里面的類似童番,打開~/.bashrc
精钮,增加如下一行
export PATH=/path_to_mongodb/bin:$PATH
path_to_mongodb替換為你的mongodb的路徑并使配置生效source ~/.bashrc
配置
一般mongodb可以在命令行里面直接帶上配置參數,例如
mongod --dbpath=data/db --logpath=log/log.txt --fork
但是這樣顯得命令特別繁瑣剃斧,一般都會使用配置文件轨香,參考配置文件如下
systemLog:
# verbosity: 0 #日志等級,0-5幼东,默認0
# quiet: false #限制日志輸出臂容,
# traceAllExceptions: true #詳細錯誤日志
# syslogFacility: user #記錄到操作系統(tǒng)的日志級別,指定的值必須是操作系統(tǒng)支持的根蟹,并且要以--syslog啟動
path: /path_to_mongodb/logs/log.txt #日志路徑策橘。
logAppend: false #啟動時,日志追加在已有日志文件內還是備份舊日志后娜亿,創(chuàng)建新文件記錄日志, 默認false
logRotate: rename #rename/reopen丽已。rename,重命名舊日志文件买决,創(chuàng)建新文件記錄沛婴;reopen,重新打開舊日志記錄督赤,需logAppend為true
destination: file #日志輸出方式嘁灯。file/syslog,如果是file,需指定path躲舌,默認是輸出到標準輸出流中
timeStampFormat: iso8601-local #日志日期格式丑婿。ctime/iso8601-utc/iso8601-local, 默認iso8601-local
# component: #各組件的日志級別
# accessControl:
# verbosity: <int>
# command:
# verbosity: <int>
processManagement:
fork: true #以守護進程運行 默認false
# pidFilePath: <string> #PID 文件位置
net:
port: 27017 #監(jiān)聽端口,默認27017
bindIp: 127.0.0.1 #綁定監(jiān)聽的ip没卸,deb和rpm包里有默認的配置文件(/etc/mongod.conf)里面默認配置為127.0.0.1,若不限制IP羹奉,務必確保認證安全,多個Ip用逗號分隔
maxIncomingConnections: 65536 #最大連接數约计,可接受的連接數還受限于操作系統(tǒng)配置的最大連接數
wireObjectCheck: true #校驗客戶端的請求诀拭,防止錯誤的或無效BSON插入,多層文檔嵌套的對象會有輕微性能影響,默認true
ipv6: false #是否啟用ipv6,3.0以上版本始終開啟
unixDomainSocket: #unix socket監(jiān)聽,僅適用于基于unix的系統(tǒng)
enabled: false #默認true
pathPrefix: /tmp #路徑前綴煤蚌,默認/temp
filePermissions: 0700 #文件權限 默認0700
# ssl: #估計用不到耕挨,所以沒有自己看
# sslOnNormalPorts: <boolean> # deprecated since 2.6
# mode: <string>
# PEMKeyFile: <string>
# PEMKeyPassword: <string>
# clusterFile: <string>
# clusterPassword: <string>
# CAFile: <string>
# CRLFile: <string>
# allowConnectionsWithoutCertificates: <boolean>
# allowInvalidCertificates: <boolean>
# allowInvalidHostnames: <boolean>
# disabledProtocols: <string>
# FIPSMode: <boolean>
security:
authorization: disabled# enabled/disabled #開啟客戶端認證
javascriptEnabled: true #啟用或禁用服務器端JavaScript執(zhí)行
# keyFile: <string> #密鑰路徑
# clusterAuthMode: <string> #集群認證方式
# enableEncryption: <boolean>
# encryptionCipherMode: <string>
# encryptionKeyFile: <string>
# kmip:
# keyIdentifier: <string>
# rotateMasterKey: <boolean>
# serverName: <string>
# port: <string>
# clientCertificateFile: <string>
# clientCertificatePassword: <string>
# serverCAFile: <string>
# sasl:
# hostName: <string>
# serviceName: <string>
# saslauthdSocketPath: <string>
# setParameter: #設置參數
# <parameter1>: <value1>
# <parameter2>: <value2>
storage:
dbPath: /path_to_mongodb/db #數據庫,默認/data/db,如果使用軟件包管理安裝的查看/etc/mongod.conf
indexBuildRetry: true #重啟時尉桩,重建不完整的索引
# repairPath: <string> #--repair操作時的臨時工作目錄筒占,默認為dbPath下的一個_tmp_repairDatabase_<num>的目錄
journal:
enabled: true #啟動journal,64位系統(tǒng)默認開啟,32位默認關閉
# commitIntervalMs: <num> #journal操作的最大時間間隔蜘犁,默認100或30
directoryPerDB: false #使用單獨的目錄來存儲每個數據庫的數據,默認false,如果需要更改翰苫,要備份數據,刪除掉dbPath下的文件沽瘦,重建后導入數據
# syncPeriodSecs: 60 #使用fsync來將數據寫入磁盤的延遲時間量,建議使用默認值
engine: wiredTiger #存儲引擎革骨,mmapv1/wiredTiger/inMemory 默認wiredTiger
# mmapv1:
# preallocDataFiles: <boolean>
# nsSize: <int>
# quota:
# enforced: <boolean>
# maxFilesPerDB: <int>
# smallFiles: <boolean>
# journal:
# debugFlags: <int>
# commitIntervalMs: <num>
# wiredTiger:
# engineConfig:
# cacheSizeGB: <number> #緩存大小
# journalCompressor: <string> #數據壓縮格式 none/snappy/zlib
# directoryForIndexes: <boolean> #將索引和集合存儲在單獨的子目錄下农尖,默認false
# collectionConfig:
# blockCompressor: <string> #集合數據壓縮格式
# indexConfig:
# prefixCompression: <boolean> #啟用索引的前綴壓縮
# inMemory:
# engineConfig:
# inMemorySizeGB: <number>
operationProfiling: #性能分析
slowOpThresholdMs: 100 #認定為查詢速度緩慢的時間閾值,超過該時間的查詢即為緩慢查詢良哲,會被記錄到日志中, 默認100
mode: off #operationProfiling模式 off/slowOp/all 默認off
# replication: #復制集相關
# oplogSizeMB: <int>
# replSetName: <string>
# secondaryIndexPrefetch: <string>
# enableMajorityReadConcern: <boolean>
# sharding: #集群分片相關
# clusterRole: <string>
# archiveMovedChunks: <boolean>
# auditLog:
# destination: <string>
# format: <string>
# path: <string>
# filter: <string>
# snmp:
# subagent: <boolean> #當設置為true盛卡,SNMP作為代理運行
# master: <boolean> #當設置為true,SNMP作為主服務器運行
# basisTech:
# rootDirectory: <string>
官方詳細說明如下
https://docs.mongodb.com/manual/reference/configuration-options/
注:其中systemLog下面的path和storage下面的dbPath需要提前創(chuàng)建筑凫,另外這里為了省事滑沧,鑒權的配置關閉,生產環(huán)境注意要開啟巍实,開啟后配置這里不詳細說明了
security:
authorization: disabled# enabled/disabled #開啟客戶端認證
啟動
前往配置文件所在的路徑滓技,執(zhí)行mongod -f mongod.conf
,其中mongod.conf
為配置文件
[wekan@host-***mongodb-linux-x86_64-4.0.11]$ mongod -f mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 29376
child process started successfully, parent exiting
啟動成功
驗證
執(zhí)行mongo
[wekan@host-*** mongodb-linux-x86_64-4.0.11]$ mongo
MongoDB shell version v4.0.11
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("98e3d5df-e0a5-4204-8611-4e685fb048b4") }
MongoDB server version: 4.0.11
Server has startup warnings:
2019-08-03T15:39:05.520+0800 I STORAGE [initandlisten]
2019-08-03T15:39:05.520+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2019-08-03T15:39:05.520+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
2019-08-03T15:39:06.642+0800 I CONTROL [initandlisten]
2019-08-03T15:39:06.642+0800 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
2019-08-03T15:39:06.642+0800 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2019-08-03T15:39:06.642+0800 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
2019-08-03T15:39:06.642+0800 I CONTROL [initandlisten]
2019-08-03T15:39:06.642+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2019-08-03T15:39:06.642+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2019-08-03T15:39:06.642+0800 I CONTROL [initandlisten]
2019-08-03T15:39:06.642+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2019-08-03T15:39:06.642+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2019-08-03T15:39:06.642+0800 I CONTROL [initandlisten]
2019-08-03T15:39:06.642+0800 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 4096 processes, 1000000 files. Number of processes should be at least 500000 : 0.5 times number of files.
2019-08-03T15:39:06.642+0800 I CONTROL [initandlisten]
> show dbs;
admin 0.000GB
config 0.000GB
local 0.000GB
一些warning先不管了
安裝Wekan
同樣的棚潦,我們使用安裝包手動安裝
下載
找到兩個鏈接令漂,一個是https://github.com/wekan/wekan/releases,如下
和這個https://releases.wekan.team/
我下載的是下面這個丸边。
解壓
total 102164
drwxr-xr-x 4 wekan users 4096 Aug 6 15:24 bundle
-rw------- 1 wekan users 104502193 Aug 6 14:50 wekan-latest.zip
進入bundle
total 324
-r--r--r-- 1 wekan users 8 Jul 26 16:08 .node_version.txt
-r--r--r-- 1 wekan users 534 Jul 26 16:08 README
-rw-r--r-- 1 wekan users 295270 Aug 6 16:44 log.txt
-r--r--r-- 1 wekan users 151 Jul 26 16:08 main.js
drwxr-xr-x 5 wekan users 4096 Jul 26 16:08 programs
drwxr-xr-x 2 wekan users 4096 Jul 26 16:08 server
-r--r--r-- 1 wekan users 601 Jul 26 16:08 star.json
OK叠必,有個README文件就好,我們看下README的內容
This is a Meteor application bundle. It has only one external dependency:
Node.js v8.15.1. To run the application:
$ (cd programs/server && npm install)
$ export MONGO_URL='mongodb://user:password@host:port/databasename'
$ export ROOT_URL='http://example.com'
$ export MAIL_URL='smtp://user:password@mailhost:port/'
$ node main.js
Use the PORT environment variable to set the port where the
application will listen. The default is 80, but that will require
root on most systems.
Find out more about Meteor at meteor.com.
安裝
根據README的指示安裝妹窖,安裝過程中纬朝,可能會碰到這個問題
Error: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found
這是因為我們libstdc++的版本過低,嘗試升級一下即可骄呼,我這邊偷懶共苛,是直接從另外一臺機器上面拷貝了一個高版本的過來,如下
total 1108
lrwxrwxrwx 1 wekan users 19 Aug 6 15:00 libstdc++.so.6 -> libstdc++.so.6.0.25
-rw-r--r-- 1 wekan users 1126624 Aug 6 14:59 libstdc++.so.6.0.25
這是后再運行安裝命令即可
運行
根據README的說明蜓萄,運行需要配置mongodb隅茎、訪問url、mail服務器這幾個绕德,這邊簡單寫了個啟動腳本
#!/bin/bash
#配置mongodb鏈接url患膛,這邊配置的是不帶賬號密碼的
export MONGO_URL='mongodb://10.**.**.198:27017/wekan'
#訪問url
export ROOT_URL='http://10.**.**.146'
#引入動態(tài)鏈接庫,這個可以根據自己的環(huán)境配置
export LD_LIBRARY_PATH=/***/library:$LD_LIBRARY_PATH
#監(jiān)聽端口耻蛇,80需要root權限
export PORT=80
#啟動命令,這邊省略了我的路徑信息
/***/node-v10.16.1-linux-x64/bin/node main.js > log.txt 2>&1 &
執(zhí)行這個腳本胞此,觀察進程是否ok即可
使用
在瀏覽器訪問配置的對應鏈接臣咖,簡單注冊進入即可