主要參考文章:
http://blog.csdn.net/forestarmy
http://blog.chinaunix.net/space.php?uid=25153965&do=blog&id=160561
1、安裝OpenSUSE 11.4
2、打開防火牆的一些端口,以使能SSH等:
- # vi /ete/sysconfig/Susefirewall2
- FW_SERVICES_EXT_TCP="ssh 445 139 389 telnet 80 81 82 "
- FW_SERVICES_EXT_UDP="137 138 "
- # rcSuSEfirewall2 restart
3、搭建OBS
obs(opensuse build system)是meego源碼編譯的重要工具,也可以說是必備工具,有了它我們可以方便的對源碼中各個包進行編譯,進而做出meego鏡像,所以搭建一個自己的obs系統是meego開發的重要部分。
- cd /etc/zypp/repos.d/;
- wget http://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_11.4/openSUSE:Tools.repo
- zypper ref
安裝obs-server和相關的包
- zypper in obs-server obs-signd obs-utils createrepo nfs-client obs-api memcached lighttpd
設置數據庫
默認開機開啓:
- chkconfig --add mysql
- rcmysql start
注意,chkconfig --add mysql可能會失敗:
linux-ubai:/obs # chkconfig --level 35 mysql on
insserv: FATAL: service network is missed in the runlevels 2 to use service mysql
insserv: exiting now!
/sbin/insserv failed, exit code 1
解決辦法是,將"network"的level2打開:chkconfig --level 2 network on。
使用系統提供的工具安裝數據庫:
- /usr/bin/mysql_secure_installation
在這裏可以輸入自己數據庫密碼,默認是空的
創建數據庫:
- mysql -u root -p
- mysql> create database api_production;
- mysql> create database webui_production;
將obs的用戶信息加到數據庫中:
- GRANT all privileges
- ON api_production.*
- TO 'obs'@'%', 'obs'@'localhost' IDENTIFIED BY 'obspasswd';
- GRANT all privileges
- ON webui_production.*
- TO 'obs'@'%', 'obs'@'localhost' IDENTIFIED BY 'obspasswd';
- FLUSH PRIVILEGES;
在這裏設置obs的密碼:obspasswd
爲了使用數據庫,需要配置OBS:
- vi /srv/www/obs/api/config/database.yml
- #change the production section
- production:
- adapter: mysql
- database: api_production
- username: obs
- password: obspasswd
- vi /srv/www/obs/webui/config/database.yml
- #change the production section
- production:
- adapter: mysql
- database: webui_production
- username: obs
- password: obspasswd
填充數據庫:
- cd /srv/www/obs/api/
- RAILS_ENV="production" rake db:setup
- cd /srv/www/obs/webui/
- RAILS_ENV="production" rake db:setup
設置lighttpd
- 網頁形式顯現出來
-
- # vi /etc/lighttpd/lighttpd.conf
- include_shell "cat /etc/lighttpd/vhosts.d/*.conf"
- vi /etc/lighttpd/vhosts.d/obs.conf
- $SERVER["socket"] == ":80" {
- rails_app = "webui"
- rails_root = "/srv/www/obs/webui"
- rails_procs = 3
- # production/development are typical values here
- rails_mode = "production"
- log_root = "/srv/www/obs/webui/log"
- include "vhosts.d/rails.inc"
- }
- $SERVER["socket"] == ":81" {
- rails_app = "api"
- rails_root = "/srv/www/obs/api"
- rails_procs = 3
- # production/development are typical values here
- rails_mode = "production"
- log_root = "/srv/www/obs/api/log"
- include "vhosts.d/rails.inc"
- }
- $SERVER["socket"] == ":82" {
- server.name = "192.168.129.140" # IP地址改成自己服務器的地址,比如“192.168.129.140”
- server.document-root = "/srv/obs/repos/"
- dir-listing.activate = "enable"
- }
-
- # vi /etc/lighttpd/modules.conf
- server.modules = (
- "mod_access",
- # "mod_alias",
- # "mod_auth",
- # "mod_evasive",
- # "mod_redirect",
- "mod_rewrite",
- # "mod_setenv",
- # "mod_usertrack",
- )
- ##
- ## mod_magnet
- ##
- include "conf.d/magnet.conf"
- ##
- ## FastCGI (mod_fastcgi)
- ##
- include "conf.d/fastcgi.conf"
- 服務器地址確認,修改相關文件的服務器地址:
- # vi /srv/www/obs/webui/config/environments/production.rb
- FRONTEND_HOST = "192.168.129.140"
- FRONTEND_PORT = 81
- FRONTEND_PROTOCOL = 'http'
- BUGZILLA_HOST = nil
- DOWNLOAD_URL = "http://192.168.129.140:82"
- ICHAIN_MODE = "off"
- BASE_NAMESPACE = nil
- # vi /srv/www/obs/api/config/environments/production.rb
- SOURCE_HOST = "192.168.129.140"
- 設置服務器開機啓動選項
- chkconfig --add memcached lighttpd obsapidelayed obswebuidelayed
- chkconfig --add obsrepserver obssrcserver obsscheduler obsdispatcher obspublisher obswarden obssigner
修改網頁使用權限
- chown -R lighttpd.lighttpd /srv/www/obs/{api,webui}
配置obs服務器
- # vi /usr/lib/obs/server/BSConfig.pm
- my $hostname = '192.168.129.140';
- our $repodownload = "http://$hostname:82/";
啓動obs服務器
- # rcmemcached start
- # rclighttpd start
- # rcobsapidelayed start
- # rcobswebuidelayed start
注意:如果rcobsapidelayed start報錯:
/srv/www/obs/api/lib/custom_logger.rb:7:in `format_message': undefined method `[]' for #<NoMethodError:0xb675a984> (NoMethodError)
…
from /srv/www/obs/api/script/delayed_job.api:7
重啓服務器這個問題就消失。
這裏就可以在網頁上打開我們的obs了(http://192.168.129.140/), 80端口是主界面,81端口是接口,82端口是倉庫(現在還沒任何數據產生)
如果訪問82端口時碰到HTTP 404錯誤,需要做如下操作:
# mkdir /srv/obs/repos
# chown -R obsrun:obsrun /srv/obs/repos
4、搭建客戶端
準確的說,obs-worker也屬於obs服務器的一部分,我們在使用obs的時候是不會去操作它的,它只是服務器上的用於實現它工作的工具.
安裝obs-worker及相關的工具:
- 1.zypper in obs-worker qemu-svn mount-static bash-static
修改服務器IP地址,是它只想我們所在的服務器:
- # vi /etc/sysconfig/obs-worker
- OBS_SRC_SERVER="'192.168.129.140:5352"
- OBS_REPO_SERVERS="'192.168.129.140:5252"
開機默認啓動obs-worker:
- chkconfig --add obsworker
- rcobsworker start
注意:如果rcobsworker start 報錯:
- chmod: cannot access `bs_worker': No such file or directory
重啓服務器後這個問題就消失了。
5、導入MeeGo基礎數據
- mkdir -p /obs/imports
- mkdir -p /obs/build
- ln -s /obs/build /srv/obs/build
想要編譯修改後的meego源碼包,我們必須先把基礎的包全部預先存放在obs服務器上。obs會根據依賴去調用這些包。這裏使用腳本去完成這些工作會更方便:
修改調度器:
對於MeeGo1.2,其arch是armv7hl,對應的調度器arch是armv8el:
# vi /etc/sysconfig/obs-server
OBS_SCHEDULER_ARCHITECTURES="i586 armv5el armv8el"
- wget http://stskeeps.subnetmask.net/meego/import-meego-release.sh
- mv import-meego-release.sh /usr/sbin/
- chmod +x /usr/sbin/import-meego-release.sh
注意,這個import-meego-release.sh可能需要做修改。比如用MeeGo1.2時,需要用armv7hl/armv8el;並且裏面的IP地址需要改成服務器的IP。
下載Meego1.2的prjconf:
- git clone http://git.gitorious.org/meego-developer-tools/obs-project-config.git
我們輸入的參數是由ftp://mirrors.kernel.org/meego/上的目錄結構決定的,我們根據需要的版本修改,
例如: 目標爲ftp://mirrors.kernel.org/meego/builds/1.1.90/1.1.90.5.20110301.7/repos/oss/ia32/packages/
則參數爲 1.1.90.5.20110301.7 rsync://mirrors.kernel.org/meego/builds/1.1.90/
- import-meego-release.sh 1.2.90.0.0.20110824.2 rsync://mirrors.kernel.org/meego/builds/1.2.90/ /home/tvos/obs-project-config/MeeGo_1.2
pass = opensuse:Admin正確的應該是:
user = Admin
pass = opensuse
- 成功執行上述命令後,會打印:
Sending meta data...
WARNING: SSL certificate checks disabled. Connection is insecure!
Done.
Sending meta data...
WARNING: SSL certificate checks disabled. Connection is insecure!
Done.
/srv/obs/events/armv8el/.scanrepo::MeeGo:1.2.90.0.0.20110824.2:Core::standard11721: No such file or directory
MeeGo:1.2.90.0.0.20110824.2:Core imported into OBS, after rescan is done.
- 只有成功導入OBS,在Add repository時,鍵入"Mxxx"時纔會顯示MeeGo:1.2.90.....:
補充1:
在VMWare中的OpenSuse中,執行
chkconfig --level 2 network on
出錯;
但執行
chkconfig --add network
就OK了,此後chkconfig --add mysql也成功了。
補充2:
在導入MeeGo的過程中,碰到了一個奇怪的錯誤:
python2.7下的so庫,不合格的ELF Header。
卸載python,重裝等嘗試了很多辦法都不行。
最後,將原來搭建的OBS服務器(192.168.129.171)上的/usr/lib/python2.7全部打包覆蓋到新OBS服務器(192.168.129.140)才解決這個問題。
文章轉自: http://www.cnblogs.com/sonach/archive/2011/12/24/2300700.html