1 SSH服務器
1.1 安裝open-ssh軟件包
在Ubuntu上建立SSH服務器是非常簡單的,但是XP上就要費點勁了。首先,安裝Cygwin。好在網易提供了Cygwin的鏡像,所以這一步現在變得異常地簡單。
1. 從Cygwin的官方網站http://Cygwin.com上下載setup.exe
2. 安裝時選擇http://mirrors.163.com,下載速度特別地快
3. 選擇軟件包OpenSSH,安裝直到完畢
1.2 安裝sshd服務
1. 安裝完畢後,將Cygwin安裝文件夾裏的bin文件夾“C:\Cygwin\bin”放Path環境變量中
2. 雙擊桌面上的Cygwin圖標打開控制檯,輸入 “ssh-host-config -y” 將sshd註冊爲系統服務,並設置成爲自動啓動
3. 手動控制ssh服務啓動(也可以重啓電腦)“net start sshd”(關閉爲“net stop sshd”)
4. 配置防火牆,打開ssh的端口,默認是22(tcp)
1.3 配置sshd服務器
用UltraEdit或寫字板打開配置文件C:\Cygwin\etc\sshd_config
1. #PermitRootLogin yes => PermitRootLoginno #禁止root登錄
2. #PasswordAuthentication yes=> PasswordAuthenticationno #僅使用密鑰登錄
3. #Protocol 2,1 => Protocol 2 #只允許SSH2方式
1.4 爲用戶添加公鑰
1.4.1 生成公鑰和私鑰
1. 從http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html處,下載putty.zip
2. 解壓後運行puttygen.exe
3. 在最下面Parameters裏選擇SSH-2 RSA,Number of bits in a generated key填1024(默認就是這樣)
4. 點擊Generate,然後鼠標隨機移動,直到生成完畢
5. 複製公鑰(最上面的框裏的,以ssh-rsa打頭)到文本文件中,並在存儲爲authorized_keys文件
6. 點擊Save private key保存私鑰文件
注意:千萬不要直接點Save public key來保存公鑰,那樣會生成很多無用的字符串,導致無法登錄。
1.4.2 配置公鑰
1. 切換到用戶的主目錄:cd ~
2. 新建.ssh文件夾:mkdir .ssh
3. 將剛纔保存的公鑰文件authorized_keys拷貝到.ssh文件夾中
4. 修改authorized_keys的屬性爲600:chmod 600 authorized_keys
注意:.ssh文件夾的屬性group和other也不能具有寫權限,否則無法登錄。
注意:每一個服務器用戶可以有多個公鑰和私鑰對
1.4.3 嘗試連接sshd服務器
運行putty.zip解壓出來的putty.exe
1. Session裏Host name填寫安裝了sshd服務器的ip
2. Connection->Data裏的Auto-loginusername填你剛纔配置的公鑰的用戶名
3. Connection->SSH->Auth裏的Private Keyfile for authentication選擇剛纔生成的私鑰文件
4. 點擊Open,應該就能連接上了
2 安裝git
2.1 服務器端
1. 重新運行Cygwin的setup.exe,安裝git
2. 初始化一個bare的倉庫,比如:在/opt/git/test.git文件夾中運行 git --bare init
3. 保證你設置的用戶名有權限讀寫test.git
2.2 客戶端
1. 安裝msysgit和tortoisegit最新版(都按默認方式安裝)
2. tortoisegit找一個空文件夾,右鍵點擊clone
3. url裏輸入<username>@<serverip/name>:/opt/git/test.git
4. 在下面選中Load Putty Key,選擇生成的私鑰文件,然後點擊OK,無意外的話,應該是可以成功clone的
5. 添加一個文件,看看能不能push,沒有意外,應該是可以的
3 通過http拷貝倉庫
3.1 安裝apache
1. 重新運行Cygwin的setup.exe
2. 安裝apache httpd2
3. 添加用戶環境變量CYGWIN=server(不知道爲什麼添加,不添加就不好使)
4. 重新打開Cygwin命令行
5. 執行cygserver-config,註冊cygserver爲windows系統服務
6. 手動啓動cygserver服務:net start cygserver
7. 運行apache服務器:/usr/sbin/apachectl2 start
8. 打開瀏覽器訪問http://localhost,It works!
3.2 配置git倉庫
1. 將倉庫中的hooks文件夾中的pre-update.sample重命名爲pre-update
2. 添加執行屬性:chmod a+x hooks/pre-update
注意:這個配置使得每次push之後,都會更新服務器的info,保證通過http,clone是正確的。
3.3 配置apache
1. 打開/etc/apache2/http.conf文件
2. 搜索httpd-vhosts.conf,將#Include /etc/apache2/extra/httpd-vhosts.conf這一行前面的#去掉
3. 打開/etc/apache2/extra/httpd-vhosts.conf文件
4. 在結尾添加如下內容
<VirtualHost *:80>
ServerAdmin<your email>
ServerNamegit.gitserver
DocumentRoot/opt/git
<Directory/opt/git/>
Orderallow,deny
allowfrom all
</Directory>
</VirtualHost>
5. 重新啓動apache服務器
a) /usr/sbin/apachectl2 stop
b) /usr/sbin/apachectl2 start
3.4 客戶端clone方法
1. 配置DNS服務器或直接修改客戶端的hosts文件,將服務器的ip指向git.gitserver
2. 在客戶端運行 git clone http://git.gitserver/test.git 不出意外的話應該就能匿名clone了
4 建立gitweb服務器
即通過網頁訪問git倉庫。
4.1 下載git源碼
1. 重新運行Cygwin的setup.exe,
a) 安裝git的source file,安裝的源文件在/usr/src中
b) 安裝gcc4和make
2. 解壓git源文件,進入解壓的文件夾
3. make GITWEB_PROJECTROOT=”/opt/git”prefix=/usr gitweb/gitweb.cgi
4. cp –Rf gitweb /srv/www/
注意:GITWEB_PROJECTROOT指定git倉庫集文件夾
注意:/srv/www/是apache httpd2建立的文件夾,也可以放其他文件夾
4.2 配置apache
1. 打開/etc/apache2/extra/httpd-vhosts.conf文件
2. 在結尾添加如下內容
<VirtualHost *:80>
ServerNameweb.gitserver
DocumentRoot/srv/www/gitweb
<Directory/srv/www/gitweb>
OptionsExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverrideAll
orderallow,deny
Allowfrom all
AddHandlercgi-script cgi
DirectoryIndexgitweb.cgi
</Directory>
</VirtualHost>
3. 重新啓動apache服務器
4.3 客戶端訪問方法
1. 配置DNS或直接修改客戶端的hosts文件,使得web.gitserver指向服務器
2. 在瀏覽器中輸入http://web.gitserver
3. 不出意外,就可以直接訪問git倉庫了
5 安裝redmine
注:安裝完後,我發現官網上提供了一個鏈接,做了一個windows下的安裝包,不知道好不好使。鏈接http://bitnami.org/stack/redmine如果好使的話,下面的就不用看了。
注:今天試了試bitnami,確實挺好使的,一鍵裝好apache,mysql,ruby/rails/rake,redmine,自動配置好!只要注意幾個問題:
- 安裝時一定要關閉殺毒軟件和安全軟件,比如360等
- 所有填的東西都不要有中文,比如人名,否則不能正確生成配置文件
- 注意以前沒有安裝衝突的東西,比如imagemagick(如果最後都裝好了,但是就是不能啓動redmine,看看log文件)
5.1 安裝ruby/rails/rack等
1. 在rubyforge中下載並安裝rubyinstaller-1.8.7-p357.exe(不要安裝新版,新版不好使)
2. 在開始菜單中,選擇Ruby 1.8.7-p357-> Start Command Prompt with Ruby
3. gem install rails -v=2.3.11
4. gem install rack -v=1.1.1
5. gem install mysql
6. 下載官網安裝說明中libmysql.dll http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll拷貝到ruby的bin文件夾
7. gem update --system 1.6.2 (否則後面的db:migrate會報錯)
5.2 下載redmine並解壓
1. 從官網鏈接下載redmine 1.3.0 http://rubyforge.org/frs/?group_id=1850
5.3 安裝並配置mysql
1. 下載mysql的win32版,並安裝(我安裝的是mysql-5.5.19-win32.msi),記得鉤選將mysql的執行文件路徑加入到Path環境變量
2. 打開cmd,執行mysql -u root -p,並輸入密碼,然後執行以下3個sql語句
a) create database redminecharacter set utf8;
b) create user'redmine'@'localhost' identified by 'my_password';
c) grant all privileges onredmine.* to 'redmine'@'localhost';
5.4 配置redmine
1. 進入redmine解壓的文件夾,重命名config/database.yml.example爲config/database.yml,並修改production下的內容爲
production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password:my_password
2. 在redmine文件夾執行
a) rake generate_session_store
b) set RAILS_ENV=production
c) rake db:migrate
d) rake redmine:load_default_data
3. 測試:
a) ruby script/server webrick -eproduction
b) 在瀏覽器中訪問http://localhost:3000
c) 登錄管理員登錄:用戶名 admin 密碼 admin
5.5 mongrel
webrick服務器只能用來做測試,發佈時可以採用mongrel服務器或apache服務器,不過apache對應的module太難整了,mongrel比較好配置。
5.5.1 安裝mongrel
1. 安裝mongrel:gem install mongrel
2. 安裝mongrel_service:gem install mongrel_service
5.5.2 下載mongrel bug補丁
rails和mongrel版本有點不兼容導致的問題。
1. 下載https://gist.github.com/raw/826692/cb0dcf784c30e6a6d00c631f350de99ab99e389d/mongrel.rb
2. 運行 rails --version 看看rails到底是什麼版本,我的居然是2.3.14,我明明安裝的是2.3.11……
3. 打開mongrel.rb文件,第一行if後面一看就知道是個數組,在最後加上你的rails的版本,比如[,’2.3.14’],保存之
4. 將mongrel.rb文件保存到redmine文件夾中的config\initializers\子文件夾中
5.5.3 註冊mongrel服務
1. 註冊服務:mongrel_rails service::install -N redmine -c <redmine文件夾路徑,如c:\redmine>-p 3000 -e production
2. 打開控制面板->管理工具->服務,找到redmine,設置爲“自動”,使得redmine服務開機啓動
注:
1. 手動啓動服務:mongrel_rails service::start -N redmine
2. 手動停止服務:mongrel_rails service:: stop -N redmine
3. 刪除服務:mongrel_rails service::remove -N redmine
5.5.4 mongrel和apache同時運行
據說可以用apache的mod_proxy模塊,將apache的某個folder映射到mongrel所在的端口,不過不太會整,放棄之。
用到的資源
爲了方便大家,把安裝時用到的文件上傳了,兩個包: