锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 璋㈡湏銆婄帇瀛欐父銆嬭祻鏋?/strong>
Since arriving on the scene in 2000, Apache Struts has enjoyed a very successful run, by most any standard, helping to build many, if not most, of the Java-based web applications deployed today. Its history tells of how Struts provided a solid framework to organize the mess of JSP and Servlets to make developing applications, which used mostly server-generated HTML with a touch Javascript for client-side validation, easier to develop and maintain. As time moved forward, and customer demands of web applications grew and grew, Struts 1 pretty much stayed the same, leaving more and more plumbing to the web developer. At JavaOne 2005, several of the Struts developers (Martin Cooper, Don Brown) sat down with Rich Feit (Apache Beehive) and a few Struts users to discuss the future of Struts. We came up with the Struts Ti proposal, which described a framework that brought together a lot of good things that were developing in the web framework community. The problem is that the Struts 1 code base didn’t lend itself to drastic improvements, and its feature set was rather limited, particularly lacking in features such as Ajax, rapid development, and extensibility. At the same JavaOne, I sat down with Jason Carreira of the OpenSymphony WebWork 2 project to discuss how we could better work together. I was interested in building on XWork, the core of their command pattern implementation, but he suggested building on WebWork 2 directly. As Rich and I worked on the first few versions of Struts Ti, we decided to take Jason’s advice. We thought it was time for a framework to address higher level application needs, and by building on the proven WebWork 2 framework, we could spend our precious spare time where we felt it would make a difference. From then on, Rich and I worked mostly with Patrick Lightbody, also a core WebWork 2 developer, and found ourselves constantly “stealing” each others ideas for our respective code bases. Around this time, Patrick and Keith Donald of the Spring WebFlow project were kicking around an idea of a web framework to bind them all, Clarity. Clarity brought together Spring WebFlow (Keith), Struts (Ted Husted and myself), WebWork (Patrick and Jason), and Beehive (Rich) to talk about the possibility of combining efforts into one framework. Unfortunately, the devil is in the details as soon as Beehive and WebFlow were unable to make progress on merging their wizard/conversion scope features, and questions about project ownership, brand, and identity soon broke up the party. Not wanting to lose momentum, Ted and I started discussions with Patrick and Jason on how we could better work together, and after Patrick casually suggested the idea of a merger, Ted jumped on it and the Struts/WebWork merger was born. Since Struts Ti was already based on WebWork, it wasn’t that far a leap to bring the WebWork code into the Struts project. We started the Apache Incubator process for WebWork 2 in January and graduated the WebWork 2 code, developers, and community to Apache Struts that May. At that time, Struts was struggling with the project’s core identity, whether it was an umbrella for multiple web frameworks or not. We had Apache Shale, a web framework based off JSF, as a Struts subproject, along side Struts Action 1 (now called Struts 1) and Struts Action 2 (the graduated WebWork 2 code). Unfortunately, these subprojects were confusion to the developer and user community, accustomed to the name “Struts” referring to a single framework. After an attempt to unify the Struts Action 2 and Shale subprojects into a single Struts 2 framework, the Shale developers felt it would be better if they were their own top level project (TLP) where they are today. Struts Action 2 was soon after renamed to simply Struts 2. Today, the Apache Struts project has two major versions of its framework, but it is one action-based framework project. WebWork continues to deliver patch releases, and will certainly continue to do so until Struts 2 goes GA or final, but all new development takes place on the Struts 2 code. For those looking for drama or a controversy in the Struts/WebWork merger story, you’ll have to look elsewhere. Both groups of developers are working happily towards a Struts 2.0 GA release, trying to combine the stability and accessibility of Struts 1 with the elegant architecture of WebWork 2. Since the initial incubation, the Struts 2 code has added major features including a plugin framework, a new API, and better Ajax tags, and as promised in the Struts Ti proposal, we won’t stop there. I decided to write this down to help clear up where this Struts 2.0 project came from and why it includes WebWork 2 code. Mergers are tricky things and it seems even in the Open Source community, one that champions collaboration, a merger between two projects is a rarity and needs to be defended. Amusing, because you’d be hard pressed to find a Java web developer that felt there are too few web frameworks. I think the WebWork and Struts communities pulled off something special in Struts 2, and hope the merger fever catches on in the Open Source world.
緇胯崏钄撳涓濃憼錛屾潅鏍?wèi)绾㈣嫳鍙戔憽銆傛棤璁哄悰涓嶅綊鈶紝鍚涘綊鑺沖凡姝団懀銆?nbsp;
鎯寵涓嬭澆鐩存帴鍦ㄥ湴鍧鏍忚緭鍏ワ細(xì)http://www.tkk7.com/Files/ash011/wangsunyou.mp3
銆愭敞閲娿戔憼钄擄細(xì)钄撳歡銆傘鈶¤嫳錛氳姳銆傝繖涓ゅ彞鏄鍦頒笂闀挎弧浜?jiǎn)濡備笣鐨劸l胯崏錛屾爲(wèi)涓婂紑婊′簡(jiǎn)鍚勬牱鐨勭孩鑺憋紝宸叉槸鏆槬鏃惰妭浜?jiǎn)銆傘鈶㈡棤璁猴細(xì)鑾銆傘鈶f瓏錛氬敖銆傝繖涓ゅ彞鏄鑾浣犱笉鍥炴潵錛屽嵆浣垮洖鏉ワ紝鏄ュぉ涔熻繃鍘諱簡(jiǎn)銆?
銆愯祻鏋愩?
銆銆榪欐槸涓棣栦箰搴滆瘲錛屻婁箰搴滆瘲闆嗐嬫敹鍏?#8220;鏉傛洸姝岃緸”涓綾匯傞瓘鏅嬩互鏉ワ紝鏂囦漢鍒涗綔涔愬簻璇楀線寰鏈変竴涓壒鐐癸細(xì)鎬繪槸鍥寸粫鐫“鍙よ緸”(姹変箰搴?鎵撹漿杞紝鎴栨嫙鍙よ緸錛屾垨浠ュ彜杈炰負(fù)寮曞瓙鐢熷彂寮鍘?褰撶劧涔熸湁寮冨彜杈炰簬涓嶉【鑰岃嚜閾鎬紵杈炵殑)銆傝繖縐嶄粠鍙よ緸涓鎵?#8220;姣嶉”浣垮垱浣滀笂鏈夋墍渚濆倣鐨勪綔娉曪紝宸插艦鎴愪竴涓▼寮忋傚崡鏈濊瘲浜哄啓涔愬簻璇楄櫧鐒朵篃渚濊繖涓紼嬪紡錛屼絾鍗村嚭鐜板彟涓縐嶅懼悜錛屼粬浠湁鏃舵拠寮姹変箰搴滃彜杈烇紝鑰岀洿鎺ヤ笂婧埌銆婃杈炪嬩腑鍘誨鎵?#8220;姣嶉”銆傛瘮濡傦紝鍗楅綈鐜嬭瀺鍜岃惂姊佽垂鏄墮兘鍐欒繃涓棣栥婃濆叕瀛愩嬶紝涓績(jī)棰樻棬灝辨槸閲囪嚜銆婃杈?#183;涔?jié)姝屻?“椋庨椋掑叜鏈ㄨ惂钀э紝鎬濆叕瀛愬叜寰掔蹇с?#8221;璋㈡湏鐨勮繖棣栬瘲涔熷睘浜庤繖縐嶆儏鍐碉紝鍏?#8220;姣嶉”鍑轟簬銆婃杈?#183;鎷涢殣澹?“鐜嬪瓩娓稿叜涓嶅綊錛屾槬鑽夌敓鍏悑钀嬨?#8221;涔熷氨鏄錛岃瘲浜虹殑鍒涗綔鐏墊劅鑾瘋嚜銆婃杈炪嬶紝鑰屾墍鍐欏唴瀹瑰垯瀹屽叏鏄幇瀹炵敓媧諱腑鐨勬劅鍙椼傚湪鍙よ佺殑“姣嶉”涔嬩腑錛岃瘡娉ㄤ簡(jiǎn)媧葷敓鐢熺殑鐜板疄鍐呭銆?
銆銆钄擄紝钄撳歡錛涚孩鑻憋紝鍗崇孩鑺便傛槬澶╋紝緇胯崏濡備笣錛岃懕钁辮尭鑼革紝钄撳歡澶у湴錛岀粯鍐欏嚭涓媧劇豢鐨勪笘鐣岋紱鍚勭鍚勬牱鐨勬爲(wèi)涓婏紝綰㈣姳绔炴斁錛岀粴涓藉ず鐩傜豢鐨勬皼鍥達(dá)紝綰㈢殑鐐規(guī)煋錛屽湪椴滄槑鐨勫姣斾箣涓紝鐑樻墭鍑轟竴媧劇敓鏈哄媰鍕冪殑鏅薄銆傜獔紿曞皯濂籌紝鐩澒姝ゆ櫙錛屽績(jī)浼ょ鎯咃紝涓嶇鎬︾劧蹇?jī)鍔ㄥQ屾儏鎬濈急緇伙紝涓嶆棤鎯嗘呭湴鍙戝嚭浜?jiǎn)鎰熷?“鏃犺鍚涗笉褰掞紝鍚涘綊鑺沖凡姝囥?#8221;涓斾笉瑕佽蹇?jī)涓婄殑錆h鍎夸笉鍥炴潵錛屽嵆浣跨瓑鍒頒粬鍥炴潵錛岄偅緇氫附鐨勮姳鏈墊棭宸插噵璋簡(jiǎn)錛岄偅澶уソ鏄ュ厜鏃╁凡鐧界櫧鍦版祦閫濅簡(jiǎn)錛屾垜閭g編濡欑殑騫村崕涔熸棭宸蟲倓鐒墮鍘諱簡(jiǎn)銆傜孩棰滈毦涔呮寔鍟婏紒榪欓噷錛岃瘲浜轟笉涓昏鍐欏皯濂沖浣曟ュ垏鍦扮瓑寰呯潃鎯呬漢錛屽浣曟ヤ笉鍙愶紝鑰屾槸鐫閲嶅啓濂瑰浜庣孩鑺辯殑鐝嶆儨錛屽浜庡ぇ濂芥槬鑹茬殑鐣欐亱錛岀敱姝ゆ弿鍐欏嚭濂規(guī)濆悰銆佹亱鍚涚殑鏄ヤ竴鑸殑鎯呮劔銆傚姝ゅ啓鏉ワ紝灝辨妸涓諱漢鍏殑蹇?jī)鎬佷粠涓鑸殑灝戝コ鎬鏄ワ紝浠庢劅鎯呯殑鍊捐瘔鍜屾覆娉勶紝鍗囧崕鍒頒簡(jiǎn)涓縐嶅鏄ョ殑鐝嶆儨銆佸鏃剁殑鐣欐亱鐨勭悊鎬ч珮搴︼紝娓楅忓嚭涓縐嶅己鐑堢殑鏃墮棿鎰忚瘑鍜岀敓鍛芥剰璇嗐傝繖鏍鳳紝浠庢櫙鐨勬弿緇橈紝鍒版儏鐨勬姃鍙戯紝鍐嶅埌鐞嗘х殑鍗囧崕錛屼笁鑰呮按涔充氦铻嶈埇鍦拌瀺姹囧湪涓璧蜂簡(jiǎn)銆傛墍浠ワ紝榪欐槸涓棣栧厖婊′簡(jiǎn)鐢熷懡鎰忚瘑鐨勬櫙銆佹儏銆佺悊淇變匠鐨勫ソ璇椼?
銆銆璇楄櫧鐭皬錛岃壓鏈鏍煎嵈棰囧叿鐗硅壊錛屼綋鐜頒簡(jiǎn)榻愭闂磋瘲姝屽垱浣滈泤淇楃粨鍚堢殑涓縐嶅懼悜銆傞鍏堬紝浠庛婃杈炪嬩腑鐢熷彂鍑烘潵鐨勬瘝棰橈紝鏄捐屾槗瑙佸甫鏈夋枃浜虹殑闆呫佽壋鑹插僵錛屾殫紺轟簡(jiǎn)瀹冧笌鏂囦漢鏂囧鐨勫叧緋伙紱浣嗚瘲浜哄嵈鐢ㄥ崡鏈濅箰搴滄皯姝屼簲璦鍥涘彞鐨勮瘲姝屽艦寮忥紝鏉ヨ〃鐜拌繖涓鍙よ?#8220;姣嶉”錛岃繖渚垮皢鍘熸湁鍗庤吹銆侀泹闆呯殑鑹插僵鎮(zhèn)勬?zhèn)勮お鍘诲Q屾貳鍖栵紝浣夸箣鍦ㄨ璦椋庢牸涓婂憟鐜板嚭娓呮濆〾杞紝椋庢儏鎽囨洺鐨勭壒鑹層傚叾嬈★紝璇楀啓鏄ョ殑鏅壊閫楀紩璧鋒槬鐨勬儏鎬濓紝鍥犳櫙鑰岀敓鎯咃紝鎯呮櫙鐩哥敓錛岀煭绔犻擱煹錛岄濮跨話綰︼紝榪欏師鏄崡鏈濅箰搴滄皯姝岀殑鏈壊錛屾槸“淇?#8221;銆傜劧鑰屽湪鎻忓啓絎旀硶涓婂嵈棰囧叿鍖犲績(jī)錛岃瘲浜哄湪緇跨殑姘涘洿涓紑浠ョ孩鑺辯殑鐐規(guī)煋錛屽閥絎斿姣旓紝鐫鎰忔覆鏌擄紝嫻侀湶鍑烘枃浜虹簿蹇?jī)鏋勫埗鐨勭棔杩瑰Q岃〃鐜板嚭“闆?#8221;銆傞泤淇楃粨鍚堬紝鍒涗負(fù)浣蟲瀯銆傚彟澶栵紝璇楃殑鐢ㄩ煹涔熷煎緱涓鎻愩傝瘲鐢ㄤ粍闊碉紝鐭績(jī)錛屾ュ垏錛屽琛ㄧ幇鍑轟富浜哄叕鎯滄槬銆佹儨鏃剁殑鏃朵笉鎴戝緟鐨勬ュ垏蹇?jī)鎯呭Q岃搗鍒板緢濂界殑浣滅敤錛屽憟鐜板嚭璇祬鎰忔繁銆侀煹鐭儏闀跨殑鑹烘湳椋庤矊銆?/p>
鎴戞湰浜哄緢鍠滄,鍚簡(jiǎn)蹇?jī)閲屽緢邈^闈?rùn)鐨勬劅瑙墌
by Don Brown in Opinion
Listen:/Files/ash011/struts2.rar
榪欓噷鎴戞妸鎴戣嚜宸辨渶鍚庢垚鍔熺殑絎旇鍒嗕韓緇欏ぇ瀹?
涓 CVS鏈嶅姟鍣ㄧ殑瀹夎錛?/span>
1錛?nbsp;鏌ョ湅浣犵殑鎿嶄綔緋葷粺涓婃槸鍚﹀畨瑁呬簡(jiǎn)CVS錛?/span>
#> rpm -qa|grep cvs
guile-1.8.0-8.20060831cvs
cvs-1.11.22-4
2錛?nbsp;寤虹珛cvs鐢ㄦ埛緇勶細(xì)
/usr/sbin/groupadd cvs
3 寤虹珛cvs緇勭殑cvsroot鐢ㄦ埛鍜屾墍灞炵殑鐩綍錛?/span>
#> /usr/sbin/useradd -g cvs -G cvs –d /cvsroot cvsroot
4 涓?/span>cvsroot鐢ㄦ埛娣誨姞瀵嗙爜錛?/span>
#> passwd cvsroot
瀵嗙爜錛?/span>cvsroot123456
5 鏀瑰彉 /cvsroot/ 鐨勭洰褰曞睘鎬э細(xì)
#> chmod –R 770 /cvsroot
6鏀瑰彉鐢ㄦ埛鐧婚檰韜喚錛?/span>
#> su cvsroot
7 寮濮嬪垱寤哄崟涓」鐩細(xì)
#> cd /cvsroot
#> mkdir configuration
#>mkdir psgui
#>mkdir davinci
8 寮濮嬪緩绔嬩粨搴擄細(xì)
#> cvs –d /cvsroot/configuration init
#> cvs –d /cvsroot/psgui init
#> cvs –d /cvsroot/davinci init
#> chmod -R 770 ./configuration/ ./psgui/ ./davinci/
9寤虹珛CVS鏈嶅姟鍚姩鏂囦歡錛屾垜浠嬌鐢?/span>xinetd鏂瑰紡錛?/span>
#> [Crtl]+[d] 鍒囨崲鍒?/span>root鐢ㄦ埛韜喚
#> cd /etc/xinetd.d
#> vi cvspserver
service cvspserver
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/cvsroot/configuration --allow-root=/cvsroot/psgui --allow-root=/cvsroot/davinci pserver
log_on_failure += USERID
}
娉細(xì)鐢變簬xinetd鐨?/span>server_args闀垮害闄愬埗,褰撲綘鎯寵繍琛屽緢澶氱殑鍗曚釜浠撳簱鐨勬椂鍊?/span>,鍙互榪欎箞鍋氾細(xì)
10 鍔犲叆cvs鏈嶅姟錛?/span>
#>vi /etc/services
cvspserver 2401/tcp #pserver cvs service
cvspserver 2401/udp #pserver cvs service
宸茬粡瀛樺湪浜?jiǎn)锛屽涓嬪Q氾紙娌℃湁娣誨姞浜?jiǎn)锛?jí)
cvspserver 2401/tcp # CVS client/server operations
cvspserver 2401/udp # CVS client/server operations
11 鍚姩cvs鏈嶅姟錛?/span>
#> /etc/init.d/xinetd restart
12 媯(gè)鏌?/span>cvspserver鏈嶅姟鏄惁宸茬粡鍚姩錛?/span>
#> netstat -l |grep cvspserver
搴旇鏈夊涓嬬粨鏋滐細(xì)
tcp 0 0 *:cvspserver *:* LISTEN
宸茬粡鏈変笂闈㈢殑鏄劇ず緇撴灉
浜?/span>CVS鏈嶅姟鐨勭敤鎴風(fēng)鐞嗭細(xì)
涓婇潰鎴戜滑宸茬粡寤虹珛浜?/span>configuration鍜?/span>psgui銆?/span>davinci涓変釜CVS浠撳簱錛屼笅闈㈡垜浠垎鍒粰榪欎笁涓粨搴撳緩绔?/span>cvs鐢ㄦ埛銆?/span>
13鍒涘緩鍙互鐧婚檰cvs鏈嶅姟鍣ㄧ殑鐢ㄦ埛鍚嶅拰瀵嗙爜錛?/span>
#> su cvsroot
#> vi /cvsroot/configuration/CVSROOT/passwd
yujiabo:*****:cvsroot
#>vi /cvsroot/psgui/CVSROOT/passwd
lianghuoyan:*****:cvsroot
yujiabo:*****:cvsroot
榪欎袱涓枃浠剁殑鎰忔濇槸鏈?/span>yujiabo錛?/span>lianghuoyan涓や釜cvs鐢ㄦ埛錛?/span>lianghuoyan鎷ユ湁psgui鐨勪嬌鐢ㄦ潈闄愶紝yujiabo鎷ユ湁configuration鍜?/span>psgui鐨勪嬌鐢ㄦ潈闄?/span>,鐧婚檰鍚庣殑鏉冮檺鏄?/span>cvsroot鏉冮檺銆?/span>
娉ㄦ剰錛氳繖閲岀殑cvs鐢ㄦ埛鍜岀郴緇熺敤鎴鋒槸涓嶅悓鐨勩?/span>
14 *****涓哄瘑鐮侊紝鐢變互涓嬫枃浠剁敓鎴愶細(xì)
#> vi /cvsroot/passwd.pl
#!/usr/bin/perl
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext}
";
#>chmod a+x /cvsroot/passwd.pl
15 濡傛灉浣犳兂鐢熸垚涓涓瘑鐮佹槸“123456”錛屽垯錛?/span>
#> /cvsroot/passwd.pl “123456”
鍥炶濺鍗沖彲寰楀埌鍔犲瘑瀵嗙爜,鐢ㄥ叾鏇挎崲passwd鏂囦歡涓殑*****
16 Ok錛?/span>cvs鐜板湪宸茬粡鍏ㄩ儴瀹夎瀹屾垚浜?jiǎn)锛屽鏋滀綘鎯宠涓涓敤鎴鋒嫢鏈?/span>psgi鐨勬潈闄愶紝浣犲氨鍦?/span>/cvsroot/psgui/CVSROOT/passwd涓粰浠栧姞鍏ヤ竴涓敤鎴鳳紱濡傛灉浣犳兂璁╀竴涓敤鎴峰悓鏃跺叿鏈?/span>psgui鍜?/span>davinci鐨勬潈闄愶紝浣犲氨緇?/span>/cvsroot/psgui/CVSROOT/passwd鍜?/span>/cvsroot/davinci/CVSROOT/passwd閲岀粰浠栧姞涓涓敤鎴峰悕鍜屽瘑鐮佺浉鍚岀殑鐢ㄦ埛鍗沖彲銆傛渶鍚庯紝鎴戜滑璇曠敤涓涓嬶細(xì)
#> cvs -d :pserver:yujiabo@168.68.73.122:/cvsroot/psgui login
鏁插叆鍛戒護(hù)鍥炶濺鍚庢彁紺鴻緭鍏?/span>yujiabo鐨勫瘑鐮?/span>,浣犳寜鐓ц嚜宸辮緗殑瀵嗙爜杈撳叆,濡傛灉娌℃湁浠涔堥敊璇俊鎭嚭鐜板氨鏄垚鍔熶簡(jiǎn)(鎴戠殑鏈哄櫒IP鍦板潃鏄?/span>168.68.73.122)
瀹㈡埛绔祴璇曪細(xì)
鐢?/span>ash鐢ㄦ埛鐧婚檰168.68.73.123
榪愯#
cvs -d :pserver:yujiabo@168.68.73.122:/cvsroot/configuration login
123456錛堣緭鍏ョ殑瀵嗙爜錛?/span>
鍑虹幇閿欒錛?/span>2401 failed: No route to host
瀹㈡埛绔繛鎺ヤ笉涓婏紝鏀懼紑鏈嶅姟鍣ㄩ槻鐏2401绔彛錛屾柟娉曞涓嬶細(xì)
鍦?/span>168.68.73.122鐢?/span>root鐧婚檰鍚庯紝榪愯#system-config-securitylevel
閫夋嫨“瀹氬埗”錛屽叾瀹冪鍙e杈撳叆錛?/span>2401錛岀劧鍚?#8220;紜畾”璁劇疆銆?/span>
鐜板湪瀹㈡埛绔彲浠ヨ繛鎺ヤ簡(jiǎn)銆?/span>
Windows涓嬬殑瀹㈡埛绔蔣浠?/span>WinCvs1.3閰嶇疆濡備笅錛?br />
CVSROOT
璁よ瘉鏂瑰紡:pserver
璺緞:/cvsroot/configuration
鐢ㄦ埛鍚?yujiabo
CVSROOT:yujiabo@168.68.73.122:/cvsroot/configuration
Mantis鐗堟湰錛?1.1.0(RC2)
TestLink鐗堟湰錛?.7.1
PHP鐗堟湰錛?.2.5
MySQL鐗堟湰錛?.0.22
闇瑕佷慨鏀筎estLink鐨勬枃浠訛細(xì)lib\bugtracking\int_mantis.php
function getBugSummaryString($id)
{
if (!$this->isConnected())
return false;
//$this->m_dbConnection->aaa();
$this->m_dbConnection->exec_query("set names 'GB2312'"); //<-鏂板鍔犵殑
$status = null;
// 20070302 - {$this->m_dbName}.mantis_bug_table -> mantis_bug_table
// Problems with MS-SQL
$query = "Select summary FROM mantis_bug_table Where id='" . $id."'";
$result = $this->m_dbConnection->exec_query($query);
if ($result)
{
$summary = $this->m_dbConnection->fetch_array($result);
// 20070302 - BUGID - on MS-SQL fetch_array() does not returns numeric indexes, then
// only choice is accessing my field name (IMHO better)
if ($summary)
$summary = iconv("GB2312",TL_TPL_CHARSET,$summary['summary']);//<-淇敼鐨?/font>
else
$summary = null;
}
return $summary;
}
浠ヤ究寰鍚庡熼壌錛?/span>
錛戙闇姹備笉紼沖畾錛屼粠涓寮濮嬶紝闇姹傚氨娌℃湁瀹屽叏紜畾榪囷紝鐩村埌鐜板湪錛岄渶姹傝繕鍦ㄥ鍔犳垨鍙樺姩銆?br />
鎰熻鐜板湪鏁翠釜緋葷粺灝卞儚鍦ㄦ墦琛ヤ竵錛屽鎴烽偅榪欑獊鐒舵兂璧峰摢閲岀己浜?jiǎn)浠涔堬紝灝辮琛ヤ粈涔堬紝
涓嶄細(xì)欏懼強(qiáng)緋葷粺鏋舵瀯錛岃繖鏍峰瓙澶氬灝戝皯浼?xì)鐮村潖涔嬪墠鎼缓濂界殑绯痪l熸灦鏋勶紟
錛掋鎴戣嚜宸辯姱鐨勯敊錛屽湪瀹炴柦榪囩▼涓紝鍙戠幇鏌愪簺闇姹傛湁姝т箟錛屼絾鏈弽棣堢粰瀹㈡埛紜錛?br /> 鑷繁涓嬩簡(jiǎn)緇撹錛屾寜鑷繁鐨勬兂娉曞仛錛岀粨鏋滃茍涓嶆槸瀹㈡埛鐨勬剰鎬濓紟
錛撱榪欎釜鏄渶鐑?chǔ)錆h鐨勶紝鏁翠釜緋葷粺浠g爜涓涓湀澶氫竴鐐瑰氨鍏ㄩ儴瀹屾垚錛屼絾閭f椂涓鐩存墦鐢?shù)璇濊姹傚鎴烽偅杈瑰崗鍔⿱箣璇曞Q?br />
鍥犱負(fù)瀹㈡埛鐨勪笟鍔″緢澶嶆潅錛屼篃鏈夊緢澶氱壒渚嬶紝緋葷粺鍝噷鏈夐棶棰橈紝鍙浠栦滑鑷繁涓鐢ㄥ氨浼?xì)鍙戠幇鐨勫Q屽彲閭f椂瀹㈡埛閭h竟
娌℃湁涓撻棬璐熻矗榪欐柟闈㈢殑浜猴紝涓鐩撮兘鎷栫潃錛岀洿鍒扮幇鍦ㄤ粬浠病鏈夋庝箞嫻嬭瘯錛屽氨涓婄嚎錛屽彂鐜伴棶棰樿緝澶氥?/span>
apache_2.2.6-win32-x86-no_ssl.msi
mysql-5.0.22-win32_Setup.exe
bugzilla-3.0.2.tar.gz
bugzilla-bundle.zip
win涓嬫惌寤篵ugzilla紜疄澶毦浜?jiǎn)锛屽洜湄?fù)鏈潵灝變笉鏄負(fù)宸ヤ綔鍦╳in涓嬭岃璁$殑錛宐ugzilla涔熸槸鍦ㄦ渶榪戝嚑涓増鏈墠鍔犲己浜?jiǎn)瀵箇in鐨勬敮鎸併?br />
鎴戠殑鐜鏄?
ActivePerl-5.8.8.817-MSWin32-x86-257965.msi瀹夎涓篎:\Perl鐩綍
mysql-5.0.22-win32_Setup.exe瀹夎涓篎:\MySQL
apache_2.2.6-win32-x86-no_ssl.msi瀹夎涓篎:\Apache2鐩綍
涓嬮潰寮濮嬪畨瑁?
1. 閰嶇疆鏁版嵁搴?br />
鎵撳紑mysql鐨刢ommand line client
杈撳叆涔嬪墠璁劇疆濂界殑root瀵嗙爜錛?a onclick="javascript:tagshow(event, '%B4%B4%BD%A8');" href="javascript:;" target="_self">鍒涘緩鏁版嵁搴揵ugs錛岀敤鎴穊ugs錛屽瘑鐮佷負(fù)絀恒傚茍璧嬩簣榪欎釜鐢ㄦ埛涓瀹氱殑鏉冮檺銆傦紙鍥犱負(fù)bugzilla閰嶇疆鏂囦歡涓粯璁ゆ槸鏁版嵁搴揵ugs錛岀敤鎴穊ugs錛屽瘑鐮佷負(fù)絀猴紝鎵浠ユ垜浠湪榪欓噷璁劇疆濂藉悗寰涓嬭繘琛屽氨浼?xì)杈冩柟渚夸簡(jiǎn)銆傦級(jí)
鍒涘緩鏁版嵁搴擄細(xì)
mysql>create database bugs;
鍒涘緩鐢ㄦ埛騫惰祴浜堟潈闄愶細(xì)
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,INDEX, ALTER,CREATE,DROP,REFERENCES,LOCK TABLES,CREATE TEMPORARY TABLES ON bugs.* TO bugs@localhost IDENTIFIED BY '';
鍒鋒柊涓涓嬶細(xì)
mysql> FLUSH PRIVILEGES;
mysql鐨勮緗氨瀹屾垚浜?jiǎn)銆?/p>
2 瀹夎bugzilla
灝哹ugzilla 2.20.1鏂囦歡澶規(guī)墍鏈夋枃浠跺叏閮ㄦ嫹璐濆埌E:\php\bugzilla\涓嬨傚湪 寮濮?銆夌▼搴?銆夎繍琛?涓緭鍏MD錛岃繘鍏:\php\bugzilla鐩綍涓嬶紝榪愯
perl checksetup.pl 媯(gè)鏌ugzilla瀹夎鎵闇妯″潡鏄惁閮藉凡鎵懼埌錛岄粯璁ゆ儏鍐典笅鏄渶瑕佸畨瑁呰澶氭ā鍧楃殑銆俠ugzilla-bundle.zip瑙e帇緙╄繖涓獄ip鍖咃紝鏀懼埌E:\php錛屾墦寮CMD錛屽畾浣嶅埌榪欓噷錛岃繍琛宲pm錛屽湪ppm>涓嬩緷嬈¤緭鍏ュ茍鍥炶濺錛?
install AppConfig.ppd
install DBI.ppd
install GD.ppd
install GDTextUtil.ppd
install MailTools.ppd
install PatchReader.ppd
install Template-Toolkit.ppd
install TimeDate.ppd
install Chart.ppd
install DBD-mysql.ppd
install GDGraph.ppd
install MIME-tools.ppd
鍗沖彲瀹夎瀹屾墍鏈夋ā鍧?br />
涓棿鍙兘鏌愪竴涓ā鍧椾細(xì)鎻愮ず瀹夎澶辮觸錛岃繖鏃惰瀹夎瀹屽叾浠栨ā鍧楀悗鍐嶉噸鏂板畨瑁呭け璐ョ殑妯″潡
鍦ㄥ畨瑁呬箣鍓嶅け璐ョ殑妯″潡鏃?璇峰甫涓婅礬寰勫畨瑁咃紝濡傦細(xì)
ppm intsall http://www.brides.org/perl/ppm/PerlMagick.ppd
ppm uninstall mod_perl 灝嗕箣鍓嶅畨瑁呯殑mod_perl鍗歌澆錛?br />
鐢變簬鐗堟湰涓嶆紜紝鎵浠ュ彲鑳戒細(xì)鎶ュ凡緇忓畨瑁呬簡(jiǎn)mod_perl錛屼絾榪樻姤mod_perl闇瑕乸pm install,
鎵浠ュ厛鍗歌澆鍐嶇敤涓嬮潰鐨勫懡浠ら噸瑁呬竴嬈?br />
ppm install http://theoryx5.uwinnipeg.ca/ppm/mod_perl.ppd
ppm install http://trouchelle.com/ppm/Email-MIME-Creator.ppd瀹夎榪欎釜鏃朵細(xì)鎶ヨ繕鏈夊畠鐨勪緷璧栧寘鏈畨瑁咃紝
榪欐椂灝辯敤榪欎釜緗戝潃璺緞瀹夎鐩稿簲鐨勪緷璧栧寘涔嬪悗錛屽啀鐢ㄤ互涓婂懡浠ゅ畨瑁呰繖涓寘灝辮浜?jiǎn)锛?br />
鍐嶄粠鍛戒護(hù)琛屽埌E:\php\bugzilla\涓嬭繍琛?perl checksetup.pl錛屾鏌ユ槸鍚﹂渶瑕佺殑妯″潡閮藉凡緇忓畨瑁呭茍鎵懼埌浜?jiǎn)銆傛槸鐨勮瘽鍒欎細(xì)鍦ㄧ洰褰曚笅鐢熸垚涓涓猯ocalconfig鏂囦歡錛岃繖涓枃浠舵槸bugzilla榪愯鏃剁殑閰嶇疆鏂囦歡銆傛墦寮榪欎釜鏂囦歡鎴戜滑鍙渶鐪嬩竴涓嬬敤鎴峰悕鍜屽瘑鐮侀偅鍧楁槸鍚﹀拰鎴戜滑鍦╩ysql涓緗殑涓鏍峰嵆鍙?/p>
鍐嶆榪愯 perl checksetup.pl 浼?xì)鐢熸垚bugzilla闇瑕佺殑妯$増鍜屾暟鎹簱涓殑琛ㄣ?/p>
杈撳叆exchange鏈嶅姟鍣紙榪欎釜涓嶈杈撳叆閿欒錛屽洜涓篵ugzilla浠ュ悗寰堝鐨勬搷浣滈兘鏄渶瑕佸彂閫侀偖浠剁殑錛屾瘮濡傛柊寤轟竴涓猘ccount鍚庡垵濮嬪瘑鐮佹槸鍙戦佸埌浣犵殑閭閲岀殑錛夈傛帴鐫浼?xì)璁╀綘杈撳叆绠$悊鍛樼殑閭幈鍦板潃錛屽悕瀛楋紝瀵嗙爜
銆
紜杈撳叆鍚庡嵆瀹屾垚bugzilla鐨勫畨瑁呬簡(jiǎn)銆?/p>
鍐嶆杈撳叆perl checksetup.pl 紜鏁版嵁搴撳凡緇忚繛鎺ユ甯搞備慨鏀笶:\php:\bugzilla\鐩綍涓嬫墍鏈塩gi,pl鏂囦歡錛屽皢鎵ц鏂囦歡鏈鍓嶉潰鐨?#璺緞鏀規(guī)垚perl .exe鐨勮礬寰勩?/span>