󥹥ȡˡ

Starbug1ϡsqlite3cgiciconvѤƤޤѥ뤹뤿ˤϡ
sqlite3cgicɬפǤ(FreeBSDǥѥ뤹ˤϡ˲älibiconv
ɬפˤʤޤ)

sqlite3Υ󥹥ȡ

OSˡsqlite3󥹥ȡ뤵Ƥ(libsqlite3.so, sqlite3.h¸ߤ
)ϡsqlite3Υ󥹥ȡפǤ

http://www.sqlite.org/ 顢 sqlite-3.5.4.tar.gz ɤ롣

$ wget http://www.sqlite.org/sqlite-3.5.4.tar.gz

ŬʾŸѥ롢󥹥ȡ뤹롣

$ tar zxf sqlite-3.5.4.tar.gz
$ mkdir bld
$ cd bld
$ ../sqlite-3-5-4/configure --disable-tcl
$ make
$ su
# make install

cgicΥ󥹥ȡ

OSˡcgicl205ʾ夬󥹥ȡ뤵ƤϡcgicΥ󥹥ȡפǤ


http://www.boutell.com/cgic/  cgic205.tar.gz ɤ롣

$ wget http://www.boutell.com/cgic/cgic205.tar.gz

ŬʾŸѥ롢󥹥ȡ뤹롣

$ tar zxf cgic205.tar.gz
$ cd cgic205
$ make
$ su
# make install

Starbug1Υ󥹥ȡ

롣

  Downloadǿ롣https://sourceforge.jp/projects/starbug1/
  夫Ǥʤ䡢ݥȥ˥ϡcvsݥȥ
    饽롣

$ cvs -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/starbug1 login
Password:  (ΤޤEnter򲡤Ƥ)
$ cvs -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/starbug1 checkout starbug1

ѥ

$ tar zxf starbug-x.x.x.tar.gz
$ cd starbug1
$ gmake
$ gmake webapp

dist/starbug1 ǥ쥯ȥˡwebץ켰ޤ

Starbug1

Web(ưǧƤΤapache)DocumentRoot۲ dist/starbug1 ǥ
ȥ֤ޤ

$ su
# cp -r dist/starbug1 /home/httpd/html

? ΥСStarbug1饢åץǡȤˤϡΥǥ쥯ȥ
Хååפ塢ΥޥɤǾ񤭤Ƥθǡ(Хåå
)/css/user.css (󥹥ȡǥ쥯ȥ)/css/user.css˾񤭤Ƥ


dist/starbug1 ۲cgi¹ԥ桼θ¤ѹޤ

# cd /home/httpd/html
# chown -R apache:apache starbug1

.htaccessŬڤԽޤ(apache)

dot.htaccess.htaccess˥ե̾ѹơŬڤ˹ԤʤäƤ

$ mv dot.htaccess .htaccess
$ cat .htaccess
# 顼ڡλ
ErrorDocument 500 /starbug1/error.html
# CGIμ¹Ե
Options +ExecCGI
# ڡ
DirectoryIndex index.cgi


# ̥桼ǧڤˤĤƤ
<Files index.cgi>
AuthName      "authentication for guest user."
AuthType      Basic
AuthUserFile  /etc/starbug1/.guest-passwd
Require       valid-user
</Files>

# 桼ǧڤˤĤƤ
<Files admin.cgi>
AuthName      "authentication for administrator user."
AuthType      Basic
AuthUserFile  /etc/starbug1/.admin-passwd
Require       valid-user
</Files>

顼ڡλ
    URLŬڤ˻ꤷƤץΥե̾(starbug1)ѹϡ
    顼ڡλURLѹƤ
CGIμ¹Ե
    פǤСȥȤƤ
Basicǧ
    BasicǧڤѤ硢htpasswdʤɤǥѥɥեؤΥ桼Ͽ
    ԤʤäƤ̥桼ȴ桼̡˹Ԥʤϡξ
    ꤷƤפǤХȥȤƤ httpd.conf
    ԽǤϡƱhttpd.confǹԤʤ˾ޤǤ

http://(server_name)/starbug1/ ˥ޤ

ȥåײ̤ɽС󥹥ȡǤ

hookǽˤĤ



hookǽϡåȤϿֿλ˳ץƤӽФǽǤ hook
ȤơץꤹȡåϿֿλ˳ץ
¹Ԥ뤳ȤǽˤʤޤޤhookθƤӽФ󥿡եץ
ƤӽФǤ뤿ᡢоμ¹ԲǽեǤС䤤
ޤ󡣥ǥȤƤϡʲΤ褦ʤȤ¸Ǥޤ

᡼
    Ͽ줿Ƥ򡢥᡼󥰥ꥹȤإ᡼褦ץȤhook
    Ͽ롣
Ͽ¸
    Ͽ줿Ƥ򡢥ե¸褦ץȤhookϿ롣
å󥸥㡼
    Ͽ줿Ƥ򡢥å󥸥㡼˼ưƤ륹ץȤhookϿ롣
ƥӥ
    Ͽ줿Ƥ顢ץȤΥưӥɤ륹ץȤhook
    Ͽ롣

ǥǤϡ򤤤ȤǤ뤫⤷ޤ̾Υ󥹥ȡԤʤ
ȡ᡼Ѥ perl ץȤΥץ뤬scriptǥ쥯ȥ֤ޤ
(᡼Ԥʤˤϡ꤬ɬפǤ)

hookǽλ

Starbug1ϡоǥåȤϿֿλ˰ʲưԤʤޤ

  ${Starbug1Υ󥹥ȡǥ쥯ȥ}/scriptǥ쥯ȥˤ롢hook_ 
    Ϥޤե̾μ¹ԥե򸡺ޤ
  ¹ԥե뤬դä硢ƤjsonѴĶѿ$
    {STARBUG1_CONTENT}ꤷ֤ǡ¹ԥե¹Ԥޤ
  ¹ԥե뤬ʣ¸ߤϡ˼¹ԥե¹Ԥޤ
  åϿֿλΥåȰˡץȤμ¹Է̤ɽ
    

hookǽϿ줿ץȤǥ顼ȯϡϿλޤ
פΥåθˡץȤμ¹ԤԤݤΥåɽ


Ķѿ${STARBUG1_CONTENT}ꤵjsonϰʲΤ褦ʷˤʤޤ(
פ褦Ƥޤ) Ƹjsonȥ֥ȤѴ饤֥
ѴСñƤǤޤ

{
  project: { name: "ƥȥץ ץ"},
  ticket: {
    id: 2,
    url: "http://popnuts.ddo.jp/starbug1/index.cgi/ticket/2",
    fields: [
      { name: "̾",     value: "ïǤƤǤ褦ˤʤäƤˤĤ" },
      { name: "Ƽ",   value: "smeghead" },
      { name: "",     value: "պ" },
      { name: "ƥ", value: " " },
      { name: "ͥ",   value: "" },
      { name: "ܺ",     value: "ƥȾܺ2" },
      { name: "Ƹ", value: "ƥȺƸ2" },
      { name: "", value: "" }
    ]
  }
}

źդΥ᡼ץȤˡ

Starbug1źդƤ᡼ץȤˡޤ ${Starbug1
Υ󥹥ȡǥ쥯ȥ}/scriptǥ쥯ȥˡsample.hook_sendmail.pl ¸
ߤޤʲΥޥɤǡ᡼ץȤhook_ǻϤޤե̾ѹ
ޤ

# cd ${Starbug1Υ󥹥ȡǥ쥯ȥ}/script
# mv sample.hook_sendmail.pl hook_sendmail.pl

ץȤΰܤperlpathѹޤ

#!/usr/local/bin/perl

᡼Τξꤷޤ$options ȤhashФԤʤޤ
ʸʬޥʬǤ

my $options = {
  #ѤSMTPۥ̾
  smtp_host => 'localhost',
  #ѤSMTPݡֹ
  smtp_port => 25,
  #᡼FROMꤷƤ
  from => 'project-admin@example.com',
  #᡼ꤷƤΤ᡼󥰥ꥹȤΥɥ쥹ʤɡ
  to => 'project-ml@example.com'
};

ʾԤʤä塢åȤϿֿԤʤäơưǧԤʤäƤ


򥨥ݡȤ뵡ǽˤĤ



򥨥ݡȤ뤳ȤǤޤȤϡץȤꤵ
ܡܤʤɤξȥ桼ѥ륷ȤǤ¸ߤץ
Ȥ顢ץȤܹԤ뤳ȤǤ
ޤ

¸ߤץȤǡ¸ˡ

¸ߤץȤưĶΥоǥޥɤ¹Ԥޤ

# cd /somewhere/to/old/project
# cd script
# ./pickup_template

¹Ը塢template ǥ쥯ȥ꤬졢˥ƥץ졼Ȥޤ

templateǥ쥯ȥ꤬¸ߤ硢ޤΤǥХååפɬפʾ
˥ХååפƤ

¸ǡ򿷤ץȤȿǤˡ

ץȤ򥤥󥹥ȡ뤷ޤ˥󥹥ȡ뤬λ֤ǡ
¸Ƥätemplateǥ쥯ȥ񤭤ޤ

# cp -r /somewhere/to/old/project/template/* /somewhere/to/new/project/

ʾǡץȤ˸ŤץȤȿǤޤ
ȤȸŤץȤΥС󤬰㤦ϡȿǤʤ
ưʤǽޤ

ޤưʤ

󥹥ȡ봰λ֥饦 http://(server_name)/starbug1/ ˥
ȥ顼ȯWebФΥ顼ˡPremature end of script headers:
index.cgiפΤ褦ʥåϤ롣

CGI¹Ԥ븢¤뤫ǧƤʲΤ褦ʴñperlcgi
Ȥstarbug1ǥ쥯ȥ֤¹Ը¤ղäư뤫ɤǧ뤳
ǡCGIΤͭˤʤäƤ뤫ɤǧǤޤ

#!/usr/bin/perl
print "Content-Type: text/plain;\n\nhello.";

WebХץ桼starbug1ǥ쥯ȥ˽񤭹߸¤뤫ǧƤ
ǡ١եǼ뤿ˡWebХץ桼
starbug1ǥ쥯ȥ˽񤭹߲ǽȤʤäƤɬפޤ
