󥹥ȡˡ

  SQLite3Υ󥹥ȡ
  cgicΥ󥹥ȡ
  Starbug1Υѥ
  Starbug1
  hookǽˤĤ
  Хååפˡ
  򥨥ݡȤ뵡ǽˤĤ
  ޤưʤ

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/

ѥ

Ÿѥ뤷ޤ

      $ 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˾񤭤Ƥ


(󥹥ȡǥ쥯ȥ)/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μ¹Ե
    פǤСȥȤƤ
ǥեȥڡ(welcomeڡ)
    פǤСȥȤƤ
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'
      };


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


Хååפˡ

Starbug1Ū˥ХååפԤʤϡ${󥹥ȡǥ쥯ȥ}/
db/starbug1.db ХååפƤ starbug1.dbϡSQLite3Υǡ
١եǤ

㤨cronϿϰʲΤ褦crontab -e ꤹСХååפǤ
ޤ

      # /var/www/html/starbug1 ˥󥹥ȡ뤵줿Starbug1Υǡ١
      # gzipǰ̤ /var/backup ʲ¸Ǥ
      0 1 * * * gzip -c /var/www/html/starbug1/db/starbug1.db > /var/backup/starbug1.db_$(date +%Y%m%d).gz


򥨥ݡȤ뵡ǽˤĤ



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

¸ߤץȤǡ¸ˡ

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

      # 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ǥ쥯ȥ˽񤭹߲ǽȤʤäƤɬפޤ


                                                                               
                                                Copyright smeghead 2007 - 2008.
