Installation Installer - Joungkyun/JSBoard GitHub Wiki
##1. ์ฃผ์ ์ฌํญ
- ์ด ๋ฌธ์๋ JSBoard 2.0.x ๋ฒ์ ์ ์ค์น ํ๊ธฐ ์ํ ๋ฌธ์์ด๋ค.
- PHP 4.1.0 ์ด์ ๋ฒ์ ์ด ํ์ํ๋ค.
- Account User(Root ๊ถํ์ด ์์ ๊ฒฝ์ฐ) ๊ถํ์ผ๋ก Installer๋ฅผ ์ฌ์ฉํ์ฌ ์ค์นํ ๊ฒฝ์ฐ ๋ค์์ ์กฐ๊ฑด์ด ์ ํ ๋์ด์ผ ํจ
- MySQL database๊ฐ ๋ฏธ๋ฆฌ ์์ฑ ๋์ด ์์ด์ผ ํจ.
- ์์ฑ๋์ด ์๋ database์ ๋ํ MySQL user์ ์ํธ๊ฐ ๋ฏธ๋ฆฌ ์ค์ ์ด ๋์ด ์์ด์ผ ํจ
##2. ์ฌ์ฉ ํ๊ฒฝ
- Apache 1.3.23 ์ด์
- MySQL 3.23.32 ์ด์
- PHP 4.1.0 ์ด์
- PHP Build Option
[root@host ~]$ ./configure ... \
--disable-debug \
--with-regex=php \
--with-mod_charset \
--with-mysqli=shared \
--enable-inline-optimization \
--enable-magic-quotes \
--enable-track-vars \##3. ์ฒดํฌ ์ฌํญ
- PHP mysqli function test
- check.php๋ผ๋ ํ์ผ์ ๋ค์์ ๋ด์ฉ์ผ๋ก ์์ฑํ๋ค.
<?php
if ( function_exists ('mysqli_connect') ) echo "Yes\n";
else echo "No\n";
?>- ๋ง๋ ๋ฌธ์๋ฅผ ์น์์ ํธ์ถ์ ํ์ ๊ฒฝ์ฐ, No๊ฐ ์ถ๋ ฅ์ด ๋๋ฉด PHP ์์ MySQLi extension์ ์ง์ํ์ง ์๋ ๊ฒ์ด๋ค. PHP ๊ฐ MySQL์ ์ง์ํ๋๋ก ๋น๋๊ฐ ๋์๋์ง ํ์ธ์ ํ๋๋ก ํ๋ค.
- Web server์ Directory Index ํ์ธ
- Apache์ ๊ฒฝ์ฐ ์ค์ ํ์ผ์์ DirectoryIndex ์ง์์์ index.php๊ฐ ๋ฑ๋ก์ด ๋์ด ์๋์ง ํ์ธ์ ํ๋ค.
- Shell ํ๊ฒฝ ํ์ธ
- SunOS๋ Solaris์ ๊ฒฝ์ฐ ์ค์น ์ INSTALLER/script์ ์กด์ฌํ๋ script์ ์ฒซ ๋ผ์ธ '''#!/bin/sh'''๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ ์ ํ๋ค.
#!/bin/ksh
PATH=/usr/ucb:/usr/xpg4/bin:/usr/bin:/usr/sbin##4. JSBoard ์ค์น
์ผ๋จ ์ค์ ํ์ผ๋ค์ ์์น ์ํค๊ณ ๊ทธ ํ์ผ๋ค์ ํผ๋ฏธ์ ์ ์กฐ์ ํ๋๋ก ํ๋ค. jsboard/INSTALLER/script ์์ ์๋์ ๋ช ๋ น์ ์คํ ํ๋ค. ์คํ์ด ๋์ง ์์ผ๋ฉด ํผ๋ฏธ์ ์ 755๋ก ์์ ํ๊ธฐ ๋ฐ๋๋ค.
[root@host script]$ ./preinstall
########################################################
# JSBoard Pre Installer v2.0 #
# Scripted By JoungKyun Kim < http://www.oops.org > #
########################################################
STEP 1 Language Check
---------------------
Can you enable to use KOREAN in this console? [Y/N](default Y) : y # Enter ์
๋ ฅ
์ํ์น๊ฐ nobody ์ ๊ถํ์ผ๋ก ์๋ํ๊ณ ์๋๋ฏ ์ถ์ต๋๋ค.
๋ง์ต๋๊น? (์ด ๊ฐ์ httpd.conf ์ Group ์ง์์์ ์ค์ ๋์ด
์๋ ๊ฐ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค. [Y/N](default Y) : Y # Enter ์
๋ ฅ์์์ ์ํ์น ๊ทธ๋ฃน๊ถํ์ด ๋ง๋์ง ํ์ธ์ ํด์ผ ํ๋ค. ์ด ๊ฐ์ httpd.conf ์ GROUP ์ง์์์ ๊ฐ๊ณผ ๋์ผํด์ผ ํ๋ค. ๊ฐ์ผ๋ฉด y ๋ฅผ ํ๋ฆฌ๋ฉด n ์ ์ ํ ํ๋๋ก ํ๋ค. n ์ ์ ํํ๋ฉด ๋ค์์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
httpd.conf ์ Group ์ง์์์ ๊ฐ์ ์ ์ด ์ฃผ์ญ์์ค : apache
์์
์ด ์๋ฃ ๋์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ธ๋ก jsboard/INSTALLER/ ๋ก ์ ์ํ์ฌ
์ค์น๋ฅผ ๊ณ์ ํ์๊ธฐ ๋ฐ๋๋๋ค.
[root@host script]$RH 7.x๋ถํฐ๋ httpd.conf ์ GROUP ๊ฐ์ด nobody ์์ apache ๋ก ๋ณ๊ฒฝ์ด ๋์๋ค. ๊ทธ๋ฌ๋ฏ๋ก RH 7.x ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ์์ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ์ ๋๋ก ์ด์์ด ๋๋ค. ๊ณ์ ์ ์ ์ ๊ฒฝ์ฐ์๋ ์ฝ๊ฐ ๋ค๋ฅด๊ฒ ๋์ค๋๋ฐ, ๋์ค๋ ๋ฉ์ธ์ง๋๋ก ๋ฐ๋ผ์ ํ๋ฉด ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ jsboard/INSTALLER/include/passwd.php ๋ฅผ ํธ์งํ๋ค.
<?php
######################################################
# MySQL root ์ ๊ถํ ์์ง ์ฌ๋ถ
# MySQL root ์ ํจ์ค์๋๋ฅผ ์๋ฉด 1, ๋ชจ๋ฅด๋ฉด 0
#
# ๋ง์ฝ MySQL ํจ์ค์๋๋ฅผ ๋ชฐ๋ผ 0 ์ผ๋ก ์ค์ ์ ํ๋ ค๋ฉด MySQL
# root ์ ๊ถํ์ ๊ฐ์ง๊ณ ์๋ ์ฌ๋์ด database ๋ฅผ ์์ฑํ๊ณ
# ์ ์ ๋ฑ๋ก๊ณผ ํจ์ค์๋๋ฅผ ๋ฑ๋กํด ์ค ํ์ INSTALLER ๋ฅผ ์ฌ์ฉ
# ํ ์ ์์. ์ด ๊ฐ๋ค์ ์๋์ ๋ฑ๋กํด ์ค์ผ ํจ.
#
$mysqlroot = 1;
# Specify MySQL Root Password
# mysql์ ๊ด๋ฆฌํ root์ password ๋ฅผ ์ง์
# ์์์ $mysqlroot ์ ๊ฐ์ 0 ์ผ๋ก ์ง์ ํ์ ๊ฒฝ์ฐ์๋ MySQL
# root ๊ฐ ์๋ ค์ค mysql ๊ณ์ ํจ์ค์๋๋ฅผ ์ง์ ํจ.
#
$passwd = "MySQL_ROOT_PASSWORD";
# $mysqlroot = 0 ์ผ ๊ฒฝ์ฐ์๋ ์๋๋ฅผ ์ค์ ํจ
#
# mysql root ๊ฐ ์์ฑํด์ค database name ์ ์ง์
$mysqldatabasename = "";
# mysql root ๊ฐ ์์ฑํด์ค database user name ์ ์ง์
$mysqlusername = "";
# apache์ ์ค์ ํ์ผ(httpd.conf)์ ๊ฒฝ๋ก๋ฅผ ์ง์
# redhat rpm package์ ๊ฒฝ์ฐ /etc/httpd/conf/httpd.conf
# debian package์ ๊ฒฝ์ฐ /etc/apache/httpd.conf
# ์๋์ผ๋ก ์ค์นํ์ ๊ฒฝ์ฐ /usr/local/apache/etc/httpd.conf
# ์ ์์นํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์.
#
$apache_config_file = "/etc/httpd/conf/httpd.conf";
# MySQL์ socket file ์์น๋ฅผ ์ง์ . socket file์ด ๋ฌด์์ธ์ง
# ๋ชจ๋ฅด๊ฒ ์ผ๋ฉด localhost ๋ 127.0.0.1 ์ ์ ๋๋ก ํ๋ค. DB ์
# ๋ฒ๊ฐ ์ธ๋ถ์ ์์ ๊ฒฝ์ฐ์๋ ํด๋น DB์๋ฒ์ ip address๋ ๋
# ๋ฉ์ธ ์ด๋ฆ์ ์ ์ด์ฃผ๋๋ก ํ๋ฉฐ, ์ด ๊ฒฝ์ฐ์๋ DB์๋ฒ์ mysql
# ์์ ์ค์ ํ ์ ๊ทผ ๊ถํ์ผ๋ก ์ค์ ์ ํ์ฌ์ผ ํ๋ค. ์ฆ
# mysql -u USER_NAME -p DB_NAME -h DB_address
# ๋ก ์์์ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ผ ํ๋ค.
#
# socket file์ ์์น๋ฅผ ์๊ณ ์ถ๋ค๋ฉด mysql_config --socket
# ๋ช
๋ น์ผ๋ก ์์๊ฐ ์๋ค.
#
$mysql_sock = ":/var/lib/mysql/mysql.sock";
######################################################
?>์๋ passwd.php ์ ๋ด์ฉ์ด๋ฉฐ, MySQL_ROOT_PASSWORD ๋ถ๋ถ์ MySQL ์ root password ๋ฅผ ๋ฃ์ด ์ค๋ค.
๊ณ์ ์ ์ ์ฆ MySQL ์ root ํจ์ค์๋๋ฅผ ๋ชจ๋ฅด๊ณ ์์คํ root ์ ๊ถํ์ด ์์๊ฒฝ์ฐ์๋ ์์ ๋ฉ์ธ์ง๋ฅผ ์ ์ฝ์ผ๋ฉด์ ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ์๋์๋ apache web server์ ์ค์ ํ์ผ์ธ httpd.conf๊ฐ ์๋ ๊ฒฝ๋ก๋ฅผ ์ ์ด ์ฃผ๋๋ก ํ๋ค. ๋ง์ฝ DirectoryIndex ์ง์์๋ฅผ srm.conf ์์ ์ง์ ์ ํ๋ ์ ์ ๋ค์ srm.conf์ ์์น๋ฅผ ์ง์ ํ๊ธฐ ๋ฐ๋๋ค.
๋ง์ง๋ง์ผ๋ก mysql์ sockfile ๊ฒฝ๋ก๋ฅผ ์ง์ ํด ์ค๋ค. DB ์๋ฒ๊ฐ ์ธ๋ถ์ ์์ ๊ฒฝ์ฐ์๋ DB์๋ฒ์ IP ์ฃผ์๋ฅผ ์ง์ ํด ์ฃผ๋ฉด ๋๋ฉฐ, ๋์ผํ ์๋ฒ์ ์กด์ฌํ ๊ฒฝ์ฐ์๋ 127.0.0.1์ ์ง์ ํ๋๋ก ํ๋ค.
๋ค์ ์น ๋ธ๋ผ์ฐ์ ธ๋ก http://domain.com/jsboard/INSTALLER/ ๋ก ์ ๊ทผ์ ํ๋ค.
------------------------------------------------------
JSBoard Installer
------------------------------------------------------
[ ] Korean [ ] English
------------------------------------------------------
[submit]
------------------------------------------------------
๊ณผ ๊ฐ์ ํ๋ฉด์ ๋ณผ์ ์์ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ ์ธ์ด๋ฅผ ์ ํํ๋๋ก ํ๋ค. ํ์ฌ๋ ๊ตญ๋ฌธ๊ณผ ์๋ฌธ๋ง์ ์ง์ํ๋ค. ์ ํํ๊ณ submit ์ click ํ๋๋ก ํ๋ค.
------------------------------------------------------
JSBoard License
------------------------------------------------------
์ฃผ์ ์ฃผ์ ์ฃผ์ ์ฃผ์ ...........................................
์ฃผ์ ์ฃผ์ ์ฃผ์ ์ฃผ์ ...........................................
์ฃผ์ ์ฃผ์ ์ฃผ์ ์ฃผ์ ...........................................
------------------------------------------------------
[AGREE]
------------------------------------------------------
์ธ์ด๋ฅผ ์ ํํ๊ณ ๋๋ฉด ์์ JSBoard๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ License๊ฐ ๋์จ๋ค. ์ฝ์ด๋ณด๊ณ ๋์๋ฅผ ํ๋ฉด AGREE๋ฅผ click ํ๋ค.
------------------------------------------------------
JSBoard Environment Check
------------------------------------------------------
Jsboard๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ํ๊ฒฝ ์ค์ ์ ๊ฒ์ฌํ๊ณ ์์ต๋๋ค
5์ด ํ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ค์ ์์ต๋๋ค
๋ง์ฝ Linux์ฉ Browser๋ฅผ ์ฌ์ฉํ์ ๋ค๋ฉด ๋ค์ ํ์ด์ง๋ก
์๋์ผ๋ก ๋์ด๊ฐ์ง ์์์๋ ์์ต๋๋ค.
์ด๋์๋ INATALL.MANUALY ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์
์ ์ค์น๋ฅผ ํ์ญ์์ค
------------------------------------------------------
[ 5์ด๊ฐ ๊ธฐ๋ค๋ ค ์ฃผ์ธ์ ]
------------------------------------------------------
์๋ก์ด ์ถ๊ฐ๋ ๋ถ๋ถ์ด๋ค. ์ด ๋ถ๋ถ์์๋ ํน๋ณํ ํ ๊ฒ์์ด 5์ด๊ฐ ๊ธฐ๋ค๋ฆฌ๊ธฐ๋ง ํ๋ฉด ๋๋ค. ์ด ๋ถ๋ถ์์ OS Type, MySQL ์ฐ๋ ์ฒดํฌ, exec() ํจ์ ์ฌ์ฉ์ฌ๋ถ, httpd.conf์ index file ์ค์ ์ฌ๋ถ, jsbaord ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ๊ถํ์ค์ ์ฌ๋ถ๋ฅผ ์ฒดํฌ๋ฅผ ํ๋ค.
<!> ์ฃผ์ ํ ๊ฒ์ ์ด ๋ถ๋ถ์ meta tag ๋ก ์ฒดํฌํ์ ๊ฒฐ๊ณผ ํ์ด์ง๋ก ๋์ด ๊ฐ๊ฒ ๋์ด ์๋๋ฐ Linux์ฉ Netscape 4.x ๋ Meta tag ๊ฐ ์ ๋๋ก ์๋์ ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์๋ windows ์์ install program์ ๋ค์ ์คํ ํ๋์ง ๋๋ ์๋ ์ค์น ๋ฌธ์๋ฅผ ์ฐธ์กฐํด์ ์๋์ผ๋ก ์ค์น๋ฅผ ํ๊ธฐ ๋ฐ๋๋ค.
------------------------------------------------------
JSBoard Enviornment Check Reuslt
------------------------------------------------------
OS Type : RedHat
MySQL check : Failed
MySQL login์ ์คํจ๋ฅผ ํ์ต๋๋ค. jsboard/INSTALLER/include/passwd.php ์
MySQL์ root password๊ฐ ์ ํํ์ง ํ์ธํด ์ฃผ์๊ณ ๋ง์ผ๋ฉด PHP์ ์ค์น์์
--with-mysqli ์ต์
์ด ๋ค์ด๊ฐ๋์ง ํ์ธํด ์ฃผ์ญ์์ค
๋ง์ฝ DB server๊ฐ ๋
๋ฆฝ๋์ด ์๋ค๋ฉด INSTALL.MANUALY ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ฌ ์ค์น
๋ฅผ ํ์๊ธฐ ๋ฐ๋๋๋ค
index file check : OK
์ด ๋ถ๋ถ์์ ์ ๋๋ก ์ค์ ์ด ๋์ด ์์ ๊ฒฝ์ฐ์๋ ์๋ฌ๋ฅผ ๊ณ์ ๋ฟ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ
์กด์ฌํ๋ค. ์ด๋ด๋์๋ httpd.conf์ DirectoryIndex ์ง์์์ ์์ ๊ณต๋ฐฑ ๋ฌธ
์๊ฐ ์๋์ง ์ดํด ๋ณด๊ณ ๋ง์ฝ ๊ณต๋ฐฑ ๋ฌธ์๊ฐ ์์ผ๋ฉด ์ด๋ฅผ ์ญ์ ํด ์ฃผ๋ฉด ๋๋ค.
Permission check : OK
------------------------------------------------------
------------------------------------------------------
์์ ํ๋ฉด์ ํ๊ฒฝ์ฒดํฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋ค. ์์์๋ ์๋ฌ๊ฐ ํ๋ ๋ฌ๊ฒ์ ๋ณด์ฌ ์ฃผ๊ณ ์๋๋ฐ ์์ ๊ฒฐ๊ณผ๊ฐ ๋ชจ๋ OK์ด๋ฉด ๋ค์ ํ๋ฉด์ผ๋ก ๋์ด๊ฐ๊ณ ์์ ๊ฐ์ด ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ๋ค์ ์ฒ์ ํ๋ฉด์ผ๋ก ๊ฐ๊ฒ ๋๋ค. ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์ ์์๊ฐ์ด ์ ๊ฒ ํ ์ฌํญ๋ค์ ์ ์ํด ์ค๋ค.
ํน์ ์์ ๊ฐ์ด MySQL login failed error ๊ฐ ๋ฐ์ํ๋ฉด ์์์ php file ์ ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ผ๋ก ๋ง๋ค๊ณ ํ ์คํธ๋ฅผ ํด ๋ณด๊ธฐ ๋ฐ๋๋ค.
>
>์์๊ฐ์ด ๋ง๋ค์ด์ ์คํ์ ํ์๊ฒฝ์ฐ OK๊ฐ ๋จ์ด์ ธ์ผ์ง๋ง ๋๋ค. ์๋ง Installer ์์ failed๊ฐ ๋์จ๋ค๋ฉด ์ด๊ฒ ์ญ์ failed๊ฐ ๋์ค๊ฒ ๋ ๊ฒ์ด๋ค.
JSBoard Installer
MySQL password
[ ]
Password ์ด๊ธฐํ [reset]
>์ด ํ๋ฉด์์ MySQL์ root password ๋ฅผ ๋ฃ๊ณ ์ ์ํฐ๋ฅผ ๋๋ฅธ๋ค. ์๋์ Password ์ด๊ธฐํ์ ***reset*** ์ ํด๋ฆญํ๋ฉด session ์ ์๋ ๊ธฐ์กด์ password ๋ฅผ ์ง์๋ฒ๋ฆฌ๋ ์ญํ ์ ํ๋ค. ๊ณ์ ์ ์ ๋ MySQL root password ๋์ system ๊ด๋ฆฌ์๊ฐ ์์ฑํด์ค db ๋ก๊ทธ์ธ ํจ์ค์๋๋ฅผ ๋ฃ์ผ๋ฉด ๋๋ค.
JSBoard Installer
DB value Admin value
-------------------------------------------------
DB name [ ] ID [ ]
DB user [ ] NAME [ ]
DB pass [ ] EMAIL [ ]
[ E N T E R ]
>JSBoard ๊ฐ ์ฌ์ฉํ DB ์ ๋ณด๋ค์ ์
๋ ฅํ๋ค. ์ฃผ์ ํ ๊ฒ์ ์๋์ ์ ์ด ๋์๋ฏ์ด MySQL์ ์กด์ฌํ์ง ์๋ ์๋ก์ด DB name, DB user๋ฅผ ๊ธฐ์
ํด์ผ ํ๋ค.
>
>Admin value ๋ 2.0 ๋ถํฐ ์ถ๊ฐ๋๋ ์ธ์ฆ ๋ชจ๋์ ์ํด ์ค์ ์ ํด ์ฃผ๋๋ก ํ๋ค. ์ฌ๊ธฐ์ ์ง์ ํ๋ id, name, email ์ jsboard 2.0 ์ ์ ์ฒด ๊ด๋ฆฌ์ ์ ๋ณด๋ฅผ ๋ถ์ฌ ํ๋ ๊ฒ์ด๋ค.
>
>๊ณ์ ์ ์ ์ ๊ฒฝ์ฐ์๋ DB value ์ชฝ์ ์์ ์ ๋ชปํ๊ฒ ๊ณ ์ ์ด ๋๋ค.
>
>๊ทธ๋ฆฌ๊ณ Enter ๋ฅผ clickํ๋ฉด, ๋ณ๋ค๋ฅธ ์๋ฌ๊ฐ ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ๊ณ ์ฐฝ์ด ๋จ๋ฉด์ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๊ฐ๊ฒ ๋ ๊ฒ์ด๋ค.
๋ฑ๋ก์ด ์๋ฃ ๋์์ต๋๋ค.
Admin Page๋ก ์ด๋์ ํฉ๋๋ค.
Admin User์ ์ด๊ธฐ Password๋
0000 ์
๋๋ค.
##5. JSBoard ์ด์
์ค์น๊ฐ ์๋ฃ ๋์๋ค๋ฉด ๋ธ๋ผ์ฐ์ ธ๋ ๋ก๊ทธ์ธ ์ฐฝ์ผ๋ก ์ด๋์ ํ๊ฒ ๋๋ค. ์ฌ๊ธฐ์ User์๋ ์๊น Admin value ์ ์ง์ ํด ์ฃผ์๋ id ๋ฅผ ์ ์ด์ฃผ๊ณ , Password ์๋ '0000'์ ๋ฃ์ด์ฃผ๋๋ก ํ๋ค.
๋ก๊ทธ์ธ ํ์ ๊ฐํน๊ฐ๋ค๊ฐ IE์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
<!> "http://domain.com/jsboard/admin/admin.php ์ธํฐ๋ท ์ฌ์ดํธ๋ฅผ ์ด ์ ์์ต๋๋ค. ์ง์ ๋ ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค."
์ด ๋ฉ์ธ์ง๋ฅผ ๋ง๋๋๋ผ๋ ๋นํฉํ์ง ๋ง๊ณ ํ์ธ์ ๋๋ฅธ ํ์ F5 ๋๋ reload ๋ฅผ ํด์ฃผ๋ฉด admin page ์ ์ ์์ด ๋๋ค. ์ด ์๋ฌ ๋ฉ์ธ์ง๋ ๊ด๋ฆฌ์์ ํจ์ค์๋๋ฅผ 0000์์ ๋ณ๊ฒฝ์ ํ๊ณ ๋๋ฉด ๋ค์๋ ๋์ง ์๋๋ค.
์ผ๋จ admin ์ ๋ก๊ทธ์ธ์ ํ ํ์ ์ ์ผ ๋จผ์ ํ ๊ฒ์ "์ ์ ๊ด๋ฆฌ" ๋ฒํผ์ ๋๋ฅด๊ณ admin user ์ password ๋ฅผ 0000 ์์ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋ฐ๊พธ์ด ์ฃผ๋๋ก ํ๋ค. ํจ์ค์๋๋ฅผ ๋ณ๊ฒฝํ ํ์๋ ๋ก๊ทธ์์์ ํ ํ์ ๋ค์ ๋ก๊ทธ์ธ์ ํ๋๋ก ํ๋ค.
์ด๋๋ฏผ ํ์ด์ง๋ http://domain.com/jsboard/admin/ ์ผ๋ก ์ ๊ทผ์ ํ ์๊ฐ ์๋ค. ํจ์ค์๋ ๋ณ๊ฒฝํ ๋ค์ ๋ก๊ทธ์ธ์ ํ์์ผ๋ฉด "์ ์ญ๋ณ์ ์ค์ " ์ ํด๋ฆญํ์ฌ ๋ค์์ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํด ์ค์ผ ํ๋ค.
```php
# login variation name (This value must be modified as security problem)
$jsboard = "login";
์ด ๊ฐ์ ๋ก๊ทธ์ธ ๋ณ์๋ช ์ ๋ณ๊ฒฝํ๋ค. ์ฆ ๋ณด์ ์ํ ์์๊ฐ ๋ฐ์ํ ์ง๋ผ๋ ์ด ๊ฐ์ด ๋ค๋ฅด๋ฉด ์ ๊ทผ์ด ์ด๋ ต๊ฒ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋๋์ง ๋ง๊ณ ๊ผญ ๋ณ๊ฒฝํ๋๋ก ํ๋ค.
# location of default page after login
$print[dpage] = "http://domain.com/jsboard/list.php?table=test";์ด ๊ฐ์ login ์ ํ ํ์ ๊ธฐ๋ณธ์ผ๋ก ๊ฐ ์์น๋ฅผ ์ง์ ์ ํ๋๋ก ํ๋ค. ์ด ๋ถ๋ถ์ login ์ฐฝ ์ค๋ช ์ ํ๋ README.OPERATE ๋ฌธ์์์ ๋ฐ๋ก ๋ค๋ฃจ๋๋ก ํ ๊ฒ์ด๋ค.
# web path of installed jsboard
$board[path] = "http://domain.com/jsboard/";์ด ๊ฐ์ jsboard ๊ฐ ์ค์น ๋์ด ์๋ ์น ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋ค. ๋ฉ์ผ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๋ ๊ฒ์ํ ์์น๋ฅผ ๋งํฌ์ํค๊ธฐ ์ํด ์ฌ์ฉ์ด ๋๋ฉฐ, ๋ํ ๊ธ ๋ฑ๋ก์ ํ ๋ referrer ๋ฅผ ์ฒดํฌํ์ฌ, ๊ฒ์ํ์ ์คํธ์ ์ฌ๋ฆฌ๋ ํ๋ก๊ทธ๋จ๋ค์ด ์ ๊ทผํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ฒ ๋๋ค. ๊ฒฝ๋ก์ ๊ฐ์ฅ ๋ง์ง๋ง์ / ๋ก ๋งํ ์์ด์ผ ํ๋ค.
#################################################
# If registed article as follow information, requried passwd of super user
#################################################
$compare[name] = "์ฅ์ฅ";
$compare[email] = "[email protected]";์ด ์ค์ ์ ์ ์ฒด ๊ด๋ฆฌ์์ ํจ์ค์๋๋ก๋ง ์ด๋ฆ๊ณผ email ์ ๋ฑ๋กํ ์ ์๋๋ก ์ ํ์ ํ๋ ๊ธฐ๋ฅ์ด๋ค. ๊ด์ฌ์ด ์์ผ๋ฉด ์ค์ ์ ํ๋๋ก ํ๋ค.
์ผ๋จ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด์ ๋๋ง ์ค์ ์ ํ๋ฉด ์ ์ฒด์ ์ธ ์ด์์ ๋ณ ์ง์ฅ์ ์๋ค. ๊ฐ๊ฐ ๊ฒ์ํ์ ๋ํ ์ค๋ช ์ README.OPERATE์ ๊ดํ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ๋๋ก ํ๋ค.
##6. JSBoard ๋ณด์
๋ณดํต CGI ๋ฐฉ์์ ํตํ upload ์ ๊ด๋ จํ์ฌ ๋ณด์๋ฌธ์ ๊ฐ ๋ง์ด ๋ฐ์์ ํ๊ณ ์๋ค. ํ์ง๋ง ๋จ์ํ CGI ์ ์ฝ๋๋ง ์์กดํ์ฌ ๋ณด์๋ฌธ์ ๋ฅผ ๋ฐฉ์ง ํ๋ค๋ ๊ฒ์ ๋ฌด๋ฆฌ๋ผ๊ณ ์๊ฐ์ด ๋์ด apache์ ์ค์ file ์์ ์์ฒ์ ์ผ๋ก ์ ๋ก๋ file ์ ๋ํด์ ์คํ์ด ๋์ง ์๋๋ก ํ๋ ์ค์ ์ ์ ์ฉ ์์ผ ๋ณด์๋ค. ํ์ฌ ํ์์ ๊ฐ์ธ ์๋ฒ์ kldp server์์ ์ ์ฉ์ด ๋์ด ์์ผ๋ฉฐ ํนํ ํธ์คํ ์๋ฒ์ ๊ฐ์ด ์ฌ๋ฌ ๊ณ์ ๋ค์ด ์ฌ์ฉ์ ํ๋ ๊ฒฝ์ฐ์ JSBoard ๋ฅผ ์ฌ์ฉํ ์๋ ์๊ธฐ ๋๋ฌธ์ ์ด ์ ํ ์ ํด ๋๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
์ค์ ์ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์๋ค.
<DirectoryMatch "^/.*/jsboard/data">
AddType application/x-httpd-php3-source .phps .php .ph .php3 .cgi .sh .pl .html .htm .shtml .vbs .ins
AddType application/x-httpd-php-source .phps .php .ph .php3 .cgi .sh .pl .html .htm .shtml .vbs .ins
ErrorDocument 403 http://domain.com/ErrorMSG/error_msg.php?l=ko&c=403
<Files ~ ".*\.ph$">
Order allow,deny
Deny from all
</Files>
</DirectoryMatch>์ด ์ค์ ์ ์๋ฏธ๋ jsboard/data๋ผ๋ ๋๋ ํ ๋ฆฌ ์๋์ ์๋ ์ด๋ ํ ๊ฒฝ๋ก์ data๋ผ๋ ์ด๋ฆ์ ๋๋ ํ ๋ฆฌ์์ .phps .php .ph .php3 .cgi .vbs .ins .sh .pl .htm .html .shtml ์ ํ์ฅ์๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉด source ๋ฅผ ์ถ๋ ฅํ๋ผ๋ ์๋ฏธ์ด๋ฉฐ ์ฃผ์ ํ ๊ฒ์ ์ฌ๊ธฐ์ ํจ์ค์๋ ๊ฐ์ ๊ฒ์ด ๋ค์ด๊ฐ ์๋ source ๋ฅผ ์ฌ๋ ค ๋์ผ๋ฉด ์๋๋ค๋ ๊ฒ์ ์ฃผ์ํด์ผ ํ๋ค. ์์ ๊ฒฝ๋ก๋ ๊ฒ์ํ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ์ด๋ป๊ฒ ํ๋๋์ ๋ฐ๋ผ ์์ ์ ํด ์ค์ผ ํ๋ค.
๋ํ data ๋ผ๋ ์ด๋ฆ์ ๋๋ ํ ๋ฆฌ ์๋๋ก .ph๋ก ์ง์ ์ ๊ทผํ ๊ฒฝ์ฐ์๋ http://domain.com/ErrorMSG/error_msg.php?l=ko&c=403 ํ์ด์ง๋ฅผ ์ถ๋ ฅ ํ๋ผ๋ ์๋ฏธ์ด๋ค.
์ด ์ค์ ์ root ์ ๊ถํ๋ง ๊ฐ์ง๊ณ ์์ผ๋ฉด ๋๊ตฌ๋ ๋ค ์ค์ ์ ํด ์ฃผ๋ ๊ฒ์ด ์ข์ผ๋ฉฐ ๋ง์ฝ ๊ณ์ ์ ์ ๋ค์ด๋ผ๊ณ ํด๋ ์๋ฒ ๊ด๋ฆฌ์์๊ฒ ์ด ์ค์ ์ ํด ๋ฌ๋ผ๊ณ ํ๋๊ฒ์ด ์ข๋ค. ์ด ์ค์ ์ ์ํด์ ์ข์๊ฒ์ด ํ๋๋ ์์ํ ๋ ์๋ง ๋ค ํด์ค ๊ฒ์ด๋ค.
๊ณ์ ์ ์ ๋ค์ ๊ฒฝ์ฐ์๋ db ์ password ๋ฅผ ๊ฐ์ง๊ณ ์๋ file์ ๋ณดํธํ๊ธฐ ์ํ ๊ฒ์ ์ค๋ช ํ๋ค. ์ฆ ๋ค๋ฅธ ์ ์ ๊ฐ db ์ ํจ์ค์๋๋ฅผ ๋ณผ์ ์๋๋ก ํ๊ธฐ ์ํ ๊ฒ์ผ๋ก ์ด ๋ถ๋ถ์ root(์๋ฒ ๊ด๋ฆฌ์) ๊ฐ ํด ์ฃผ์ด์ผ ํ ๋ถ๋ถ์ด๋ค. ๋ง์ฝ ์ด๊ฒ์ด ๋ถ๊ฐ๋ฅ ํ๋ค๋ฉด ์ด ํ์ผ๋ค์ ๊ถํ์ 606 ์ผ๋ก ๊ทธ๋ฅ ๋๋ฉด ๋๋ค. ์ฆ,
- jsbaord/config/global.php,
- jsboard/config/spma_list.php,
์ ๋ํ group ์์ ๊ถ์ nobody ๋ก ์ง์ ํด ๋ฌ๋ผ๊ณ ํด์ผ ํ๋ค (Debian ์ฌ์ฉ์ ๋ผ๋ฉด www-data ๋ก ํด์ผ ํ ๊ฒ์ด๊ณ , RH 7.x ์ ๊ฒฝ์ฐ์๋ apache ์ด๋ค. ๋ค๋ฅธ OS๋ ๋ชจ๋ฅด๊ฒ ๋ค. httpd.conf ์ Group ์ง์์์ ์ค์ ๋์ด ์๋ ๊ฐ์ ํ์ธ์ ํด์ ํด ๋ฌ๋ผ๊ณ ํ๋ค) ์ฆ
[root@host jsboard]$ # root๊ฐ ์คํํด์ผ ํ๋ ๋ช
๋ น
[root@host jsboard]$ chgrp nobody config/global.php
[root@host jsboard]$ # root๊ฐ ์คํํด์ผ ํ๋ ๋ช
๋ น
[root@host jsboard]$ chgrp nobody config/spam_list.txt๋ช ๋ น์ ์คํํด ๋ฌ๋ผ๊ณ ํด์ผ ํ๋ค. ์ด๋ฅผ ์ํํ๋ฉด ์๋์ ๊ฐ์ด ์์ ๊ถ์ ๊ฐ์ง๊ฒ ๋๋ค. ์ด๊ฒ์ account ๋ฅผ ์คํํ ํ์ ํํ ์ผ๋ค์ด๋ค. (Debian์ ๊ฒฝ์ฐ์๋ nobody๊ฐ ์๋๋ผ www-data๊ฐ ๋์ด์ผ ํ๋ค. RH 7.x ์ ๊ฒฝ์ฐ์๋ apache ์ด๋ค.)
-rw-rw---- accountname nobody config/global.php
-rw-rw---- accountname nobody config/spam_list.txt๋ง์ฝ root ๊ฐ ์ด๋ฅผ ์ํ์ง ์๊ฑฐ๋ ๋๋ ๋ถ์ฑ์คํ root ๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด
[root@host jsboard]$ chmod 606 config/global.php
[root@host jsboard]$ chmod 606 config/spam_list.txt์ ์คํํ๊ณ , ํผ๋ฏธ์ ์ ๋ค์๊ณผ ๊ฐ์ด ๋๋ค.
-rw----rw- accountname accountname config/global.php
-rw----rw- accountname accountname config/spam_list.txtํ์ง๋ง ์ด๋ ๊ฒ ํ์ ๊ฒฝ์ฐ ์ด์์ ๊ฐ๋ฅํ๋ ๋ณด์์ ์ข์ง๋ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ฃผ์ ํ ๊ฒ์ account user ์ ๊ถํ์ผ๋ก ์ค์น ์์๋ ๋ณด์์ ๋ฌธ์ ์ฑ์ด ๋๋ ๋ ์ ์์ผ๋ home directory์ ๊ถํ์ ๊ผญ 711๋ก ํด์ผํ๋ค.
##7. Bug report
๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ ๊ฒฝ์ฐ https://github.com/Joungkyun/JSBoard/issues ์ ๋ฆฌํฌํ ์ ํด ์ฃผ๋ฉด ๊ฐ์ฌํ๊ฒ ๋ค.