Search Results for '인터넷서버 운영'

ATOM Icon

21 POSTS

  1. 2011/07/25 리눅스 CentOS 에 형상관리 서버 Subversion 운영하기 by 프로그래머 (1)
  2. 2009/08/21 문서 지향 데이타베이스인 MongoDB를 PHP로 다뤄보자 by 프로그래머
  3. 2009/08/15 단조롭지만 빠르고 쉽게 확장할 수 있는 데이타베이스 MongoDB by 프로그래머
  4. 2009/01/10 제로보드XE에서 오동작이 생기는 경우 메모 by 프로그래머
  5. 2008/12/14 MySQL 프로시져(PROCEDURE) 활용 샘플 소스 코드 by 프로그래머
  6. 2008/12/13 [CentOS] Apache,PHP,MySQL,Zend,OpenSSL,PEAR 설치 메모 by 프로그래머
  7. 2008/11/13 Apache,PHP,MySQL,Zend,OpenSSL 설치 동영상 by 프로그래머 (1)
  8. 2008/10/26 리눅스 서버 CentOS5 설치 화면 캡쳐 동영상 by 프로그래머
  9. 2008/09/17 웹프로그래머의 웹사이트 순위 이야기 by 프로그래머
  10. 2008/05/02 웹 솔루션 개발시 고려해야 할 것. by 프로그래머
  11. 2008/04/24 중대형 웹사이트를 운영하기 위한 서버구축 시스템 구성도. by 프로그래머 (2)
  12. 2007/09/15 블로그 접속이 안되서 원인을 분석을 했더니 ... by 프로그래머 (1)
  13. 2007/09/08 리눅스를 애용한지 10년이 넘었습니다. by 프로그래머 (8)
  14. 2007/08/25 오늘 공개 보드로 플래시 커뮤니티를 만들었습니다. by 프로그래머 (2)
  15. 2007/08/10 리눅스 또는 유닉스 주요 명령어와 프로그램 by 프로그래머
  16. 2007/08/08 서버를 운영하다 발생하는 난감한 사고들. by 프로그래머 (6)
  17. 2007/06/04 스타크래프트 배틀넷 서버 설치 동영상 by 프로그래머 (9)
  18. 2007/06/02 빠른 블로그 운영을 위해 새 서버를 샀다.^^ by 프로그래머 (4)
  19. 2007/05/29 리눅스(LINUX) 명령어 및 시연 동영상 #1 by 프로그래머 (4)
  20. 2007/05/16 쌍둥이 블로그 만들기, 블로그 해부하는 재미... by 프로그래머 (1)
  21. 2007/05/04 IDC센타에 있는 내 개인 리눅스 서버 운영 history by 프로그래머 (7)

형상관리 서버를 운영하고 싶다면 윈도우즈에서 Visual SVN Server 를 설치해서 손쉽게 운영할 수 있으나 리눅스에 설치해야할 경우도 있습니다.
CentOS 리눅스 환경에서 Subversion 서버를 설치해보려면 아래 내용을 참고하세요.

# adduser svn

# yum install subversion

# chkconfig --add svnserve
# chkconfig svnserve on

# vi /etc/sysconfig/svnserve
OPTIONS="-d -r /home/svn"

# service svnserve start

# svnadmin create --fs-type fsfs /home/svn/test
# svnadmin create /home/svn/project

# cd /home/svn/test/conf

# vi svnserve.conf
anon-access = none
auth-access = write
password-db = passwd

# vi passwd
[users]
lion=lion_password
tiger=tiger_password

# chown -Rv svn.svn /home/svn

# service svnserve restart

# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
또는
# iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
# service iptables save

# service iptables restart

# ps -aux | grep svnserv
# netstat -ant | grep 3690

# chmod -R g+w,g+r /home/svn
# usermod -a -G svn lion



Posted by 프로그래머

2011/07/25 17:37 2011/07/25 17:37
, , , , , , ,
Response
No Trackback , a comment
RSS :
http://hompy.info/rss/response/625

문서 지향 데이타베이스(Document Oriented Database) 몽고디비(MongoDB)를 테스트 하기 위한 PHP 소스 코드를 준비했습니다. 아래 소스 코드를 살펴보시면 PHP로 몽고디비에 접근하는 방법을 파악할 수 있습니다. 이에 대해 좀더 알아보고 싶다면 PHP 튜토리얼PHP 메뉴얼을 체크해보세요. 그리고 직접 테스트 해보려면 PHP 드라이버 설치를 해야 합니다. 드라이버도 설치하고 문서도 숙지해서 개발 환경을 갖추었다면 몽고디비를 실전에 응용해보는 것은 어떨까요? 거대한 자료 묶음을 빠르게 제어한다는 이 데이타베이스의 장점을 살려 위키(Wiki)나 블로그 또는 트위터 같은 소셜 네트워크 사이트를 만들어 봐도 좋은 것 같네요.

[MongoDB 테스트를 위한 소스 코드]
<?
include "Mongo/Auth.php";

$auth = new MongoAuth("192.168.10.123:27017");
$auth->login("desk", "tiger", "ti_password");
if (!$auth->loggedIn) {
      echo $auth->error;
      exit;
}

$coll = $auth->db->selectCollection("person.data");
$coll->drop();

if (!$coll->count()) {
      $obj = array( "name" => "kim", "age" => 21 );
      $coll->insert($obj);

      $obj = array( "name" => "song", "age" => 18 );
      $coll->insert($obj);

      $obj = array( "name" => "lee", "age" => 23 );
      $coll->insert($obj);

      $obj = array( "name" => "han", "age" => 18 );
      $coll->insert($obj);

      $obj = array( "name" => "choi", "age" => 19 );
      $coll->insert($obj);

      $coll->ensureIndex(array('name' => 1), true);
      $coll->ensureIndex(array('age' => 1), false);

      $coll->deleteIndex("age");
}

$obj = array( '$set' => array("age"=>29 ) );
$coll->update(array("name"=>"choi"),$obj);

$obj = array( '$set' => array("age"=>21, "sex"=>"f", "tags"=>array()) );
$coll->update(array("name"=>"choi"),$obj);

$obj = array( '$push' => array("tags" => "game"));
$coll->update(array("name"=>"choi"),$obj);

$obj = array( '$push' => array("tags" => "movie"));
$coll->update(array("name"=>"choi"),$obj);

$obj = array( '$pushAll' => array("tags" => array("music","sports")));
$coll->update(array("name"=>"choi"),$obj);

$obj = array( '$pullAll' => array("tags" => array("music","love")));
$coll->update(array("name"=>"choi"),$obj);

$query = array('age'=>array('$gt'=>18));
$cursor = $coll->find($query)->sort(array("age"=>-1));

displayCursor($cursor);

$auth->logout();

exit;

function displayCursor($cursor){
      while ($cursor->hasNext()) {
            $obj = $cursor->getNext();
            echo displayObject($obj);
            echo "<br>\n";
      }
}

function displayObject($obj){
      $str = json_encode($obj);
      $str = preg_replace('/"([a-z_][a-z0-9_]*)":/','<FONT color=#888888>\1</FONT>:', $str);
      $str = preg_replace('/"([a-z_][a-z0-9_]*)"/','<FONT color=#cc3333>"\1"</FONT>', $str);
      $str = str_replace(Array(',',':','{','}'), Array(', &nbsp; ',' : ','{ ',' }'), $str);
      return $str;
}
?>

[MongoDB 테스트 실행 결과]
{ _id : { },   name : "lee",   age : 23 }
{ _id : { },   name : "kim",   age : 21 }
{ _id : { },   name : "choi",   age : 21,   sex : "f",   tags : ["game",   "movie",   "sports"] }

웹프로그래머의 홈페이지 정보 블로그 http://hompy.info/587

Posted by 프로그래머

2009/08/21 00:19 2009/08/21 00:19

경제적인 시스템 구축 비용으로 거대한 데이타 묶음을 빠르게 조작 및 검색할 수 있는 데이타베이스, 비교적 손쉽고 유연하게 확장할 수 있는 크라우드 컴퓨팅 환경에 적합한 데이터베이스로 key-value 데이타베이스가 근래에 언급되고 있습니다. 때로는 이것을 문서지향 데이타베이스(document-oriented database) 라고도 소개되며 지금 실험할 몽고디비(MongoDB) 역시 이러한 형태의 데이타베이스라고 볼 수 있습니다.
몽고디비는 JSON 문서 객체를 BSON 바이너리 형태로 저장하기 때문에 저장 공간과 처리 시간이라는 측면에서 효율이 높은 편이며 JSON 문서 객체를 사용하고 있으므로 제약 없이 가변 구조를 가진 데이터 객체를 교환할 수 있으므로 개발 언어와 플랫폼에 독립적으로 운용될 수 있습니다. 몽고디비는 문서지향 데이터베이스가 가지는 장점을 실현할 수 있는 여러가지 시스템 중에 하나이며 비교적 처리 속도가 빠르고 확장하기 편하며 거대한 데이터 컬렉션을 안정적이면서 효과적으로 다루게 해줄것입니다. 그러나 이러한 장점이 있는 반면 일반적으로 널리 사용되고 있는 관계형 데이타베이스(RDBMS)의 장점을 포기해야 하므로 구현하고자 하는 시스템에 맞추어 적절하게 활용하면 되겠습니다.
아래 동영상은 몽고디비를 실험하는 과정을 캡쳐한 것입니다. 몽고디비를 설치하고 사용자를 추가하고 디비 접근 권한을 획득하며 데이터 컬렉션을 조작하고 검색하고 인덱싱하는 과정 등을 담았습니다. 이 과정을 따라해 보시면 어느 정도의 몽고디비 사용법을 익힐 수 있습니다.



문서지향 데이타베이스의 역사는 그리 길지 않다. 몽고디비 또한 현재 베타버전으로 배포되고 있으므로 사용하려면 선택하기 전에 충분한 테스트를 해야만 할 것입니다. 만약 맘에 차지 않는다면 Couchdb, mongoDB, Redis, TokyoCabinet 등과 같은 또 다른 데이타베이스들을 체크해 볼 수도 있겠습니다. 참고로 다음 포스팅에는 PHP로 몽고디비를 접근하고 제어하는 내용으로 써보려고 합니다.

cd /usr/local/
wget http://downloads.mongodb.org/linux/mongodb-linux-i686-latest.tgz
tar xvzf mongodb-linux-i686-latest.tgz
mv mongodb-linux-i686-2009-08-13 mongo
vi ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mongo/bin
source ~/.bash_profile
mkdir -p /data/db

mongod run 1>/dev/null &

mongo

use admin
db.addUser("dba", "dba_password")
db.system.users.find()

use desk
show dbs
show collections
db.addUser("tiger", "ti_password")
show dbs
show collections
db.addUser("lion", "li_password")
db.system.users.find()

use admin
db.shutdownServer()

exit

mongod --auth 1>/dev/null &

mongo

use admin
db.auth("dba", "dba_password")
db.system.users.find()

use desk
db.system.users.remove( { user: "lion" } )
db.system.users.find()

exit

mongo desk

db.auth("tiger", "ti_password")
show collections
db.addUser("puma", "pu_password")
db.addUser("fox", "fo_password")
db.system.users.find()
db.system.users.find( { user: "puma" } )
show users
db.getCollectionNames()

db.person.data.save( { name : "tiger", age : 21 } )
show collections
db.person.data.save( { name : "lion", age : 25, sex : "f" } )
db.person.data.save( { name : "eagle", age : 23 } )
db.person.data.save( { name : "puma", age : 22, sex : "m" } )
db.person.data.save( { name : "fox", age : 23 } )
db.person.data.find()
db.person.data.find().sort( { age : -1 } ).limit(3)
db.person.data.find( { name : "puma" } )
db.person.data.find( { age : { $gt : 22 } } )
db.person.data.find( { age : { $ne : 23 } } )
db.person.data.find( { age : { $in : [21,25] } } )
db.person.data.group( { key: { age:true }, cond: { }, reduce: function(obj,prev) { prev.total++; }, initial: { total: 0 } });

db.system.indexes.find()
db.person.data.ensureIndex( { "age" : 1 } )
db.system.indexes.find()
db.person.data.find().sort( { age : -1 } ).explain()
db.person.data.dropIndex( { "age" : 1 } );
db.system.indexes.find()
db.person.data.ensureIndex( { "age" : 1 } )
db.person.data.ensureIndex( { "age" : 1, "name" : -1 } )
db.system.indexes.find()
db.person.data.dropIndexes();
db.system.indexes.find()
db.person.data.drop()
show collections
db.dropDatabase()
show collections

use admin
db.auth("dba", "dba_password")
show dbs
db.shutdownServer()
exit



웹프로그래머의 홈페이지 정보 블로그 http://hompy.info/586

Posted by 프로그래머

2009/08/15 00:00 2009/08/15 00:00

간단하게 커뮤니티를 만들어 보기 위해 제로보드XE와 얼마전 업그레이드 하면서 새로운 이름으로 변경된 XpressEngine을 설치해서 사용해 보았습니다. 다양한 기능이 장점이지만 그로 인해 초급자의 경우 사용하기에 다소 복잡한 면이 있어 보입니다. 쓰다보니 PHP 설정 파일에 always_populate_raw_post_data 의 값을 On 상태로 해놨을 경우 원하는 페이지가 나오지 않고 아래와 같은 오동작을 일으키는 경우가 있어서 참고할 수 있도록 기록으로 남겨둡니다.
XMLSocket 을 이용해 플래시에서 XML 형식으로 PHP 와 통신하기 위해 이 설정을 켜두고 $HTTP_RAW_POST_DATA 변수를 통해 플래시에서 보내온 XML 데이터를 받아서 PHP 로 파싱한 후에 사용했었습니다.

[오동작 결과]
- <response>
    <error>0</error>
    <message>success</message>
  </response>

[/etc/php.ini 설정]
always_populate_raw_post_data = On

웹프로그래머의 홈페이지 정보 블로그 http://hompy.info/560

Posted by 프로그래머

2009/01/10 18:49 2009/01/10 18:49

아래 소개된 SQL 소스 코드는 3가지의 MySQL 프로시져(PROCEDURE)를 이용해서 테이블 중에 개별 레코드의 특정 컬럼의 문자열을 구분자로 분리해서 별도의 테이블에 각각 하나의 레코드로 기록할 수 있도록 합니다.

DROP TABLE IF EXISTS my_bundles;
CREATE TABLE my_bundles(seq int auto_increment, total int, bundle text, PRIMARY KEY (seq));
INSERT INTO my_bundles(total,bundle) VALUES (3,"JAVASCRIPT,ACTIONSCRIPT,HTML"),(1,"C++"),(2,"ALGOL,C#"),(7,"C,PHP,JSP,LISP,BASIC,ADA,PYTHON"),(6,"JAVA,RUBY,PASCAL,COBOL,FORTRAN,PERL"),(5,"DELPHI,PROLOG,SMALLTALK,PERL,COLDFUSION");
SELECT * FROM my_bundles;

DROP TABLE IF EXISTS my_items;
CREATE TABLE my_items(seq int auto_increment, language varchar(32), PRIMARY KEY (seq));

DELIMITER $$
DROP PROCEDURE IF EXISTS tokenizer $$
CREATE PROCEDURE tokenizer(
    INOUT input_string varchar(1025), OUT token varchar(1025), IN boundary varchar(16)
) READS SQL DATA
BEGIN
    SELECT char_length(boundary) INTO @boundry_length;
    SET @idx = LOCATE(boundary,input_string);
    IF (@idx = 0) THEN
        SET token = input_string;
        SET input_string = NULL;
    ELSE
        SET token = SUBSTR(input_string,1,@idx-1);
        SET input_string = SUBSTR(input_string,@idx + @boundry_length);
    END IF;
END
$$
DELIMITER ;

DELIMITER $$
DROP PROCEDURE IF EXISTS insert_items $$
CREATE PROCEDURE insert_items(IN my_str varchar(1024)) MODIFIES SQL DATA
BEGIN
    SELECT my_str INTO @org_string;
    CALL tokenizer(@org_string, @tkn_str, ',');
    WHILE (@tkn_str IS NOT NULL) DO
        INSERT INTO my_items(language) VALUES (@tkn_str);
        CALL tokenizer(@org_string, @tkn_str, ',');
    END WHILE;
END
$$
DELIMITER ;

CALL insert_items('a,b,c');
SELECT * FROM my_items;

DELIMITER $$
DROP PROCEDURE IF EXISTS insert_cols_items $$
CREATE PROCEDURE insert_cols_items()
BEGIN
    DECLARE ok INT DEFAULT '0';
    DECLARE tmp_seq INT DEFAULT '0';
    DECLARE tmp_total INT DEFAULT '0';
    DECLARE tmp_bundle TEXT DEFAULT '';
    DECLARE tot INT DEFAULT '0';
    DECLARE cur CURSOR FOR SELECT seq, total, bundle FROM my_bundles;
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET ok = 1;
    OPEN cur;
    REPEAT
        FETCH cur INTO tmp_seq, tmp_total, tmp_bundle;
        IF NOT ok THEN
            CALL insert_items(tmp_bundle);
            SET tot = tot + 1;
        END IF;
    UNTIL ok END REPEAT;
    CLOSE cur;
    IF tot > 0 THEN
        SELECT tot;
    ELSE
        SELECT 0;
    END IF;
END
$$
DELIMITER ;

TRUNCATE my_items;
CALL insert_cols_items();
SELECT * FROM my_items;





웹프로그래머의 홈페이지 정보 블로그 http://hompy.info

Posted by 프로그래머

2008/12/14 10:21 2008/12/14 10:21

인터넷 서버 소프트웨어 설치는 서버 장애 발생으로 재설치를 하거나 새로 서버를 도입할 때 처음 하는 작업이므로 아주 드물게 하는 작업입니다. 그래서 전문적으로 관리하는 엔지니어가 아닌 이상 매번 설치할 때마다 오래된 기억을 더듬어 작업하게 되며 항상 경험해본 비슷한 실수로 대체적으로 순조롭게 설치 되지 않는 경우가 허다합니다. 요즘은 배포판이 좋아져서 손쉽게 인터넷 서버 운영이 가능하지만 성능을 높이기 위해 소스 컴파일로 설치 한다거나 배포판에 포함되지 않는 다른 기능들을 추가하기 위해 소스 컴파일로 설치할 경우 귀찮음과 난해함으로 골머리가 아플 수 있습니다. 전문적으로 이런 업무를 하는 분들은 아마도 매뉴얼과 매크로가 준비되어 있어 비교적 손쉽게 처리할 수 있는 일인지 모르지만 그렇지 않은 경우 어렵고 복잡한 문제가 됩니다.

yum -y install gcc cpp gcc-c++ compat-gcc-34-g77 flex openssl*
yum -y install libjpeg-devel libpng-devel freetype-devel gd-devel libtermcap-devel ncurses-devel libxml2-devel libc-client-devel bzip2-devel
#yum -y install libtermcap-devel [MYSQL컴파일에_적용]
#yum -y install ncurses-devel
#yum -y install libxml2-devel [PHP컴파일에_적용]
#yum -y install openssl*
#yum -y install libc-client-devel
#yum -y install bzip2-devel
rpm -qa gcc* cpp* compat-gcc* flex* openssl*
rpm -qa libjpeg* libpng* freetype* gd-*

reboot [패키지_변경시_리부팅_필요]

cd /usr/local/src
wget ftp://ftp.neowiz.com/pub/mysql/Downloads/MySQL-5.0/mysql-5.0.67.tar.gz
tar xvzf mysql-5.0.67.tar.gz
wget ftp://ftp.neowiz.com/pub/apache/httpd/httpd-2.2.10.tar.gz
tar xvzf httpd-2.2.10.tar.gz
wget ftp://ftp.neowiz.com/pub/languages/php/php-5.2.6.tar.gz
tar xvzf php-5.2.6.tar.gz
useradd -M -s /bin/false mysql
cd /usr/local/src/mysql-5.0.67
./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-extra-charsets=all
make && make install
ll /usr/local/mysql
/usr/local/mysql/bin/mysql_install_db --user=mysql
chown -R root.mysql /usr/local/mysql
chown -R mysql /usr/local/mysql/var
vi /etc/skel/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
vi ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
source ~/.bash_profile
cp /usr/local/mysql/share/mysql/my-huge.cnf /etc/my.cnf
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list mysqld
service mysqld start

cd /usr/local/src/httpd-2.2.10
vi /usr/local/src/httpd-2.2.10/server/mpm/prefork/prefork.c
# define DEFAULT_SERVER_LIMIT 2048
vi /usr/local/src/httpd-2.2.10/server/mpm/worker/worker.c
# define DEFAULT_SERVER_LIMIT 512
# define DEFAULT_THREAD_LIMIT 2048
./configure --prefix=/usr/local/apache --enable-mods-shared=all --enable-so --enable-ssl --enable-modules=ssl --enable-rewrite --with-mpm=prefork

make && make install
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
vi /etc/init.d/httpd
# chkconfig: 2345 90 90
# description: init file for Apache server daemon
# processname: /usr/local/apache/bin/apachectl
# config: /usr/local/apache/conf/httpd.conf
# pidfile: /usr/local/apache/logs/httpd.pid
chkconfig --add httpd
chkconfig --list httpd
service httpd start

cd /usr/local/src/php-5.2.6

./configure --with-config-file-path=/etc --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --disable-debug --enable-safe-mode --enable-sockets --enable-sysvsem=yes --enable-sysvshm=yes --enable-ftp --enable-gd-native-ttf --enable-inline-optimization --enable-bcmath --with-zlib --with-jpeg-dir --with-png-dir --with-freetype-dir --with-libxml-dir --enable-exif --with-gd --with-ttf --with-gettext --enable-sigchild --enable-mbstring --with-openssl --with-imap --with-imap-ssl --with-kerberos

./configure \
--with-config-file-path=/etc \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--disable-debug \
--enable-safe-mode \
--enable-sockets \
--enable-sysvsem=yes \
--enable-sysvshm=yes \
--enable-ftp \
--enable-gd-native-ttf \
--enable-inline-optimization \
--enable-bcmath \
--with-zlib \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-libxml-dir \
--enable-exif \
--with-gd \
--with-ttf \
--with-gettext \
--enable-sigchild \
--enable-mbstring \
--with-openssl \
--with-imap \
--with-imap-ssl \
--with-kerberos

make && make install
cp /usr/local/src/php-5.2.6/php.ini-dist /etc/php.ini
vi /usr/local/apache/conf/httpd.conf
User apache
Group apache

ServerName www.hompy.info:80
DocumentRoot "/usr/local/apache/htdocs"

LoadModule ssl_module modules/mod_ssl.so

<IfModule dir_module>
     DirectoryIndex index.html index.htm index.php
</IfModule>

<IfModule mime_module>
     AddType application/x-httpd-php .php .html
     AddType application/x-httpd-php-source .phps
</IfModule>

Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-default.conf
Include conf/extra/httpd-ssl.conf

service httpd restart
rm /usr/local/apache/htdocs/index.html
echo '<?php phpinfo() ?>' > /usr/local/apache/htdocs/index.php

cd /usr/local/src
tar xvzf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
cd ZendOptimizer-3.3.3-linux-glibc23-i386
./install.sh
# rm /etc/php.ini
# ln -s /usr/local/Zend/etc/php.ini /etc/php.ini

/usr/local/php/bin/pear upgrade-all
/usr/local/php/bin/pear install DB File Mail Mail_Mime
/usr/local/php/bin/pear install MDB2 MDB2_Driver_mysql MDB2_Driver_mysqli
/usr/local/php/bin/pear install HTTP_Request XML_RPC

vi /etc/skel/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/php/bin
vi ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/php/bin
source ~/.bash_profile

/usr/local/apache/conf/httpd.conf
#Include conf/extra/httpd-ssl.conf

mkdir /usr/local/apache/conf/ssl
cat > /usr/local/apache/conf/ssl/auto.sh
#!/bin/sh
echo "password"
^D
chmod 700 /usr/local/apache/conf/ssl/auto.sh

vi /usr/local/apache/conf/extra/httpd-ssl.conf

#SSLPassPhraseDialog  builtin
SSLPassPhraseDialog  exec:/usr/local/apache/conf/ssl/auto.sh

DocumentRoot "/usr/local/apache/htdocs"
ServerName www.hompy.info:443
ServerAdmin you@hompy.info

SSLCertificateFile /usr/local/apache/conf/ssl/server.crt

SSLCertificateKeyFile /usr/local/apache/conf/ssl/server.key

SSLCertificateChainFile /usr/local/apache/conf/ssl/server-ca.crt

service httpd restart


그래서 우리의 전문분야는 아니지만 비교적 무난하게 소스 컴파일로 웹 서버와 데이타베이스 서버를 설치하는 데 참고가 될만한 동영상을 준비했습니다. 나름대로의 설치 시나리오를 가지고 진행 과정을 동영상으로 담은 것입니다. 리눅스 배포판 CentOS 5.2 가 설치된 컴퓨터에 Apache, PHP, MySQL 시리즈 APM과 Zend 설치 그리고 요즘 개인정보 보호를 위해 한국정보보호진흥원에서 설치하도록 명시하고 있는 보안서버 적용을 위한 OpenSSL 모듈을 설치하고 셋팅하는 장면입니다.

여러가지 가능성이 고려되지 않은 동영상이므로 관련 기술 문서도 함께 참고하세요.
Apache,PHP,MySQL,Zend,OpenSSL 설치 동영상  - http://hompy.info/527

웹프로그래머의 홈페이지 정보 블로그 http://hompy.info

Posted by 프로그래머

2008/12/13 13:36 2008/12/13 13:36
, , , , , , , , , ,
Response
No Trackback , No Comment
RSS :
http://hompy.info/rss/response/541

인터넷 서버 소프트웨어 설치는 서버 장애 발생으로 재설치를 하거나 새로 서버를 도입할 때 처음 하는 작업이므로 아주 드물게 하는 작업입니다. 그래서 전문적으로 관리하는 엔지니어가 아닌 이상 매번 설치할 때마다 오래된 기억을 더듬어 작업하게 되며 항상 경험해본 비슷한 실수로 대체적으로 순조롭게 설치 되지 않는 경우가 허다합니다. 요즘은 배포판이 좋아져서 손쉽게 인터넷 서버 운영이 가능하지만 성능을 높이기 위해 소스 컴파일로 설치 한다거나 배포판에 포함되지 않는 다른 기능들을 추가하기 위해 소스 컴파일로 설치할 경우 귀찮음과 난해함으로 골머리가 아플 수 있습니다. 전문적으로 이런 업무를 하는 분들은 아마도 매뉴얼과 매크로가 준비되어 있어 비교적 손쉽게 처리할 수 있는 일인지 모르지만 그렇지 않은 경우 어렵고 복잡한 문제가 됩니다. 그래서 우리의 전문분야는 아니지만 비교적 무난하게 소스 컴파일로 웹 서버와 데이타베이스 서버를 설치하는 데 참고가 될만한 동영상을 준비했습니다. 나름대로의 설치 시나리오를 가지고 진행 과정을 동영상으로 담은 것입니다. 리눅스 배포판 CentOS 5.2 가 설치된 컴퓨터에 Apache, PHP, MySQL 시리즈 APM과 Zend 설치 그리고 요즘 개인정보 보호를 위해 한국정보보호진흥원에서 설치하도록 명시하고 있는 보안서버 적용을 위한 OpenSSL 모듈을 설치하고 셋팅하는 장면입니다.
여러가지 가능성이 고려되지 않은 동영상이므로 관련 기술 문서도 함께 참고하세요.


[CentOS] Apache,PHP,MySQL,Zend,OpenSSL,PEAR 설치 메모 - [http://hompy.info/541

웹프로그래머의 홈페이지 정보 블로그 http://hompy.info

Posted by 프로그래머

2008/11/13 21:17 2008/11/13 21:17

배포판 리눅스 CentOS5 를 PC 에 서버용으로 설치하는 화면을 캡쳐한 동영상입니다. 리눅스를 설치하는 것은 윈도우즈 XP 를 설치하는 것 만큼 쉬운 일입니다. 다만 제대로된 서버로의 기능을 하도록 설정해서 쓰는 일은 관련 기술에 대한 학습과 서버 운영 경험이 필요합니다. 단순히 설치라도 해보실 분은 배포한 리눅스 CentOS와 PC를 준비하시고 동영상을 따라 해보세요. 따로 설치할 PC가 없다면 가상 컴퓨터를 사용할 수 있게 해주는 VMware 또는 Virtual Box 를 이용해도 좋습니다.





웹프로그래머의 홈페이지 정보 블로그 http://hompy.info

Posted by 프로그래머

2008/10/26 16:15 2008/10/26 16:15
, , , , , , , , ,
Response
No Trackback , No Comment
RSS :
http://hompy.info/rss/response/522

홈페이지를 관리하고 운영하는 사람들은 웹사이트 순위에 민감하며 때로는 순위 올리는 재미로 즐거울 때가 있습니다. 구글 페이지 랭크, 랭키닷컴 분야별 웹사이트 순위, 야후 블로그 랭킹, 다음 디렉토리 주간 사이트 지표, 알렉사 웹사이트 순위 등을 살펴보며 순위가 상승 곡선이면 얼굴이 밝아지고 하강 곡선이면 어두워집니다. 기업에서는 이런 지표로 투자를 받을 수 있을지 없을지가 결정이 되고 광고 수주가 되느냐 마느냐의 갈림길이 되기도 하므로 관련 담당자는 우습게 지나칠 수 없는 피말리는 마케팅 전쟁을 해야 되기도 합니다.
한동안 부지런히 개발에 시간을 투자해온 링크나우는 몇개월 전에 랭키 순위가 1500 이하 였었는데 요즘은 400등 대를 넘보고 있습니다. 이번주 랭키 순위는 565등으로 블로거들이 많이 알려져 있는 올블로그가 600등, 한RSS가 680등이고 대학 동창 찾기로 많이 알려졌던 아이러브스쿨이 515등으로 이와 비교해보면 대략 점유율이 예측이 되며 순위 그래프는 상승곡선을 타고 있고 이런 성장세를 반영하듯 몇몇 알려진 투자사들이 링크나우에 노크하고 있기도 합니다.

사용자 삽입 이미지
사용자 삽입 이미지
 

링크나우 패밀리 사이트인 "뉴스와이어"라는 홈페이지가 있는데 보도자료를 중계하는 유용한 사이트로 기업의 홍보 담당자나 기자들에게 잘 알려져 있고 최근 전면 개편으로 고객 만족도가 높아지면서 랭키 순위도 상승곡선을 그리고 있으며 이번주 랭키 순위 711등을 랭크하고 있습니다.

사용자 삽입 이미지


개인적으로 취미삼아 운영중인 웹프로그래머의 홈페이지 정보 블로그와 홈피디자인닷컴의 이번주 랭키 순위는 6,676등이로 랭크되어 있습니다. 블로그만 보면 블로그코리아 블코랭킹 639등, 야후 블로그 랭킹 280등으로 랭크되었습니다. 구글의 페이지 랭크는 랭크 4 에서 변동이 없으며 알렉사 순위는 792,576등이군요.

사용자 삽입 이미지

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

최근에 야후 블로그 랭킹을 알려주는 뱃지가 있어 블로그에 붙여봤네요.
사용자 삽입 이미지


웹프로그래머의 홈페이지 정보 블로그 http://hompy.info

Posted by 프로그래머

2008/09/17 08:36 2008/09/17 08:36

웹 솔루션 개발시 고려해야 할 것을 나열해봤습니다. 비용은 줄이며 성능은 높이고 더불어 다양한 기능 및 성능적인 요구를 수용하려면 많은 것들이 고려되야합니다. 두서 없이 나열한 여러가지외에도 많은 것들을 미리 예측하고 준비해야 할 것입니다.
 
1. 분산처리 - Linux Virtual Server(http://www.linuxvirtualserver.org), 클러스터
 
2. DB서버 분산처리 - 리플리케이션, 클러스터, HA (http://www.mysql.com/products/database/cluster)
 
3. 검색엔진 - KRISTAL (http://www.kristalinfo.com)
 
4. WSDL, SOAP - NuSOAP (http://www.nonplus.net/geek/PHP.php)
 
5. NFS 서버간 파일 공유
 
6. 대용량 소스 및 데이터 관리
 
7. 대용량 데이터 백업, 실시간 백업
 
8. CMS (content management system)
 
9. 다국어 시스템
 
10. 보안, 관리자 접근 권한 분류, 외부 회원 운영진 권한 분류
 
11. 산출물 관리
 
12. 배너 광고 소재 관리, 애드샌스 등의 수익 모델 관리
 
13. 컨텐트 제휴 패턴 모듈화 및 제휴 관리
 
14. 아바타, 캐릭터 관리
 
15. 사이버 캐쉬, 포인트 관리
 
16. 팬사이트 및 패밀리 사이트와 연동
 
17. 서버 관리를 위한 실시간 모니터링 시스템
 
18. 가비지, 로그 관리
 
19. 버전 관리
 
20. 위지윅 웹에디터 개발
 
21. 저작권에 대한 고려
 
22. 프레임워크의 도입
 
23. 가용 서버의 예측 및 용도 분배

Posted by 프로그래머

2008/05/02 09:27 2008/05/02 09:27

최근 8개월 정도 중형급 웹사이트를 관리하게 되면서 서버 시스템 구성에 관심을 가지게 되었습니다. 동시 접속자 수가 많고 인지도 있는 중대형 이상의 사이트는 해커들의 표적이 되기도 하므로 보안에 관심을 가져야 하며 대용량 리소스와 프로세스를 처리해야 하므로 적당하게 분산처리해줘야 하고 광고주 들에게 집행되는 광고가 24시간 끊임 없이 노출되고 있다는 것을 보여줘야 하므로 가용성을 극대화 시켜야 합니다. 개발자가 웹어플리케이션 레벨에서 위와 같은 요구에 부합하는 것은 한계가 있으므로 시스템 구성에 신중한 고려가 필요하고 구성된 시스템에 적합하도록 개발단에서 구현 되어야 합니다.
아래는 일반적으로 중대형 사이트에서 운영될 수 있는 요약된 시스템 구성도입니다. 시스템이나 보안 전문가가 아니라서 상세하고 전문적인 그림을 그리는 것은 시간이 필요합니다. LVS, 클러스터링, HA를 구축하는 것은 전문 분야라서 그런지 관련 문서를 쉽게 획득하기 어려운 것으로 보이며 PC에 윈도우즈를 설치하듯 손쉽게 할 수 있는 것이 아닌 듯 합니다. 시스템 구성에 관련된 부분은 시스템 관리자 뿐만 아니라 개발자, 기획자 모두가 학습해야 할 과제이고 이에 대한 이해도를 높이는 것은 안전하고 쾌적한 웹사이트를 운영하기 위한 선행 과제일 것입니다.
프로그래머의 입장에서 필요한 시스템 구성에 관련된 자료를 계속 찾고 있는 중이며 시간을 쪼개서 학습 하는 중에 있습니다. 이에 관심이 많은 분들이 서로 관련 자료와 노하우를 공유하게 되고 이를 활용하게 되면 좋을 것 같습니다.



웹프로그래머의 홈페이지정보 블로그 http://hompy.info

Posted by 프로그래머

2008/04/24 08:01 2008/04/24 08:01

인터넷 서버 운영 일지 20070915

어제 블로그 접속이 잘 안되서 원인 분석을 했더니 성인 사이트 마케팅을 하는 페이지인듯한 곳에서 접속자 수를 알려주는 블로그온을 사용하고 있었습니다. 사용을 못하게 막았더니 웹서버가 정상화가 되었고 블로그에도 접속이 되었습니다. 오늘은 블로그 방문자와 채팅을 할 수 있게 해주는 블로그 채팅 접속자가 갑자기 많아 접속하지 못하는 문제가 생기더군요. 역시 어제와 같은 페이지에서 블로그 채팅을 보이지 않게 붙여 놨었고 사용도 하지 않으면서 접속자만 늘려놔 다른 사람의 채팅 사용을 방해하도록 해놨네요. 일부러 제 서버를 공략하기 위해 그런건지 해당 페이지 실시간 접속자수를 알려고 그랬는지는 알 수 없으나 웹서버에 .htaccess 라는 파일을 만들어 이용을 차단 시켰습니다. 역시 차단을 하고 나니 채팅 접속이 가능해진 상태입니다.
얼마전부터 플래시 커뮤니티를 운영중에 있는데 회원도 하나 둘 늘어나고 방문자 수도 눈에 띄고 불어나고 있습니다. 아직은 회원들이 정보를 공유하는 단계까지는 갈길이 멀지만 회원들이 하나 둘 늘어나고 커뮤니티의 모양세도 갖추어 나가는 재미로 운영하고 있습니다. 홍보를 따로 하지 않고 있는데 방문자가 늘어나고 있으며 로그 분석을 해보니 구글 검색을 통해서 방문하는 사람들이 대부분이었습니다. 검색 포탈 네이버나 다음 등은 접속이 미미하거나 없더군요. 제 블로그는 네이버를 통해 접속하는 접속자가 압도적으로 많은데 왜 구글 뿐인지 궁금하게 만듭니다.
저번 주에 서버 2대로 분산 운영하던 것을 1대로 몰아두었고 성능이 좀 떨어지는 1대는 비워두었습니다. 성능이 좀 떨어지지만 하드 용량이 많으니 자료실 또는 웹하드 개념으로 뭔가를 만들어 볼까 합니다. 사진이나 파일을 공유하는 페이지를 만들어서 오픈하게 될 것 같습니다. 매달 지출되는 11만원의 서버 비용이 아깝지 않게 할당된 트래픽을 알뜰하게 써야겠습니다.^^ 사진 또는 파일을 공유하게 하는 페이지를 만들면 그렇게 될 수도 있겠죠? 어쩌면 트래픽 초과를 걱정해야 할지도...

웹프로그래머의 홈페이지정보 블로그 http://hompy.info

Posted by 프로그래머

2007/09/15 13:03 2007/09/15 13:03
, , , , , , , , ,
Response
No Trackback , a comment
RSS :
http://hompy.info/rss/response/239

PC통신, 사설BBS, IP사업, 지역정보화사업 등의 이름으로 운영되던 호스트 프로그램을 개발하면서 리눅스(LINUX) 를 시작하게 되면서부터 꾸준하게 이용해왔습니다. 온라인에서 서비스를 운영하기 위한 운영체제로 리눅스만한 것이 없기 때문에 간혹 솔라리스나 스코 유닉스도 사용하긴 했었지만 리눅스를 꾸준히 애용했으며 현재는 개인적으로 리눅스 서버 2대를 운영하고 있고 업무적으로 10여대를 운영하고 있습니다. 그리고 집에서는 따로 리눅스 머신을 운영하기도 했었지만 요즘은 가상 머신을 운영할 수 있는 VMWARE 를 이용해서 리눅스를 집에서도 운영하고 있습니다. 한 대의 PC에 가상 머신 리눅스를 2개 정도 운영하기 위해서 메모리는 기본 2G를 사용하고 있고 CPU도 성능이 적당히 좋은 것으로 쓰고 있습니다. 저는 시스템 관리자 쪽보다는 개발자 쪽이지만 다양한 방법으로 리눅스를 운영하다보니 웬만한 시스템 관리자 레벨은 될듯합니다.^^ 리눅스는 패키지의 구성에 따라서 조금씩 사용하는 방법이 다르기 때문에 여러가지 패키지를 설치해서 다양한 테스트를 해보는 것이 중요한 것 같고 단편적인 지식보다는 좀 체계적인 학습을 하는 것이 리눅스를 보다 쉽게 이용할 수 있는 방법입니다. 리눅스는 생각보다 학습하기 어려운 단점으로 사용하는 사람들이 현저하게 적은 편이지만 그렇기 때문에 희소가치가 있는 것이고 남들이 하지 않는 것을 한다는 것은 자신의 가치를 높이는 일이 될수도 있습니다. 모르면 어렵고 알고 나면 쉽다라는 것이 리눅스에도 어느 정도는 적용이 됩니다. 체계적으로 배울 수 있는 곳이 혹시나 있다면 그곳에서 배워보시고 그렇지 않다면 두려움을 접고 저처럼 가상머신에 리눅스를 깔고 구글 같은 검색엔진을 활용해서 막히는 부분을 하나 하나 풀어가다 보면 당신도 리눅스 파워유져로 거듭날 수 있습니다. 배운 노하우는 IT관련 사업이나 IT를 보조수단으로 응용하는 사업을 할 때 유리 할 수 있습니다. 간단한 예로 쇼핑몰을 하나 운영을 하더라도 비용절감과 비용 대비 성능좋은 웹서버 운영하는 등에 도움이 될것입니다. 사람을 뽑아서도 할 수 있는 일이지만 시키는 일은 항상 내맘 같지 않은 법이며 웬만한 덩치의 회사를 운영하는 것이 아니라면 시스템 관리자를 별도로 두지 않는 것이 현실입니다. 마우스에만 의존하던 PC이용 방식으로 키보드 의존적인 방식으로 바꿔야 하는 숙제가 있긴 하지만 꾸준히 연습해보면 못할 것도 없습니다. 그리고 배워야 할 것들이 작지 않다는 단점도 있지만 윈도우즈도 제대로 배우려면 수 많은 전문 지식들을 배워야 하는 것은 마찬가지 입니다.
저는 요즘 제한되어 있는 10여대의 리눅스 서버를 어떻게 분배하고 공유하고 분할해서 좀더 빠른 응답 속도를 내는 웹서버를 운영할 수 있을지를 고민하고 있으며 리눅스로 표현 할 수 있는 다양한 서비스들을 끄집어 낼 것인가를 탐구하고 있습니다. 아직도 배워야 할 것들이 많고 연구해야할 과제도 많지만 하나 하나 알아가고 구현하는 과정이 즐겁습니다. 이러다 전문 시스템 관리자가 되는 건 아닌지 모르겠습니다.^^
리눅스를 연구하던 프로그래밍을 하던 종종 알고는 있지만 갑자기 생각이 나지 않는 지식이나 일반적인 방법으로 찾을 수 없는 자료들은 검색엔진을 이용합니다. 구글, 네이버, 엠파스 정도만 활용해도 인터넷에 올라온 웬만한 자료는 검색이 가능합니다. 조금 전문적인 지식을 찾으려면 하나의 검색엔진으로 찾을 수 없을 때가 많습니다. 그리고 찾아낸 자료가 정답이 아닐 때도 많습니다. 그럴 땐 잘못된 지식으로 인한 실수를 방지하기 위해 찾아낸 자료에 대한 검증을 해봅니다. 검색엔진으로 해결이 안되는 경우도 있다면 전문 사이트에 접속해서 검색하거나 인적 네트워크를 활용해야 합니다. 그래도 안되면 직접 부딪혀서 발견해 내는 방법을 써야겠죠. 해외 자료는 구글로 국내 자료는 네이버 정도로 검색하면 되지 않을까 생각합니다. 물론 개인적인 취향이니 좀더 좋은 검색 패턴이 있다면 그 방법을 써야겠지요. 어째꺼나 검색하나 잘 해도 우리의 지적수준이나 비지니스 감각이 쑥쑥 올라갈 것이며 경제적인 여유를 만들 수 있는 계기가 될 것입니다.
요즘 자주 사용하게 되는 리눅스 명령 또는 프로그램들이 있습니다. ssh, find, rsync, vi, grep, ps 등을 많이 씁니다. 여러분은 요즘 어떤 명령들을 주로 쓰며 리눅스에 관련된 어떤 노하우가 있나요? 리눅스를 애용하는 사람들이 모여 인적 네트워크를 구성해서 가지고 있는 노하우를 공유해보는 것은 어떨까요?

웹프로그래머의 홈페이지정보 블로그 http://hompy.info

Posted by 프로그래머

2007/09/08 12:02 2007/09/08 12:02

오늘 공개 보드(그누보드)로 플래시 커뮤니티를 만들었습니다. 당분간 공개 보드로 운영을 하다가 자체 보드를 개발해서 자료를 컨버팅 하고 새로운 보드로 운영해볼 생각입니다. 막상 운영을 해보려고 마음 먹고 보드를 설치하고 이것 저것 손보고 자료도 올리고 하려다 보니 하루 종일 시간 투자를 하게 되네요. 디자인 부분을 멋지게 해보고 싶지만 디자이너가 아닌 관계로 비쥬얼은 원하는 모양으로 변화 시키지 못해 특별히 한 것 없어 보이는 형국이네요. 차차 시간을 투자해서 보다 알찬 커뮤니티를 만들어볼 생각입니다. 이제 시작하는 단계라 우선은 웹프로그래머의 홈페이지정보 블로그의 몇몇 카테고리에 있는 자료를 플래시 커뮤니티로 컨버팅해서 옮겼고 곧 개인적으로 운영하고 있는 네이버 플래시 카페 자료를 컨버팅해서 커뮤니티 게시물로 활용해야 할 것 같습니다.^^ 블로그의 UTF-8 데이터를 커뮤니티 EUC-KR 게시물로 변환하는 과정에서 약간의 시간을 까먹어 버렸군요. 다른분도 저와 같은 혼란을 겪지 않게 해드리고 위해 아래의 코드를 참고하세요. EUC-KR 로 운영중인 MYSQL 서버에서 EUC-KR 로 데이터를 읽어 올 수 있는 코드입니다. 쿼리를 보내기 전에 사용하시면 됩니다.

mysql_query("SET CHARACTER SET utf8", $my_db1);
mysql_query("SET SESSION collation_connection = 'utf8_general_ci'", $my_db1);

웹프로그래머와 함께 플래시 커뮤니티를 활성화 시켜볼 의향이 있는 분들은 블로그에 흔적을 남겨주시거나 메신져 친구등록 바랍니다.

웹프로그래머의 홈페이지정보 블로그 http://hompy.info

Posted by 프로그래머

2007/08/25 20:11 2007/08/25 20:11

리눅스(linux) 또는 유닉스(unix) 시스템을 사용해야 하는 분들이 알고 있어야 할 주요 명령어와 프로그램들에 대한 간략한 설명입니다. 모든 명령어를 다 사용하는 것은 아니므로 눈으로 익혀두었다가 필요할 때 찾아 쓸수 있도록 하면 좋을 것 같습니다.

addbib 도서목록 형식의 데이터베이스를 만들거나, 확장
apropos 사용설명서의 키워드 검색
ar 라이브러리 만들기, 관리
arch CPU 모델
at 원하는 시간에 원하는 명령을 실행하게 하는 명령
awk 패턴 검색과 언어 처리
banner 큰 글자 만들기
basename 경로 이름에서 마지막에 있는 이름만 출력
batch 원하는 시간에 원하는 명령을 실행하게 하는 명령
biff 자신에게 편지가 배달되면 알려주는 명령
bin-mail 사용한 전자우편 프로그램
binmail 사용한 전자우편 프로그램
cal 달력
calendar 간단한 일정표
cat /proc/interrupts IRQ 표기
cat /proc/ioports i/0 포트 표기
cat 파일 내용 출력
cb 간단한 C 프로그램
cc C 컴파일러
cd 디렉토리 이동
checkeq 수식 표현 포멧 도구
checknr nroff 또는 troff 입력 파일 검사
chfn 핑거정보
chgrp 파일의 사용자 그룹 바꾸기
chmod 파일 혹은 디렉토리의 속성값을 설정함.
chsh 쉘 바꾸기
clear 터미날 화면 깨끗이 하기
cmp 두 파일을 바이트 단위로 비교
colcrt troff 파일의 밑줄 속성 문자 처리
comm 두 파일의 비교
compress 파일 압축
cp 파일 복사
cpio 파일 복사
cpp C 언어 전처리기
csh C 문법과 비슷한 쉘
ctags ex 나 vi 편집기에서 사용될 tag 파일을 만드는 명령
cut 필드 분리
date 시스템 시간 보기나 지정하기
dbx 소스 수준의 디버거
deroff
df 연결되어 있는 파일 시스템의 용량
diff 두 파일의 차이점 비교
du --max-depth=1 디렉토리 크기 아는법
du 파일과 디렉토리별로 할당되어 있는 용량
e 줄 편집기
echo 인자를 표준 출력으로 출력
ed 기본 줄 편집기
edit 줄 편집기
env 현재의 환경변수 설정상황을 보여준다
eqn 수식 표현 포멧 도구
error 컴파일러 오류 메시지 목록
ex 줄 편집기
expand TAB 문자를 공백문자로 바꿈
expr 인자를 수식으로 처리
false 쉘 스크립트에서 사용되는 거짓
fdformat 플로피디스크 포맷( /dev/fd0 옵션)
file 파일 형식 알아보기
find 파일 찾기
finger 사용자 정보 알아보기
fmt 텍스트화일을 일정한 너비로 정렬한다.
fmt_mail 편지 포멧 도구
fold 긴 줄 출력 방법 지정
free [-m] 메모리 용량
ftp 파일 전송 프로그램
fuser 지정한 파일을 사용하고 있는 프로세스를 보여준다.
gcore 실행 중인 프로세스의 core 이미지를 구함
gprof call-graph profile 자료를 보여줌
grep 문자열 찾기
groups 사용자의 그룹을 보여줌
gunzip 확장자가 .gz 인 파일로 압축 또는 해제
gzip 확장자가 .gz 인 파일로 압축 또는 해제
hashcheck 맞춤범 검사
hashmake 맞춤범 검사
head -n 파일 내용의 앞부분을 n줄만큼 출력
history 이전 명령 보기
hostname 사용중인 시스템 이름
id 자신의 user id와 group id
ifconfig 네트웍 장치 정보 조회
imake makefile 만드는 프로그램
indent C 프로그램 소스 파일을 들여쓰기 하는 포멧 도구
install 파일 설치
ipchains -A forward -s 192.168.1.0/24 -j MASQ 허용
ipchains -F 방화벽초기화
ipchains -L 접속환경
ipchains -P forward REJECT 포워딩 거부
join 관계형 데이터베이스 연산자
kill 프로세스 죽이기
killall proftpd ftp 데몬 죽이기
last 사용자가 마지막 접속 상태를 보여줌
ld, ld.so 링크 편집기, 동적 링크 편집기
leave 자신의 접속 종료 시간을 알려줌
less 문서 페이지 단위 출력
lex 어휘 분석 프로그램 생성기
lint C 프로그램 verifier
ln -s A B A에 B를 링크
ln 파일의 하드, 심벌릭 링크 명령
lockfile 지정한 화일에 대한 세마포어 화일을 만든다.
login 시스템 접속 명령
look 시스템 디렉토리나, 정열된 목록에서 단어 찾기
lookbib 도서목록형 데이타베이스에서 찾기
lorder 오브젝트 라이브러리의 관계 찾기
lp, cancel 인쇄 시작, 취소
lpq 인쇄 작업 상황 보기
lpr 인쇄
lprm 인쇄 작업 지우기
ls 디렉토리 내용 보기
mail Mail 전자 우편 프로그램
make 실행 파일을 만들거나, 특정 작업 파일을 만들 때 사용하는 도구
man 온라인 사용자 설명서를 보는 명령
mesg 메시지 수신 상태를 보거나 지정
mkdir 디렉토리 만들기
mkstr C 소스 파일을 참조로 오류 메시지 파일을 만듬.
more page 텍스트 파일 보기 명령
more 파일 내용 페이지 단위로 출력
mv 파일과 디렉토리 이동
mysqladmin -p reload
nawk 패턴 검색과 언어 처리
neqn 수식 표현 포멧 도구
nice 낮은 우선권에서 명령 실행
nm 심블 이름 목록 보기
nmap 포트 스캔
nohup 지정한 명령어를 로그아웃시에도 계속 수행하도록 한다.
nroff 문서 포멧 도구
ntsysv 시작프로그램 설정
od 8진수, 10진수, 16진수, 아스키코드 덤프
passwd 내 계정의 패스워드 바꾸기
paste 여러파일의 서로 관련 있는 줄 연결시키기
pr 문서 파일 양식화 도구
printenv 현재 환경 변수들의 내용과 그 값 알아보기
prof profile 자료 보기
ps -ef | grep ftp ftp 프로세스 실행 가입자
ps [aux] 진행중인 프로세스 정보
ps 현재 프로세스 정보 보기
pstree 진행중인 프로세스 정보를 트리 형태로 출력
ptx 색인 만들기
pwd 현재 작업 디렉토리 보기
quota 한 사용자에게 지정된 디스크 할당량보기
ranlib archive를 random 라이브러리로 변화
rcp 리모트 카피
rcs RCS 파일 속성 바꾸기
rcsdiff RCS revisions 비교
red 기본 줄 편집기
rev 한 줄의 문자열 꺼꾸로 출력
rlogin 리모트 로그인
rm 파일 삭제
rmdir 디렉토리 삭제
roffbib 도서목록형 데이터베이스 보기 또는 양식화
route add -host (ipnumber) reject | netstat -rn 특정아이피 접속차단
rsh 리모트 쉘
rup 로칼 머쉰의 호스트 상태 보기(RPC version)
ruptime 로칼 머쉰의 호스트 상태 보기
rusers 현재 접속자 보기 (RPC version)
rwall 모든 사용자에게 알림(RPC)
rwho 현재 접속자 보기
sccs Source Code Control System (SCCS)
sccs-admin, admin SCCS 사용 내역 파일을 만들고, 관리
sccs-cdc, cdc SCCS 델타의 델파 주석을 바꿈
sccs-comb, comb SCCS 델타 조합
sccs-delta, delta SCCS 파일에 데해 델타를 만듬
sccs-get, get SCCS 파일 버전확인
sccs-help, help SCCS 오류나 경고 메시지 검색
sccs-prs, prs SCCS 사용내역의 선택된 부분 보기
sccs-prt, prt SCCS 파일에서 델타 테이블 정보를 봄
sccs-rmdel, rmdel SCCS 파일에서 델타를 지움
sccs-sact, sact SCCS 파일의 편집 상태를 봄
sccs-sccsdiff, sccsdiff SCCS 파일들의 버전 비교
sccs-unget, unget SCCS 파일의 미리 얻은 것(?)을 취소한다.
sccs-val, val SCCS 파일 유요화
script 화면 갈무리
sed stream editor
sh 유닉스 표준 쉘
size 오브젝트 파일의 크기들을 보여줌
sleep 지정한 시간 만큼 실행 보류
sort 줄 정열과 검색
sortbib 도서목록형 데이터베이스 정열
spell 맞춤범 검사
spellin 맞춤범 검사
split 파일 나누기
strings 오브젝트 파일이나, 실행 파일에서 문자열 찾기
strip 오브젝트 파일에서 심벌 테이블과 중복된 비트 삭제
stty 터미날 설정
su 다른 계정으로 바꿈
symorder 심벌 순서 바꿈
tabs 터미날 tab 크기 지정
tac 파일 내용 역순으로 출력
tail 파일의 끝 부분 보기
talk 다른 사용자와 이야기하기
tar 파일들 묶어서 하나의 파일로 출력
tbl nroff 또는 troff의 도표 작성 도구
tee 표준 출력으로 방향 전환
telnet TELNET 프로토콜을 이용한 원격 호스트 접속
test 주워진 환경이 참인지, 거짓인지를 돌려줌
tftp 간단한 ftp.
time 명령 실행 시간 계산
top 진행중인 프로세스의 CPU 점유율
touch 파일 날짜 관련 부분을 바꿈
troff 문서 양식화 도구
true 쉘 스크립트에서 사용되는 참
tsort 정렬
tty 현재 터미날 이름 보기
ue MICROemacs
ul 밑줄 속성 문자 표현
uname [-a] 커널 버전과 운영체제 정보
uncompress 압축된 파일 풀기
unexpand 공백문자를 TAB 문자로 바꿈
unifdef cpp 입력 줄에서 ifdef 부분 바꾸거나 지움
uniq 중복라인 삭제
units 프로그램 변환도구
unzip 확장자가 .zip 인 파일로 압축 또는 해제
uptime 시스템 부팅 기간 보기
users 현재 시스템 사용중인 사용자들 이름
uucp 시스템 간의 복사
uudecode 이진 파일을 아스키파일로 디코딩
uuencode 이진 파일을 아스키파일로 인코딩
uulog 시스템 간의 복사
uuname 시스템 간의 복사
uusend 리모트 호스트에 파일 보내기
uux 리모트 시스템 명령 실행
vacation 자동으로 편지 답장하기
vedit 편집기
vgrind grind nice program listings
vi 편집기
view 편집기
vtroff 문서 양식화 도구
w 접속자 정보
wait 프로세스가 마치기를 기다림
wall 모든 사용자에게 알림
wc 단어, 줄, 바이트 계산
what 파일에서 SCCS 버전 정보 알아냄
whatis 명령의 간단한 설명 보여줌
whereis 찾는 명령의 실행파일, 소스, 맨페이지 경로 조회
which 명령만 조회
who 시스템에 접속자 정보
whoami 사용자 자신의 정보
write 다른 사용자의 화면에 특정 내용을 알림
xargs 명령행 인자 처리 명령
xstr extract strings from C programs to implement shared strings
yacc 파서 프로그램
yes 항상 yes만 응답하는 명령
zcat 압축된 파일 풀어서 보기
zip 확장자가 .zip 인 파일로 압축 또는 해제

웹프로그래머의 홈페이지정보 블로그 http://hompy.info

Posted by 프로그래머

2007/08/10 07:22 2007/08/10 07:22
, , , , , , ,
Response
No Trackback , No Comment
RSS :
http://hompy.info/rss/response/224

저는 블로그 운영을 위해 독립 서버 2대를 운영하고 있습니다. 블로그를 운영하기 전에는 팬티엄3 1G 서버 1대로도 충분히 넉넉하게 운영하고 있었으나 설치형 블로그로 운영한 후로 나름 최신 서버를 한 대 늘려서 운영하고 있고 블로그 운영을 위해 매달 대당 5만 5천원, 총 11만원의 코로케이션 비용을 지출하고 있습니다. 서버를 늘리고 비용부담을 더 하는 이유는 설치형 블로그가 좀 무거운 감도 있고 늘어나는 방문자들에게 보다 쾌적한 환경을 제공하기 위해서 이기도 하고 블로그 이외에도 여러가지 자작 플래시와 자작 웹프로그램들을 소개하고 전시하기 위해서 이기도 합니다. 실제로 서버를 확장한 이후로 블로그가 빨라졌으며 접속이 실패하는 비율이 많이 줄어서 인지 방문자가 많이 늘었던 것 같습니다.
서버를 운영하다가 서버의 하드웨어적인 부분과 소프트웨어적인 부분 어디에서든 문제가 발생할 수 있으며 때로는 외적 요인 예를 들면 접속자 폭주나 도메인 관련 문제 그리고 IDC 관련 정전 사고 등에 관련된 사고들도 생길 수 있습니다. 실제로 제가 독립 서버를 운영하면서 겪었던 일들인데 어제 같은 경우는 서버 1대에서 CPU 쿨러가 고장이 나서 어제 저녁 부터 오늘 오후 늦게까지 서버를 운영할 수 없었습니다. 몇주 전에는 제가 사용하고 있던 도메인 2개가 도메인 등록 대행사의 문제로 등록되지 않은 도메인 처럼 방치되었습니다. 그 중에 도메인 1개는 메인 도메인으로 몇년째 사용하고 있던 도메인이었지요. 마음 같아서는 손해 배상을 받고 싶었지만 개인적으로 바빠서 신경을 못썼습니다. 그리고 한번은 분당 쪽에 정전 사고가 생겨 화재가 있었던 적이 있습니다. 그때 IDC 센터 정전으로 몇시간 동안 서버 운영이 중단된 적도 있었습니다.
회사 서버 포함해서 지금까지 서버 관리를 해오면서 MYSQL 서버 데이터베이스 오류로 웹서버 오동작이 있었던 적이 두번 있었습니다. REPAIR 명령으로 복구가 가능했지만 몇십개의 레코드 데이터를 잃어버렸고 두번다 회원 관련된 테이블 이상 이었습니다. 메일 서버 RELAY 설정 문제로 서버에 과다한 부하가 걸려 웹서비스가 너무 느려져서 서비스를 제대로 할 수 없었던 적도 있었습니다. 동영상 서버로 쓰고 있던 윈도우즈 서버에 중국발 과다한 접속과 해킹 시도로 IDC 센터에서 서버를 빼라는 통지를 받았던 적도 있었습니다. 채팅 서버를 운영할 때 트래픽 과다로 웹서버가 다운된 적이 있었고 자작 컨텐트가 뉴스 사이트 해드라인에 올라 엄청난 트래픽을 발생시켜 코로케이션 이용료를 더 올려야 된다는 통지를 받거나 서버 유지가 어렵다는 통지를 받았던 적이 있었지요. 그리고 최근에 서버 접속이 안되서 IDC 센터에 문의를 했더니 같이 물려 있는 다른 서버에 엄청난 트래픽이 발생해서 공유되는 트래픽을 그 서버가 다 써버려 생긴 문제라면서 죄송하다고 했던 적이 있었으며 몇시간이 지나서 정상화 되었던 적이 있었습니다. 그리고 간혹 생길 수 있는 문제인데 웹서버가 오동작을 해서 한참 헤메다가 결국 서버를 살펴 찾아냈던 것이 하드 디스크에 빈공간이 없어서 생긴 문제였습니다. 이런 문제는 하드 디스크 파티션의 적절한 분배가 필요하고 각종 로그 파일 사이즈가 지나치게 고용량이 되지 않도록 관리해야 하며 시스템 계정 관련 보관된 이메일이 너무 많아지지 않도록 관리 해줘야 합니다.
이 외에도 다양한 문제로 서버가 오동작을 하거나 서버를 운영할 수 없는 결과를 초래할 수 있습니다. 서버 운영은 지루하며 지속적으로 관리해줘야 하는 어려운 작업이며 이론 보다도 실제 운영한 경험의 깊이가 중요한 일일 수 있습니다. 서버를 운영하다 발생할 수 있는 난감한 사고들에 대한 대비책 관련 노하우가 담긴 바이블 같은 것이 있다면 이런 문제에 보다 현명하게 대처할 수 있지 않을까 생각 합니다.

웹프로그래머의 홈페이지정보 블로그 http://hompy.info

Posted by 프로그래머

2007/08/08 00:05 2007/08/08 00:05
, , , , , , , , ,
Response
No Trackback , 6 Comments
RSS :
http://hompy.info/rss/response/222

리눅스(linux)로 음악 방송국 서버 설치와 운영에 관한 동영상을 포스팅히면서 스타크래프트(starcraft) 배틀넷 서버 설치에 대한 동영상을 만들어 올린다고 했었습니다. 이번 동영상은 리눅스 환경에서 PvPGN 라는 프로그램으로 배틀넷 서버를 설치하는 과정과 스타크래프트 게임 클라이언트로 접속하는 실행화면을 동영상으로 소개합니다. 스타크래프트 관련 클랜(길드/클럽/카페)를 운영하시는 분들은 클랜원들만의 독립 서버를 운영해보는 것도 좋을 것 같습니다. 단, 서버 운영 비용이 발생하는 문제가 있습니다.

pvpgn-1.8.0.tar.gz pvpgn-support-1.0.tar.gz
GameCraftBoranet13.zip GameCraftKornet13.zip



# wget http://factor.kr/attachment/cl109.gz -O pvpgn-1.8.0.tar.gz
# wget http://factor.kr/attachment/cl108.gz -O pvpgn-support-1.0.tar.gz
# tar xvzf pvpgn-1.8.0.tar.gz
# cd pvpgn-1.8.0/src
# ./configure && make && make install
# cd ../..
# tar xvzf pvpgn-support-1.0.tar.gz
# mv pvpgn-support-1.0/* /usr/local/var/files
# /usr/local/sbin/bnetd

여기까지 하면 스타크래프트 배틀넷 서버를 구동한 것입니다. 이젠 스타크래프트 클라이언트 게임 프로그램으로 접속하는 일만 남았습니다. 아래는 클라이언트로 접속하는 실행화면을 보여주고 있습니다. 실행하기 전에 프리배틀넷을 등록해주는 프로그램을 실행하고 있으며 첨부파일 GameCraftBoranet13.zip 또는 GameCraftKornet13.zip 을 실행해서 설치한 배틀넷 서버를 등록할 수 있습니다. 개인 서버를 운영해서 공인 IP를 가지고 있다면 인터넷을 통해 클랜(길드)원들과 함께 우리만의 베틀넷 서버로 게임을 즐길 수 있게 됩니다.



더 상세한 내용이 필요한 분들은 아래의 링크를 참조하세요.
http://pvpgn.berlios.de/

웹프로그래머의 홈페이지정보 블로그 http://hompy.info

Posted by 프로그래머

2007/06/04 14:54 2007/06/04 14:54

몇년동안 팬티엄3 서버로 웹서버를 운영 해왔다. 그 웹서버로 블로그는 물론 개인 홈페이지도 운영해왔으며 얼마전 설치형 블로그를 운영하기 전까지는 너무나도 잘 돌아갔기 때문에 성능이 좋은 서버를 새로 구입해서 운영 한다는 것은 생각할 필요가 없었다. 그런데 태터툴즈라는 설치형 블로그를 운영하다 보니 데이터베이스 접속량이 많아지게 되었고 이로 인해 성능이 저하되고 간혹 서버가 넉다운 되어 본인도 서버에 접속을 못해 IDC에 전화해서 리부팅을 하게 하는 경우가 종종 있었다. 그래서 얼마전부터 새 서버를 구입해야 되겠다는 욕심이 생겼고 그 바램은 잠재울수가 없었다. 그 후로 얼마 지나지 않아 지름신과의 교감으로 성능 좋은 서버를 구입했고 오늘 새벽부터 새 서버 운영을 시작했다. 현재는 파일과 데이터를 이전하고 새 서버에 맞게 이것 저것 손보고 있는 중이다. 도메인도 새 서버로 이전을 했으나 아직까지는 새로운 도메인 설정이 활성화 되는데 시간이 필요한 이유로 같은 인터넷 주소로 웹브라우져 접속을 해도 구 서버에 접속 될 수도 있고 새 서버에 접속 될 수도 있다.
이젠 서버 2대를 운영하게 되었으니 서버별로 역할을 분배해서 상쾌한 서버 접속이 될 수 있도록 신경써야겠다. 구 서버는 이것 저것 실험하는 용도로 쓰고 새 서버는 외부에 노출되어 서비스 되도록 쓸것이다. 그런데 새 서버의 구입으로 이번달 지출이 커졌고 매달 내던 IDC 이용료가 2배 증가 하게 되어 앞으로는 긴축재정이 필요하다.^^
자신 만의 서버를 운영 하고 싶거나 운영 해야 하는 분들이 있을 것이다. 그 중 아직 운영 경험이 없어 궁금한 것이 많을 수도 있고 어떤 회사에 맡겨 서버를 운영해야 될지 고민 될수 있다. 서버 구입 비용이나 운영 비용은 얼마나 들고 어느 정도의 성능으면 어느 정도의 동시 접속자들을 수용할 수 있는지도 궁금할 수 있다. 이런 다양한 궁금증은 댓글과 원격 댓글(트랙백)을 주고 받으며 정보 교환을 해보도록 하자!

웹프로그래머의 홈페이지정보 블로그 http://hompy.info

Posted by 프로그래머

2007/06/02 14:28 2007/06/02 14:28

1. ls
 파일의 목록을 보기 위한 명령
#문법
 ls [ -옵션]
 -a : 디렉토리내의 모든 파일을 전부 보여준다.
 -C : 가로 순서로 나열하여 출력한다.
 -x : 세로 순서로 나열하여 출력한다.
 -d : 현재 디렉토리에 대한 정보를 출력한다.
 -l : 각 파일들에 대한 소유자, 권한, 갱신일 등의 자세한 정보를 출력한다.
 -s : 파일이 얼마나 많은 디스크 블록을 차지하고 있는가를 1K블록 단위로 보여준다.
 -t : 파일 갱신일 순서대로 정렬한다.
 -u : 엑세스(access)한 날짜 순서대로 정렬한다.
 -c : inode가 최근 변경 시간에 따라 순서대로 정렬해서 보여 준다.
 -r : 정렬된 순서의 역으로 출력한다.
 -i : 파일의 inode 번호를 보여준다.
 -F : 파일의 특성을 쉽게 알 수 있는 문자를 나타낸다. +는 실행 가능한 파일을, /는 디렉토리 이름을 의미한다. @는 심볼릭 링크를 나타내고, =는 소켓(socket)을 나타낸다. 하지만 여러분의 리눅스는 기본적으로 이러한 특성을 보여줄 것이다.
 -R : 현재의 작업 디렉토리의 내용과 하위 디렉토리의 내용까지 모두 보여준다.

2. cd
현재 디렉토리에서 다른 디렉토리로 경로를 변경하기 위한 명령으로 디렉토리 이름과 cd 명령 사이에 반드시 공백이 있어야 하며, 디렉토리 이름을 주지 않고 수행하면 사용자의 홈 디렉토리로 이동하고, 자신이 이동하고자 하는 디렉토리는 자신에게 실행 권한(execution permission)이 있어야 한다.
 cd [ 디렉토리 ]
* . : 점 한개는 현재의 디렉토리 위치를 의미 한다.
* .. : 점 두개는 현재의 디렉토리의 한 단개 위의 상의 디렉토리를 의미한다.
* ~ : 자신의 계정 디렉토리 위치를 의미한다.

3. mkdir
 새로운 디렉토리를 만들기 위해 사용하는 명령이다
 mkdir [ -m mode ][ -p ] 생성 디렉토리
옵션
 -m : 디렉토리를 만들 때 같이 사용하여 사용자 권한을 줄 수 있다.
 -p : 만들 디렉토리의 상위 디렉토리까지 한꺼번에 만든다.

4. rmdir
mkdir에 의해 만들어진 디렉토리를 제거하는 명령이다.
 rmdir [ -p ] 디렉토리
 -p : mkdir의 -p 옵션의 반대 동작으로 하위 디렉토리와 그 상위 디렉토리 모두를 제거할 수 있다. 이때 모든 디렉토리는 비워져 있어야 한다. 수행 후 결과가 어떻게 되었는지를 보여준다.

5. rm
 파일의 삭제
 <문법>
 rm [ -firv ] 파일명
 <옵션>
 -f : 보통 지울 수 있는 권한이 없으면 안되지만, 이 옵션을 사용하면 성가신 작업을 하지 않고서도 강제로 파일을 지울 수 있다.
 -i : 파일을 지울 것인가 다시 물어본다. 지우기를 원한다면 y를 누른다.
 -r : 서브 디렉토리의 파일도 모두 재귀적으로 지운다.
 -v : 파일을 지우기 전에 파일의 이름을 나타내준다.

6. mv
 파일의 위치를 이동하거나 파일의 이름을 바꾸어 주는 명령으로 기존에 있던 파일을 원치않게 잃어버리는 수가 있기 때문에 확실하지 않다면 -i 옵션을 사용하는 것을 권한다.
 mv [ -fi ] 파일명1 파일명2
 mv [ -fi ] 파일명(들) 디렉토리명

 -f : 같은 이름의 파일이 존재하고 쓰기 권한이 금지되어 있더라도 물어보지 않고 덮어쓰기를 해버린다. 이런 경우 이 옵션을 사용하지 않으면 사용자에게 다시 확인을 할 것이다.
 -i : 파일을 덮어쓰기 전에 사용자에게 확인한다.

7. cp
 파일을 현재의 위치나 다른 디렉토리로 복사(copy)한다. 만일 파일명2가 이미 존재하는 파일의 이름이라면 기존에 있던 파일은 사라지고 새로운 복사본 파일로 바뀐다. 이것이 원하지 않는 결과라면 -i 옵션을 주어서 확인 작업을 거칠 수 있다. -i 옵션은 파일명2가 이미 존재하는 이름이라면 그대로 복사할 것인지 아닌지를 선택할 수 있게 물어온다.
문법
# cp [ -abdfilPprsuvxR ] 파일명1 파일명2
# cp [ -abdfilPprsuvxR ] 파일명(들) 디렉토리
 -a : 가능한한 원 파일의 구조와 속성을 그대로 복사한다.
 -b : 복사할 때 덮어쓰게 되는 파일은 백업을 만든다.
 -d : 심볼릭 링크는 심볼릭 링크로 복사한다. 그리고 원본 파일과의 하드 링크 관계를 유지한다.
 -f : 복사 위치에 존재하는 파일을 제거하고 복사한다.
 -i : 복사시 같은 이름의 파일이 존재한다면 덮어쓸 것인가 확인한다.
 -I : 하드 링크를 만든다.
 -P : 원본 파일의 소유자, 그룹, 권한, 시간 기록을 그대로 복사한다.
 -r : 파일과 하위 디렉토리에 포함된 파일 모두를 재귀적으로 복사한다.
 -s : 디렉토리가 아닌 파일의 심볼릭 링크를 만든다. 소스 파일의 이름은 전체 경로 이름으로 한다. 목적지 파일 이름은 전체 경로를 주지 않아도 현재 디렉토리로 간주되므로 상관없다.
 -u : 파일의 정보를 갱신한다.
 -x : 다른 파일 시스템인 하위 디렉토리는 무시한다.
 -R : 디렉토리를 재귀적(recursive)으로 복사한다.

8. cat
cat은 catenate(사슬로 잇다. 연결하다)에서 이름이 유래한다. 이것은 파일의 내용을 화면에 출력하는 데 사용되기도 하며 파일을 다른 곳에 순차적인 스트림으로 보내기 위해 사용된다.
 cat [ -benstuvETA ] [ 파일명(들) ]
 -b : 공백 외의 글자가 있는 모든 행의 개수를 센다.
 -e : 제어 문자를 ^ 형태로 출력하면서, 각 행의 끝에 $를 추가한다. -vE와 같다.
 -n : 각 행을 출력하면서 행 번호를 함께 첨부한다.
 -s : 중복되고 겹치는 빈 행은 하나의 빈 행으로 처리한다.
 -r : 행바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다. -vT와 같다.
 -u : 유닉스 호환성을 위해 추가된 옵션으로서 무시된다.
 -v : tab과 행바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다.
 -E : 각 행마다 끝에 $ 문자를 출력한다.
 -T : 시로서 탭(tab) 문자를 출력한다.
 -A : -vET 옵션을 사용한 것과 같은 효과를 가진다.

9. pwd
 현재 작업하는 디렉토리를 알기 위해서 pwd 명령으로 현재의 디렉토리(current directory)가 어떤 것인지를 보여준다.
pwd

10. finger
 시스템 상의 사용자들에 대한 정보를 보여주는 명령으로 인수로 아무 것도 주어지지 않으면, finger는 현재 시스템에 로그인되어 있는 사용자들을 보여준다. 옵션이 주어지지 않으면, 기본적으로 -l 옵션을 사용한 것으로 간주된다.
finger [ -slpm ][ 사용자 ]
 -s : 사용자의 로그온 이름, 실제이름, 터미널 이름, 로그온 시간 등등을 보인다.
 -I : -s 옵션 정보에 몇 가지를 추가하여, 여러 줄에 걸쳐서 보여준다.
 -p : -l 옵션 정보에서 .plan과 .project 파일을 보이지 않는다.

11. who
 현재의 시스템에 접속한 사용자의 이름이나 로그온 정보를 보여준다.
who [ -uTHqs ] [로그온 정보파일 ]
whoamI
 -u : 현재 시스템에 누가 로그온되어 있는지 보여준다.
 -T : 사용자의 터미널이 메시지를 보낼 수 있는지를 알려준다. +기호는 메시지를 쓸 수 있고, -는 그렇지 않음을 보여준다.
 -H : 헤더 라인을 프린트한다.
 -q : 사용자 이름과 카운트가 구분된 목록을 보여줌, 다른 옵션은 무시된다.
 -s : 호환을 위해 포함된 옵션으로 무시된다.
# $ whoamI [Enter]'
이런 명령도 가끔은 필요할 것이다. 가령 친구의 계정으로 로그인했는데 그것을 잊어버렸을 경우라든지 아무도 없는 학교 실습실에 켜진 채 놓여진 터미널을 발견했을 때 누가 사용하다가 자리를 비웠는지 알고 싶을 때 등이다.

12. more
 한 화면씩 츨력을 보여주는 유틸리티, 한 번에 전체적으로 볼 수 없는 파일은 이것을 사용하여 스크롤을 제어할 수 있다.
more [ -ncdflspu ][ +줄번호 ][ 파일이름(들) ]
 -n : 여기서 n은 숫자를 의미하여, 숫자는 출력 윈도우의 행수를 지정한다.
 -c : 위에서부터 한 행씩 지운 후 한 행씩 출력한다. 보통은 화면 전체를 지운 후 각 행을 출력하기 시작한다. 특정한 터미널을 위해 사용한다.
 -d : 스페이스나 q 키를 누르라는 프롬프트를 출력한다.
 -f : 화면의 행이 아닌 논리적인 행 수를 계산한다. 보통은 긴 칼럼의 행은 화면에서 행바꿈을 하여 새로운 행으로 계산된다. -f 옵션을 사용하면 이러한 행은 계산하지 않는다.
 -s : 여러 개의 빈 공백행은 하나로 취급한다.
 -p : 스크롤하지 않는다. 대신 화면을 지우고 출력한다.
 -u : 밑줄 차기를 금지한다.

13. clear
 clear 명령은 도스의 cls와 마찬가지로 화면을 지우는 동작을 한다.

14. hostname
 현재 설정되어 있는 호스트의 이름을 표시하거나 변경할 때 사용하는 명령으로 인수없이 사용된다면 현재 설정되어 있는 호스트 이름을 보여준다. 리눅스는 기본적으로 프롬프트에서 호스트의 이름을 보여줄 것이다. 혹은 사용자가 프롬프트에 호스트 이름이 나타나도록 할 수도 있다. 인수로서 새로운 호스트 이름을 지정한다면 새로 지정된 이름으로 호스트 이름을 바꾼다. 하지만 이런 작업은 수퍼 유저만이 할 수 있다.
hostname [ 호스트이름 ]

15. date
 시스템은 현재의 날짜와 시간을 유지하고 있다. date 명령을 사용하면 그러한 시간을 확인할 수 있다. 또한 날짜와 시간 정보를 변경할 수 있다. 물론 시스템의 날짜와 시간은 슈퍼 유저만이 변경할 수 있다.
data

16. df
 디스크의 여유 공간을 검사하여 보고한다. 이것은 바이트 크기를 사용하는 대신 블록 단위로 보고한다는 점을 유의해야 한다. 기본적으로 512바이트 크기로 한 블록을 다룬다.
df [ -aikpvtx ] 파일시스템
 -a : 0 블록을 가진 파일도 보고한다. 기본적으로는 무시한다.
 -i : 블록 사용 대신 incode 사용 정보를 보고한다.
 -k : 블록의 크기를 1K바이트로 계산한다.
 -p : POSIX 형태의 출력을 한다.
 -v : System V의 df와의 호환을 위한 옵션이다. 무시된다.
 -t 형태 : 특정 형태의 파일 시스템으로 검사를 제한한다.
 -x 형태 : 특정 형태의 파일 시스템 이외의 것으로 검사를 제한한다.

17. env
 현재의 환경에 영향을 주지 않고 원하는 환경을 만들어 명령을 실행한다. 또는 현재의 환경을 보고한다. '이름=값'의 형식으로 특정 환경 변수를 지정해서 명령을 실행한다. 이러한 값을 필요한 대로 여러 개 나열하면 되고, 현재의 환경은 변경하지 않으므로 명령의 수행이 끝나면 환경의 상태는 이전과 다름없게 된다.
env [ - ][-i ][ -u 이름 ][ 이름=값 ][명령]
 - : 뒤에 오는 이름=값 목록으로 환경을 제한한다.
 -i : 현재의 환경을 무시하고 빈 환경 상태로 시작한다.
 -u 이름 : 현재의 환경에 그 이름의 변수가 있다면 제거한다.

18. find
 원하는 특정 파일을 디렉토리를 탐색하여 찾는다. find는 매우 강력한 도구로 특정 디렉토리들을 순회하면서 지정된 조건에 만족하는 파일을 찾는다. 파일의 조건은 이름이나 크기, 날짜 등 다양하게 지정할 수 있다.
find [ 디렉토리 ] 탐색 조건
 -name 파일명 : 찾고자 하는 파일의 이름을 정한다. 와일드 카드도 가능하다.
 -perm 모드 : 파일 권한(permission)이 일치되는 것을 찾는다. 원하는 권한은 ls로 볼 수 있는 형태와 같이 지정한다.
 -type  : 형태가 같은 파일을 찾는다. 물음표() 부분에 디렉토리는 d, 파이프는 p, 심볼릭 링크는 l, 소켓은 s, 블록 파일은 b, 일반 파일은 f 등의 기호를 사용한다.
 -links  : 특정 개수의 링크를 가진 파일을 찾는다. 물음표 부분에 링크의 숫자를 표기한다.
 -size  : 파일의 크기가 일치하는 것을 탐색한다. 파일 크기는 블록단위로 물음표 부분에 지정한다. 한 블록은 512바이트로 내정되어 있지만 블록 숫자 뒤에 단위로 k자를 붙이면 1키로바이트 크기의 블록 숫자로 간주된다.
 -user 사용자 : 파일 사용자의 ID에 따라서 검색한다. 로그인 이름이나 번호 모두가 가능하다.
 -atime  : 최근 며칠내에 엑세스한 파일을 검색한다. 날짜수는 에 명시한다.
 -exec 명령 : 원하는 검색 조건에 맞는 파일을 찾으면 명시된 명령을 실행한다. 명령의 끝은 \;을 사용하여 끝낸다. find가 검색해낸 파일의 이름을 인수로 사용하고 싶다면 그 위치에 {}를 사용한다.
 -newer 파일 : 어떤 파일보다 최근에 갱신된 모든 파일을 검색한다.

19. chmod
 파일의 모드를 바꾼다. 파일의 모드는 권한(permission) 을 제어한다.
chmod [ -cfvR ] 모드 파일명(들)
chmod [ -cfvR ] 레벨 동작 권한 파일이름(들)
 -c : 실제로 파일의 권한이 바뀐 파일만 자세히 기술한다.
 -f : 파일의 권한이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.
 -v : 변경된 권한에 대해서 자세히 기술한다.
 -R : 디렉토리와 파일들의 권한을 재귀적으로 모두 바꾼다.

20. file
 파일이 어떠한 형태의 파일인지 알아낸다. 파일이 텍스트 문서인지 실행할 수 있는 파일인지 아니면 데이터 파일인지 등을 인식한다. 에디터를 사용해서 보거나 수정될 수 있는 파일인가 알아 보는 데에 많이 사용된다.
file [-czL ][ -fm 파일명 ] 파일명(들)
 -c : 매직 파일의 파싱된 형태를 보여준다.
 -z : 압축되어 있는 파일의 형태를 검사한다.
 -L : 뒤따르는 심볼릭 링크를 야기시킨다.
 -f 파일명 : 검사한 파일에 대해 리포트를 만들 파일의 이름을 지정한다.
 -m 파일명 : 파일의 형태를 결정하는 데에 사용되는 매직 파일을 정한다.

21. ln
 두 개의 파일 사이에 링크를 만들어, 하나의 파일을 두 개 이상의 이름으로 접근이 가능하도록 한다.
ln [ -s ] 파일명1 파일명2
ln 파일명들 디렉토리
 -s : 하드 링크 대신 심볼릭 링크를 만든다.

22. man
사용하고자 하는 유닉스 유틸리티에 대한 매뉴얼(manual)을 검색해서 보여준다. 쉘을 사용할 때 어떤 명령의 사용법이 기억나지 않는 경우가 있다. 혹은 매번 사용하던 명령이라도 특수한 옵션이 필요할 때 그 기호나 사용법을 정확히 확인해야 하는 경우가 많이 있다. 물론 참고 서적을 보면 되겠지만 터미널 상에서 필요한 도움말을 언제라도 제공받을 수 있다. 시스템에 내장된 매뉴얼은 빠르게 볼 수 있을 뿐만 아니라 그 내용도 완벽한 것이어서 옵션의 종류 같은 것은 빠진 것이 없다. 만일 온라인 레퍼런스를 모두 종이로 출력한다면 그 분량은 엄청날 것이 틀림없다.
man [ 장 ] 단어
man -k 키워드
 -k : 인수로 주어진 단어를 키워드로 사용하여, 해당 키워드가 발견되는 모든 매뉴얼의 내용을 검색하여 보여준다.


Posted by 프로그래머

2007/05/29 17:59 2007/05/29 17:59
, , , , , , , , , , ,
Response
No Trackback , 4 Comments
RSS :
http://hompy.info/rss/response/83

요즘 블로그를 해부하는 재미에 시간가는 줄 모른다. 블로그를 나만의 스타일로 만들기 위한 다양한 노력이 시도 되고 있고 나름 반응 좋은 시도도 있었다. 어젠 블로그 메인 페이지를 메타블로그 사이트 처럼 꾸미고 같은 내용의 데이타로 돌아가는 쌍둥이 블로그도 만들었다. 여러개의 블로그와 홈페이지를 운영하고 있는데 각 블로그와 홈페이지에 나의 글을 일일이 올려주는 포스팅은 작지 않은 시간을 낭비하는 일이다. 그래서 "쌍둥이 블로그를 만들면 어떨까?"라고 생각하게 되었다. 데이타베이스를 공유 시키고 첨부파일 관련 폴더를 심볼릭 링크해 공유시켰더니 똑 같은 모양의 블로그가 하나 더 생겨버렸다. 와우~
스킨 폴더와 플러그인 폴더를 공유하지 않고 별도로 운영하면 데이타는 같지만 UI는 다른 블로그를 운영할 수 있다.

원본 블로그 http://hompy.info/
복재 블로그 http://www.hompydesign.com/tt

나와 같은 시도를 하고 싶다면 개인 서버를 운영해야 하고 테터툴즈 블로그를 설치해야 한다. 서버 운영과 블로그 설치가 궁금하다면 아래의 링크를 참조하라.

테터툴즈 블로그 설치 동영상 http://hompy.info/47
IDC센타에 있는 내 개인 리눅스 서버 운영 history http://hompy.info/49

조만간에 효율적인 블로그 운영을 위해 내 서버의 블로그 뿐만 아니라 티스토리 블로그와 포탈마다 운영중인 블로그에 함께 포스팅하는 솔루션을 만들어야겠다. 그리고 블로그 소스와 스킨 이곳 저곳을 손봐서 좀더 개성있는 나만의 블로그를 만들어야지...

웹프로그래머의 홈페이지정보 블로그 http://hompy.info

Posted by 프로그래머

2007/05/16 06:59 2007/05/16 06:59
, , , ,
Response
No Trackback , a comment
RSS :
http://hompy.info/rss/response/61

IDC 센타에서 서버를 두고 개인 리눅스 서버를 운영한지 어언 3년 정도 되어간다. 처음에는 간단한 홈페이지를 만들어 시간 날때마다 만든 작은 프로그램들을 올려 놓고 실험 할 목적으로 시작했다. 차차 짬내서 만든 플래시들이 올라갔고 반응도 나름 좋았던 것들도 있어 도깨비 뉴스와 디씨 뉴스 같은 곳에도 소개가 되기도 했다. 그 후 플래시 관련 홈페이지로 방향을 잡고 랭키 닷컴에도 등록을 하고 각종 포털에도 홈페이지 등록을 했다. 어떤 포털은 내용이 부실하다고 거절하기도 했지만 결국 시간이 흘러 등록이 되었다. 랭키 닷컴에서 해당 분야 순위로 평균 20위 안에 들었던 것 같고 전체 사이트 순위로 평균 1만등 정도선을 유지했다. 운영하면서 차후에라도 커뮤니티 홈페이지를 멋지게 운영하겠다는 장기적인 목표를 가지고 운영을 해왔고 그 동안 여러가지 생각과 아이디어들이 스쳐 갔고 지금은 어느정도 아웃라인 정도는 그리게 되었다. 그 와중에 테터툴즈라는 설치형 블로그를 셋업하게 되어 웹프로그래머의 홈페이지정보 블로그라는 이름으로 블로거가 되었다.
그동안 서버를 운영하면서 트래픽이란 것과 보이지 않는 싸움을 했다. 서버가 주고 받는 데이터의 용량에 따라 운영비가 달라지기 때문이다. 한때는 20M 단위까지 올라가 곤란했던 적도 있었다. 나는 서버 운영으로 수익을 기대하지 않기 때문에 해당 용량을 초과하면 다소간 부담을 느낀다. 그래서 트래픽 조절을 위해 이것 저것 연구하게 되었고 연구 결과들을 적용하게 되었다. 현재는 무난한 트래픽이 나오고 있다.

운영중인 서버가 고사양이 아닌 관계로 많은 접속자가 몰리면 서버가 버티지 못한다. 그래서 요즘 고사양 서버를 구입해볼까 하는 생각도 하게 된다. 조만간 지름신이 강림하시면 개인 서버가 2대가 될지 모른다. 고사양 서버를 구입하게 된다면 OS 를 동시에 2개를 운영할 수 있는 프로그램을 설치해서 3개의 서버로 만들까 생각 한다. 하나는 채팅서버, 하나는 웹서버, 하나는 데이타베이스 서버로 쓰게 될 것 같다.
개인 서버를 운영하는 분들과 교류하면 좋을듯 하다. 서로 정보와 재능을 교환하고 기회가 되면 같이 쓸만한 웹사이트를 운영해볼 수도 있겠지...
경제적으로 다소간 자유로운 분이 있다면 개인 서버를 운영해볼 것을 추천한다. 나름 배우고 얻을 것이 많다. 기술적으로 디자인적으로 여유롭다면 자유롭고 창의적인 홈페이지를 만들 수 있고 언젠간 멋진 사이트의 쥔장이 될것이다.

웹프로그래머의 홈페이지정보 블로그 http://hompy.info

Posted by 프로그래머

2007/05/04 17:50 2007/05/04 17:50
, , , ,
Response
No Trackback , 7 Comments
RSS :
http://hompy.info/rss/response/49


블로그 이미지

유니티 아이폰 안드로이드 게임 개발 (Unity3D, iPhone, iOS, Android, Game) , 독립 게임 개발자 (Indie Game Developer)

- 프로그래머

Archives

Calendar

«   2015/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

Site Stats

Total hits:
6105703
Today:
68
Yesterday:
692