웹서버를 작업하면서, 리눅스를 사용하는 방법을 모르면 안된다.


 여기서 간단한 사용법 중에 하나인 사용자 추가하는 방법을 작성할려고 한다.


 리눅스에서 사용하는 것에 따라서는 설정하는게 조금씩 다른 경우도 있으니 주의하면서 봐줬으면 좋겠다.


 리눅스는 CentOS로 Redhat에서 변경된 형태의 리눅스이다.


 리눅스는 다중(멀티) 사용자가 한 컴퓨터에 접속해서 처리하는 기능이 있다.(윈도우에서도 있지만, PC가 되면서 잘 사용하는 사람이 없다.)


 그래서 관리자(admin;root)와 사용자(User)로 나뉘어지며, 관리자는 사용자를 추가하여 그룹으로 묶어서 폴더를 접속하거나 해당 사용자만 사용할 수 있도록 막을 수도 있다.


 웹서버에서는 다양한 사이트를 운영할때 사용한다고 보면 된다.(드림위버나 웹페이지를 수정 관리할때 사용한다.)


 사용자 추가 방법.


 

1
useradd userName
cs


 이렇게 입력하면, 된다.


 간단하게 userName이라는 사용자가 추가되며, /home에 userName이라느 폴더가 저장되어 있는걸 확인 할 수 있다.


 기본적으로는 /home에서 사용자가 추가되며, 이렇게 생성된 userName은 기본적으로 /home/userName 이라는 폴더에서 사용할 수 있게 된다.(cd을 치면, 자동적으로 userName이라는 곳으로 이동하게 된다.)


 리눅스는 사용자의 베이스폴더(기본적으로 사용자를 생성할때, 추가되는 폴더)를 /home으로 정해 놓기 때문에 사용자가 추가되면, /home에 추가되게 된다.


 그렇다면, 사용자가 /home이 아닌 다른 폴더에 생성되길 원하면, 어떻게 해야될까?


 그것은 다음과 같은 명령어를 사용하면 된다


1
useradd -/home/users
cs


 이렇게 하면, /home에서 users라는 폴더가 있다면, 거기를 베이스 폴더(base directory)로 보고 사용자를 추가하게 된다.


 당연히 사용자의 접속 정보와 기본 폴더의 위치는 /home/users/userName 으로 되게 된다.


 그외 다세한건 useradd을 치면 설명서가 나오게 되어 있으므로 참조하면 도움이 될 것이다.


 사용자가 생성되면, 비밀번호가 임시적으로 정해져서 생성이 된다.


 사용자의 비밀번호를 모르면, 사용자를 사용할 수 없기 때문에 설정을 해야된다.


 사용자의 비밀번호를 설정하는 방법은 다음과 같다.


 

1
2
3
4
5
6
passwd userName
Changing password for user userName.
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
 
cs


 이렇게 하면, 사용자인 userName의 암호를 설정할 수 있다.


 이것은 관리자(root)의 패스워드를 잃어버렸을때도 설명을 했을 것이다.[각주:1]

  1. http://jihadw.tistory.com/115 [본문으로]
Posted by JunkMam
,

 AMP라고 해서 Apache, MySQL(MariaDB), PHP을 사용해서 처리할 수 있다.


 PHP는 Apache가 요청을 받은 것을 PHP에게 보내서 처리를 하고 PHP는 DB랑 연결되서 처리해준다.


 즉, 모든 요청을 Apache가 처리해주는게 아니다.(그리고 이렇기 때문에 속도가 조금 느린 부분이 있는 걸로 알고 있다.)


 PHP는 다음에 들어가면, 구할 수 있다.

 사이트 : https://secure.php.net/downloads.php


 



 PHP을 설치한 후에 확인 한다면,


 ./configure --prefix=/usr/local/php \

--disable-debug \

--enable-mailparse \

--enable-calender \

--enable-sysvsem=yes \

--enable-sysvshm=yes \

--enable-ftp \

--enable-mgic-quotes \

--enable-gd-native-ttf \

--enable-url-includes \

--enable-trans-id \

--enable-inline-optimization \

--enable-bcmath \

--enable-exif \

--enable-sigchild \

--enable-mbstring \

--enable-safe-mode \

--enable-sockets \

--with-apxs2=/usr/local/apache/bin/apxs \

--with-mysql=/usr/local/mariadb5.5/ \

--with-config-file-path=/usr/local/apache/conf \

--with-mod-charset \

--with-charset=utf8 \

--with-xml \

--with-language=korean \

--with-jpeg \

--with-png \

--with-zlib \

--with-jpeg-dir=/usr \

--with-png-dir=/usr/lib \

--with-freetype-dir=/usr \

--with-libxml-dir=/usr \

--with-gd \

--with-ttf \

--with-gettext \

--with-openssl;


다음과 같은 오류가 날 수가 있다.


 perl등이 Apache에 제대로 설치할때, 안되어 있기 때문이다.

 이 경우에는 Apache을 새로 깔아 주는게 좋다.


 이렇게 한 후에 다시 돌린다.


 다음과 같은 오류가 뜨는데, 이 경우에는 freetype과 freetype-devel을 설치한다.


 초기화가 완료되었다.

 현재 방식을 하는데, 경고가 받아진다.

 경고는 후에 문제를 일으키니, 나중에 찾아서 해결 방법을 기록해야겠다.


 make && make install;


 이렇게 해서 PHP가 설치가 완료된다.


 PHP와 Apache을 연결시키기 위해서 작업하는게 따로 있다.


 먼저 PHP을 설치할때, Apache 경로를 설정했다.

 그 이유는 Apache와 PHP와 연동하기 위해서 설정한 것이다.


 PHP5를 제대로 동작 시키기 위해선, 다음 같은 모듈이 추가 되어야 된다.


 LoadModule php5_module modules/libphp5.so


 libphp5.so는 php5을 실행 시키는 명령(함수)들이 저장되어있는 동적 라이브러리이다.

 Apache가 요청을 받아들인 후에 PHP에게 보낼때, 이걸 이용해서 처리한다라고 봐도 된다.


 만약, 확장자에서 php가 들어간다면, PHP을 실행 시키기 위해서 Type을 추가시켜줘야한다.


 <ifModule></ifModule> 사이에 다음과 같은 문구를 추가한다.


 AddType application/x-httpd-php .php

 AddType application/x-httpd-php-source .phps


 여기서, php가 아닌 html에서도 php문구를 처리하기 위해선


 AddType application/x-httpd-php .php .html .htm


 이렇게 사용하면, 작동이 문제 없이 된다.


 여기서 /usr/local/apache/htdocs 라는 곳에서 index.html 이라는 파일이 있다.

 이 파일은 Apache가 처음에 설치된 후에 이상 없이 작동되는지 확인하기 위한 파일이다.

 이 파일에 다음과 같은 문구를 추가한다.


 <?php

phpinfo();

 ?>


 이렇게 해서 phpinfo라는 함수가 실행되고, php의 정보를 볼 수 있게 한다.


 



 php에서 설치가 제대로 되었는지, 설정이 어떻게 되어있는지를 확인 할 수 있기 때문에 보고 이상 없는지 확인하면 된다.


 파일 : 

apr-1.5.0.tar.gz

apr-util-1.5.3.tar.gz

httpd-2.4.6.tar.gz

pcre-8.33.tar.gz

mariadb-5.5.34.z01

mariadb-5.5.34.z02

mariadb-5.5.34.z03

mariadb-5.5.34.z04

mariadb-5.5.34.z05

mariadb-5.5.34.zip

php-5.4.22.z01

php-5.4.22.z02

php-5.4.22.zip



 SHA-256 표시줄.

 SHA256

 Name

 8505C2AA9F99E6B43D8E5C72CC6F4D8C5A8B3F67DB29C82D9707B98CBC3F3A89 apr-1.5.0.tar.gz
 259CE68F68C531F7ADECF79248F91235271F4025C1A47AE7E51BEE0E07E9902B apr-util-1.5.3.tar.gz
 8365BA360DF345B5AFA36FCA48B4036CE965141E029A6099F464DDF8A94FF0A7  httpd-2.4.6.tar.gz

 36CB3AE0078270F05972E9B8FBB7C859C05FD36DEB2152C77C8C8F4B07D5B28E

 mariadb-5.5.34.z01
 E2DC09A4664E6CEDB5C60F120814C794BB32D6C6583D2F6F9DCACC0DFEFE4FAA mariadb-5.5.34.z02
 31AF790E499982B8186865ED5D8A05E76DCC839899CA265CDA9A8A6343038D5D mariadb-5.5.34.z03
 95567B60520A85F342144A0D8168E57014E4992765FE32F1795BA14626C39A3A mariadb-5.5.34.z04
 9323B5AF8DEC149BE79D8E6764B3D11BD6B211A3956ED1BAC5516DBE3DAB4BC7 mariadb-5.5.34.z05
 C35FE01A7F5F265820E9DD6E800E014F3887E8E7757BCAF1820C909D6865C6D5 mariadb-5.5.34.zip
 C6936ADCDD8730B0C56681775C078B057541EE12BB7953BF912F041F54457B9E pcre-8.33.tar.gz
 E3CA8DBAC09F9CD985D93CA6439F8E5272A4AC8B1880A710C3C57170114FC7AA php-5.4.22.z01
 85AB309E69A00DA00D1A3B668A77F00E70FB2EE06EBD39454CEDD1F94822F5A2 php-5.4.22.z02
 3435510B9B3B8B6EDE933017114613C97B7506F5301BA2F1B4106DBAE9F403FD php-5.4.22.zip


 다운로드 한 후에 7z h 을 이용해서 확인할 수 있다.

Posted by JunkMam
,

 리눅스에서 xxd라는 프로그램이 존재한다.

 xxd란, 파일을 읽어서 hexa code로 변환해주는 프로그램이다.


 예을 들어서 xxd a.out > a_test.hex


 이런식으로 출력을 하게 되면, 다음과 같은 변화를 볼 수 있다.


 


 이걸 vi으로도 연결 할 수 있는 명령어이다.


 그래서 vi에서 다음과 같은 명령어를 사용하면 바뀌게 된다.


 :%!xxd


 그리고 되돌리기 위해선


 :%!xdd -r


 이렇게 해야지 되돌아간다.


 하지만, vim이 제대로 설치가 안된 상태에서는 다음과 같은 문제가 발생한다.

 


 이렇게


 xxd : command not found


 라는 오류가 발생하는데, 이것은 xxd가 제대로 설치가 되지 않아서 일어나는 현상이다.


 이것은 다음과 같은 사이트에서 설명이 적혀 있다.


 http://programmer-experience.blogspot.kr/2012/08/xxd-command-fedora-linux.html


 이것을 해결 하기 위해선,


 yum install vim-command 혹은

 yum install vim


 이렇게 해서 설치를 하면, 이상없이 사용이 가능하다.


 더 정확하게는 vim-command에서 존재하는 명령어인 xxd을 설치하는 것이기 때문에 vim-command을 설치해줘도 가능하다.


 이제 xxd을 통하여 Hexa Code로 변환하면서 사용하면 된다.


 단, 여기서 문제점은 xxd가 편집 프로그램이 아니다. 값을 변환해주는 프로그램이다.

 그래서 vi을 사용하다보면, 변환을 다시 해줘야 하는 문제점을 가진다. 그래서 사용하기엔 조금 불편하다.

 Hexa Code 변환 프로그램과 편집 프로그램을 같이 사용할 수 있는 프로그램을 구해서 사용하거나 만들어서 사용하는 것이 더 유용할 수 있다.

Posted by JunkMam
,

 Apache를 이상 없이 설치가 되었으면, 이제 DB을 연결하고 페이지를 만들수 있게 한다.


 DB는 종류가 많은데, MSSQL과 MySQL 등이 있다.


 여기서 MariaDB을 설치하는 것을 할려고 한다.


 DB는 무슨 역할을 하는가?


 DB는 서비스를 제공하는 자(서버)가 서비스를 받는 자(클라이언트)에게 받은 정보 및 서버가 가지고 있는 데이터들을 관리하는 장치가 DB(DataBase)이다.

 특히, MariaDB와 MySQL등 SQL류 DataBase는 관계를 지어서 해당 관계를 이용해서 데이터를 관리하는 방식을 사용한다.

 요즘 NoSQL이 유행한 것들은 이 관계를 미리 틀을 짜서 만들지 않고 유동적인 틀로 사용하는 것이다. 라고 알고 있다.


 그래서 SQL부분이 아예 사용이 안되는게 아니라, 해당 관계에서 조금 더 자유성을 부여된 형식이라고 이해하면 될 것이다.


 MariaDB를 설치하기 위해서 MariaDB 5.5을 설치할려고 한다.


 사이트 : https://downloads.mariadb.org/mariadb/


 여기에서 MariaDB을 다운 받을 수 있다.


 다운받는 경로를 알고 있다면, wget을 이용해서 MariaDB을 다운 받을 수 있다.



 MariaDB는 make만 사용하는게 아니라, 정확하게는 cmake을 사용하게 되어 있다. 그래서 cmake을 설치해줘야 한다.


 yum install cmake



 이렇게 설치가 완료한 후에 MariaDB을 압축을 푼다.

 압축을 푼 MariaDB에서 들어간 후에 target이라는 폴더를 만든다.

 target에서 초기화 작업을 끝낸 후에 target에서 make와 make install을 한다.


 target폴더에서 cmake을 사용하여 초기화 한다.


 cmake .. 

 \-DCMAKE_INSTALL_PREFIX=/usr/local/mariadb5.5

 \-DWITH_INNOBASE_STORAGE_ENGINE=1

 \-DWITH_ARCHIVE_STORAGE_ENGINE=1

 \-DWITH_BLACKHOLE_STORAGE_ENGINE=1

 \-DWITH_PERFSCHEMA_STORAGE_ENGINE=1

 \-DWITH_PARTITION_STORAGE_ENGINE=1

 \-DWITH_FEDERATEDX_STORAGE_ENGINE=1

 \-DWITH_ARIA_STORAGE_ENGINE=1

 \-DWITH_XTRADB_STORAGE_ENGINE=1

 \-DWITH_EXTRA_CHARSETS=all

 \-DWITH_READLINE=1

 \-DWITH_SSL=system

 \-DWITH_ZLIB=system

 \-DMYSQL_DATADIR=/usr/local/mariadb5.5/data

 \-DDEFAULT_CHARSET=utf8

 \-DDEFAULT_COLLATION=utf8_general_ci

 \-DENABLED_LOCAL_INFILE=1;



 다음과 같은 오류가 난다.

 이 경우에는 ncurses을 이용해서 컴파일을 하기 때문에, ncurses-devel을 설치해줘야한다.



 yum install ncurses-devel libevent libxml2 libxml2-devel bison(ncurses-devel 외 나머지는 이유를 모르겠다. 구글링해서 알게 된 것이기 때문에 무조건은 아니다.)


 make을 한 후에 make install 을 하면, 설치가 된다.


 이제, mysql을 연결해주는 사용자를 만들어야한다.


 groupadd -g 27 -o -r mysql;

 useradd -M -g mysql -o -r -d /usr/local/mariadb5.5/data -s /bin/false -c "MariaDB Server" -u 27 mysql;


 mkdir -p /usr/local/mariadb5.5/InnoDB/redoLogs;

 mkdir -p /usr/local/mariadb5.5/InnoDB/undoLogs;


 chown -R mysql /usr/local/mariadb5.5/data;

 chgrp -R mysql /usr/local/mariadb5.5;


 mkdir /usr/local/mariadb5.5/logs /usr/local/mariadb5.5/tmp;


 chown mysql.mysql /usr/local/mariadb5.5/tmp;

 chown mysql.mysql /usr/local/mariadb5.5/logs;


 이렇게해서 log을 받는것, tmp(임시 파일)을 받는 곳을 전부 다 제작해준다.


 maraiDB의 DB를 설치한다.


 /usr/local/mariadb5.5/scripts/mysql_install_db --user=mysql \

--basedir=/usr/local/mariadb5.5 \

--datadir=/usr/local/mariadb5.5/data;



 이렇게 했을때, 다음과 같은 화면이 출력하면서 db을 제작한다.


 /usr/local/mariadb5.5/support-files/mysql.server start;



 이렇게 하면, MariaDB의 서버가 작동이 된다.


 이 후에 DB에서 설정한 admin(관리자)을 제작한다.


 /usr/local/mariadb5.5/bin/mysqladmin -u root password 'passwd';



 이렇게 하면, root 사용자가 passwd을 비밀번호를 가진 상태로 사용할 수 있게 된다.


 이렇게해서

 /usr/local/mariadb5.5/bin/mysql -p

 이렇게 작동을 시키면, mysql이 작동이 되며, 사용자는 MariaDB을 사용할 수 있게 된다.





Posted by JunkMam
,

https을 사용하기 위해선 OpenSSL을 설치하는게 좋다.(SSH가 설치 되어 있다면, 자동으로 OpenSSL이 설치가 되어 있을 것이다.)


 OpenSSL을 연결하기 위해서 OpenSSL을 설치를 해줘야한다.


 OpenSSL-devel이 안 깔려 있기 때문에, 설치하는 도중에 계속 오류가 나게 되므로, 


 yum install openssl과 openssl-devel을 설치해준다.


 openssl-devel이 설치되면서 생기는 차이점은 openssl에 관련된 개발용 헤더들과 파일들이 같이 깔려 있다는 점이다.(만약, openssl이 설치가 안되어 있다면[그럴일 없지만...]  https://www.openssl.org/source/ 에 들어가서 다운 받아서 설치하는게 좋다.)


 yum install libpng* libjpeg* perl* 


 먼저 http는 demon인 httpd을 설치해줘야지 제대로 작동이 된다.


 httpd의 소스는


 https://archive.apache.org/dist/ 에서 구할 수 있다.


 나는 httpd-2.4.6버전을 설치할려고 한다.


 먼저 httpd-2.4.6을 얻는 작업을 한다.

 필자는 wget을 설치해 두었기 때문에 wget을 사용한다.

 wget이 설치가 되어 있지 않다면, 설치하거나 웹페이지에 가서 다운 받으면 된다.

 사이트 : https://archive.apache.org/dist/httpd/



 다운 받은 후에 apache와 openssl을 연동을 하기 위해서 apr 소스를 다운 받는다.

 필자는 apr-1.5.0과 apr-util-1.5.3을 사용한다.


 사이트 : https://archive.apache.org/dist/apr/


 이걸 이용해서, httpd와 apr, apr-util을 풀어준다.


 이렇게 tar zxvf을 이용해서 압축을 풀어주면, 처리가 가능해진다.


 이렇게 하면, httpd와 apr, apr-util이라는 것들이 생성이 된다.

 여기서 httpd을 컴파일 하기 위해서 apr과 apr-util을 옮겨줘야 한다.


 apr-1.5.0 -> httpd-2.4.6/srclib/apr

 apr-util-1.5.3 -> httpd-2.4.6/scrlib/apr-util


 이렇게 변형을 해줘야지 httpd을 컴파일 할때, 같이 사용하게 된다.


 먼저 make을 사용하기 위해서 설정을 사용한다.


 httpd-2.4.6에 들어간 다음에


 ./configure --prefix=/usr/local/apache \

--enable-mods-shared=all \

--enable-ssl \

--enable-so \

--enable-rewrite \

--with-include-apr \

--with-include-apr-util;


 --prefix : Linux에서 설치할 경로를 사용자가 정의하는 것이다.

 --enable-mods-shared : mod 설치하는 것을 동적 라이브러리로 설정하는 것이다.

 --enable-ssl : ssl 라이브러리를 지원하는 것이다.

 --enable-so : 동적 라이브러리로 지원하는 것이다.

 --enable-rewrite : 덮어 씌우기를 지원해주는 것이다.

 --with-include-apr : apr을 포함해서 컴파일하는 것.

 --with-include-apr-util : apr-util을 포함한 컴파일 하는것.


 이렇게해서 설정을 하게 된다.


 설정이 완료된 후에 컴파일을 한다면, 오류가 발생한다.


 


 pcre가 없어서 발생하는오류로. pcre을 설치해줘야 한다.


 yum으로 해도 되지만, 소스 설치를 사용한다.


 다음과 같은 주소에서 가면 , 얻을 수 있다.


 https://sourceforge.net/projects/pcre/files/


 pcre-8.33.tar.gz 을 받아서 사용한다.


 tar zxvf pcre-8.33.tar.gz을 사용해서 압축을 풀어낸 후에 pcre에 들어간다.


 pcre을 설치하기 위해서 컴파일을 하기위해서 초기 설정을 한다.


 ./configure



 이렇게 하면, 초기화가 완료되고 컴파일을 하기 위해서 make로 테스트 한 후에 make install을 해서 컴파일 설치를 완료시킨다.


 설치 완료한 다음에 다시 httpd에서 초기화를 설정하면, 다음과 같이 나오게 된다.



 이것은 OpenSSL-devel가 설치가 안되어 있어서 생기는 문제점이다.(초기화 할때, SSL관련된 경로 및 설정이 잘못 되었을 수도 있다.)


 OpenSSL-devel이 제대로 설치가 되었으면, 문제 없이. 초기화가 된다.


 초기화가 완료되었으면, make & make install 을 이용한다.


 그러면, Apache 설치가 완료가 된다.


 이제 Apache의 설정을 해서 확인 한다.


 여기서는 Apache의 설정을 하는게 있다.

 /usr/local/apache/conf 에서 설정이 들어가 있다.

 httpd.conf라는것에서 초기 설정을 할 수 있다.


 /usr/local/bin/apachectl을 사용하면, 아파치 서버가 작동을 한다.


 멈추게 하고 싶다면,

 /usr/local/bin/apachectl stop 을 사용하면 된다.


 일단, 해당 서버에는 XWindow가 설치가 되어 있지 않기 때문에 우리가 일반 적으로 알고 있는 It's Work 라는 문장이 있는 페이지로 이동하기가 힘들다.


 그래서 lynx(Text Internet Browser 중 하나)을 이용해서 출력하면, 다음과 같이 뜨면서 이상없이 뜨는걸 볼 수 있다.


 localhost로 들어가면, 자기 IP(127.0.0.1)에 들어가며, 제대로 동작하는지 확인을 할 수 있다.



Posted by JunkMam
,

 Linux에서 root 비밀번호를 잊어 버리면, 시스템 관리자 형태로 필요한 경우(yum 같은 경우)를 사용하기가 불편해질 수 있다.


 그래서 root의 패스워드을 입력하지 않고도 그냥 들어갈 수 있게 만들어서 root 패스워드를 변경할 수 있다.


 그리고 init을 변경해서 XWindows 등 모드를 설정 할 수 있다.


 먼저, root의 패스워드를 처리하는 방법을 기록하기로 한다.



 부팅 중에 Linux가 작동할려면 다음과 같은 시간이 걸리게 된다. 이때, 아무키를 누르면, GNU GRUB이 작동하게 된다.



 여기서 두번째(kernel)에서 e을 누르게 되면, 수정할 수 있는 Edit 상태가 된다.

 C는 Command 형태로 GRUB에 설정하는게 된다.

 Booting Loader가 고장이 나면, 여기와서 수정을 가하면 강제적으로라마 연결이 가능해진다.



 여기서 init 1을 설정한다.


 init 0 : 컴퓨터 종료.

 init 1 : 단일 사용자.

 init 2 : NFS을 제외된 다중 사용자.

 init 3 : 다중 사용자.

 init 4 : 없음.

 init 5 : X11(XWindow Library을 동작).

 init 6 : 재부팅.


 이렇게 되면, 단일 사용자 모드가 되어서 passwd가 입력 되지 않는 상태로 root에 들어갈 수 있게 된다.

 그래서 root 값을 변경하고 처리 할 수 있게 된다.


 init을 부팅시 마다 설정하기 귀찮으면, init의 정보를 변경하면 가능하다.



 init 값을 변경하는 방법.


 init 값은 /etc/inittab 이라는 파일에 저장되어 있다.


 vi /etc/inittab을 이용해서 보게 되면,


 init 설정하는 데이터 정보와 함께, 


 id:#(여기서 init에 설정되는 숫자를 입력한다.):initdefault:


 이렇게 init의 기본값을 변경할 수 있게 된다.


 기본 값을 변경해서 X11을 먼저 실행 시킬 수도 있고, Single로 단일 사용자 형태로 사용해서 비밀번호를 설정하지 않아도 된다.

 NFS 등 네트워크 형태를 취하지 않고 작업 하는 것 또한 제외 시키고 할 수도 있다.

Posted by JunkMam
,

 과거에 웹 서버를 구축하는 방식을 기록할려고 한다.

 웹서버를 구축하는데 까먹을 수도 있고, 요즘 다양한 방식이나 그런게 존재하기 때문에, 이렇게나마 조그만한 거라도 기록하지 않으면, 큰 일이 있을 것 같아서 기록하기로한다.


 먼저, CentOS 6.3을 가지고 리눅스를 설치했다.

 이 후에 리눅스를 이용해서 웹 서버를 만들것인데, yum을 이용해서 설치하는게 아니라.

 source 파일들을 받아서 설치하도록 한다.


 yum과 source 파일로 설치하는 것의 차이는 source 파일로 한다면, 사용자가 원하는 형태로 부분적으로 설치를 할 수 있는 특징을 가지지만, 반대로 yum에 비해서 복잡하고 잔 오류가 많이 발생한다.


 잔 오류가 발생하면, 거기에 맞춰서 고쳐나가야 되는 특징이 있기 때문에, 주의가 요구된다.


 참고로 source 파일로 설치를 할려면, 기본적으로 gcc와 glib, gcc-libs을 깔아 둬야 된다.


 이것은 yum으로 깔아줘야 된다. 그 이전에 souftware development workstation이라는 패키지로 설치하면 자동으로 설치가 된다.


 yum을 이용해서 gcc(GNU C Language Compiler)을 설치하는 과정을 먼저 작성한다.


 gcc와 함께, make(자동 컴파일 장치)을 이용도 사용하기 위해서 make또한 설치해야된다.


 먼저, yum은 웹하드에 저장되어 있는(ftp로 저장이 되어있는) 파일들을 불러와서 설치하는 장치이다. 그래서 인터넷 연결을 해야지 제대로 사용이 가능하다. 이걸 해결하기 위해선 이전글인 수동으로 eth0를 참조하면 된다.[각주:1]

 


 윗 방법으로 설치한다.

 httpd(Apache)는 gcc뿐만 아니라 gcc-c++(C++ 컴파일러)을 이용해서 httpd를 구현하기 때문에, gcc-c++을 인스톨하였다.


 이 방법 말고 정 불안하면, gcc와 gcc-c++와 make을 소스 파일로 가지고 있는 상태를 사용해도 된다.(단, 그럴 경우에는 초기 운영체제를 설치할때, 개발자 도구를 설치해야된다. 컴파일 후에 부딧침을 방지하기 위해서라도 rpm을 돌려서 삭제 작업을 해줘야 한다.)

 소스 파일로 하기 싫다면, rpm 파일을 사용해도 된다.(rpm 파일에서도 그냥, 컴파일 시키는 것과 유사하게 제작하는 것이기 때문에 문제가 될 것까진 아니다.)

 차이점은 사용자가 정의를 내려서 쓰느냐 안 쓰느냐의 차이일 뿐이다.


 그 외에도 make을 이용해서 컴파일 작업을 하기 때문에, make을 설치했다.

 결과를 보면, gcc와 g++, make을 입력했을때, 마지막 사진처럼 나오게 되면, 제대로 설치가 된것이다.


 참고로 필자는 httpd-2.4.6버전을 설치할 생각이다.


 웹에서 다운을 받기 위해서 wget 또한 설치하는게 좋은데, 그것을 위해서라도 yum install wget 또한 설치하는게 좋다.


 wget은 웹에서 들어가서 파일을 다운 받을 수 있게 만드는 장치로써 사용이 유용하다.


 정리하자면,


 yum install gcc gcc-c++ make wget -y


 이렇게 입력을 해주면, 필자가 필요한 장치는 어느정도 설치가 된다.

 참고로 그 외에도 yum을 이용해서 설치하는 일이 있을 것이다.

 지금은 그냥 컴파일을 할 수 있을 정도일 뿐이고, 라이브러리가 더 필요하다.


 필요한 라이브러리는 그때 그때마다 컴파일 하면서 조율하고, 뭐가 필요한지 표시할려고 한다.

  1. http://jihadw.tistory.com/112 [본문으로]
Posted by JunkMam
,

 리눅스는 ethx로 인터넷(정확하게는 유선 네트워크 장치를 뜻한다.) 무선 인터넷은 wlanx를 사용한다.[각주:1]


 기본적으로 네트워크는 설치하는 과정에서 자동 연결을 하지 않으면, 네트워크가 연결이 되지 않는다.

 단지 lo(local network;127.0.0.1)만 연결이 되는데, 이것은 그냥 자기 자신으로 연결하는 에코 IP이기 때문에 네트워크 프로그램을 외부에 연결해서 작업하지 않고 만들기 원할때 사용하는 것 말곤 없다.


 네트워크 장치자를 사용자가 설정하지 않는 이상은 부팅할때마다 설정을 해줘야 된다는 뜻이 된다.


 먼저, 수동으로 부팅시 네트워크를 연결하는 명령어은 ifup이라는 명령어가 있다.(일반적으로 있는 것이며, 그냥 /sbin/에 존재하는 명령어이다.)



 sbin에서 있는 ifconfig, ifdown, ifup등이 전부 다 네트워크에 관련된 명령어이다.


  - ifconfig : 현재 연결되어 있는 장치들의 정보를 출력한다.

  - ifdown : 특정 장치의 연결을 끊는다.

  - ifup : 특정 장치를 연결한다.


 윗 설명을 가지고 사용하면, ifconfig을 이용해서 현재 연결의 상태를 알 수 있다.

 


 여기 본다면, 기본적으로 lo(local연결 장치.)가 되어있다. 설정하는 파일명은 ifcfg-lo에 설정 정보가 들어가 있다.


 여기서 연결을 원하다면, ifup을 이용한다. eth0가 기본적으로 처리된다.


 


 연결이 완료되어서 본다면, 다음과 같이 eth0이 연결되는걸 볼 수 있다.

 만약에 무선의 연결을 원한다면, wlan을 이용해서 볼 수 있다.


 대표적으로 adb로 안드로이드 폰을 연결하게 되면, wlan으로 연결이 되는걸 알 수 있다.



 연결을 끊기 위해선 ifdown을 이용한다.



 다음과 같이 ifdown eth0을 이용하면, 연결이 끊어 짐을 알 수 있다.


 수동으로 하는 것은 매우 불편하고, 귀찮다. 웹 서버나 서버인 경우에는 다른데 올려 놓은 다음에 원격으로 작업을 하는 경우가 많은데, 이 경우에는 무슨 일이 발생해서 컴퓨터가 재부팅이 된다. 라면, 원격으로 연결을 못 하는 문제점이 발생한다.


 그래서 다음과 같은 방법을 이용해서 처리한다.


 먼저 ifcfg-eth0와 ifcfg-lo등 네트워크를 설정하는 파일은 다음과 같은 폴더에 위치한다.


 /etc/sysconfig/network-scripts/에 존재한다.

 

 이렇게 동작하여, 설정을 볼 수 있게 된다.


 여기서 ip을 설정하는 것을 한다. 대표적인 예로[각주:2]

DEVICE=eth0 HWADDR=d8:d3:85:c5:8e:4e ONBOOT=no HOTPLUG=yes BOOTPROTO=none NETMASK=255.255.255.0 IPADDR=10.0.0.15 GATEWAY=10.0.0.1 TYPE=Ethernet

 윗 처럼 되어 지는 경우도 있다.


 여기서 고정 IP을 이용해서 사용할때는 저렇게 설정을 해줘야 된다.

 하지만, 자동 IP을 이용하게 되면, 다음과 같은 설정이 된다.


 여기서 ONBOOT라는 설정이 있는걸 볼 수 있다.

 ONBOOT라는 것이 부팅시 자동으로 연결하도록 하는 설정으로, 사용자가 재부팅시에도 자동으로 점검을 한 후에 부팅 하게 만드는 장치이다.

 이걸 통하여 사용자는 수동으로 연결하지 않아도 자동으로 연결하는 시도를 하게 된다.


 변경하는 방법으로는 vi이라는 장치가 있다.

 vi는 리눅스에서 기본적으로 제공하는 에디터로 일반적인 메모장과는 차이가 있다.

 일반적으로 GUI(Graphic User Interface) 형태를 취하는 것도 TUI(Text User Interface)로 취하는 것도 아니다. 그냥 명령 shell 방식을 취하기 때문에 일반적인 사용자가 그냥 사용하기에는 불편함이 따른다.

 명령어를 어느정도 알고 해야되지만, 그것은 여기 게시글에는 다루지 않을 것이고, 그냥 다음과 같이 수정을 하면 된다.



 vi [파일명] 이렇게 하면, vi으로 특정 파일을 여는 작업을 할 수 있게 된다.



 vi을 열면 다음과 같은 형태로 나오게 되는데, 이걸 편집을 하기 위해선 'i'을 누르면, 된다.(i는 insert의 단축키라고 보면 된다.)



 방향키를 이용해서 이동한 후에 no을 yes로 수정하고 esc키를 누르면 명령을 받을 수 있는 모드로 변경이 된다.



 명령 모드에서 :(콜롬)을 클릭한 후에 w(write)와 q(quit)을 입력하면, 저장한 후에 나가게 되는 명령이 실행이 된다.


 명령이 완료되고 재부팅을 하면, 자동으로 연결이 되는걸 확인 할 수 있게 된다.


  1. 여기서 x(ethx, wlanx)는 장치의 숫자를 뜻한다. 예을 들어서 유선 네트워드 1,2,3이 있다면, eth0, eth1, eth2로 네트워크 장치가 붙는다. [본문으로]
  2. https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/Reference_Guide/s1-networkscripts-interfaces.html(2016-06-01) [본문으로]
Posted by JunkMam
,

 CentOS를 설치하여, 리눅스에 작업하는 것을 위해서 만들고 있다.


 CentOS의 사이트[각주:1]에 들어가면, CentOS의 ISO을 다운 받을 수 있다.(더 자세한 것은 Mirror Site에 들어가서 받아 가는게 더 정확하게 받을 수 있다.)[각주:2]


 CentOS는 레드햇에서 파생된 것으로. 원래, 리눅스는 리누스 토발즈라는 사람이 유닉스와 유사한 개인용 컴퓨터 커널을 만들게 되면서 시작이 되었다.

 리눅스 커널에서는 사용자가 다양하게 수정 및 개조를 하고 싶어하는 것은 가능하지만, 사용하기 위해서 설치하는 과정이 매우 어려웠다.


 리눅스 커널에서 우리가 사용하는 윈도우 같은 U/I로 변경할려면, 다양한 장치를 만들어야 된다.

 먼저, XWindows Library라는 걸 깔아야지, WIndows 처럼 마우스를 클릭하면서 컨트롤 할 수 있는 걸 만들 수 있다.

 그 외에도 사용자가 Chrome을 연결해서 사용하는 형식을 할려면, 또 작업을 해야될 것이. GNOME등 다양한 그래픽 작업을 해주는 Library을 설치해야된다.


 이것은 사용자가 쓰기에는 매우 불편해진다. Windows는 그냥 설치하면 쓸 수 있지만, Linux는 그걸 하기 위해서 설치해야될 것이 많이 필요하다.


 그래서, 리눅스에서는 Windows 등을 처리하기 위해서 리눅스 패키지를 모아서 정리해 놓은 것으로 다양한 운영체제가 파생되었다.


 레드햇, 우분투, CentOS, 칼리 리눅스, 안드로이드 등이 리눅스에서 파생된 OS들이다.


 그래서, 오늘 CentOS을 설치한 후에 이것 저것 테스트 하는걸로 할려고 한다.


 Linux을 설치하는 과정을 기록하고 다양한 설치 방법등을 기록하고 공개 및 정리를 할려고 한다.


 

 


 처음 새로 만들기를 해서 가상 머신은 만드는 과정이다.



 가상머신이 가질 메모리량으로 그냥 4G로 잡았다. 굳이 이렇게 할 필요는 없다.

 추천 메모리크기가 256MB라는 점을 보면, 굳이 메모리를 잡아 먹을 필요는 없다.



 가상 디스크로 가상 머신에서 보조 저장 장치로 사용할 파일을 설정하는 것이다.

 가상 하드 디스크를 추가하지 않으면, 새로 설정을 해줘야 된다. 그게 아니면, ODD(광학)이나 FD(플로피 디스크)로 돌리는 생각을 해야된다.


 기존 가상 하드 디스크 파일을 사용하는 것은, 기존에 작업한 가상 머신을 가지고 올 수 있는 것으로, 재 사용이 가능하다는 뜻이다.



 QEMU, VDI등 가상 머신에서 사용하는 종류들을 뜻한다.

 종류에 따라서 포맷이 달라지는 등이 있다.



 가상 머신이 완료된 사진이다.

 가상머신에서 시스템 내용을 볼 수 있고, 시작을 하면, 가상머신의 정보를 읽어서 돌수 있게 된다.



 CentOS을 클릭 후 설정(S)을 눌으게 되면, 사진 처럼 나오게 된다.

 여기서 저장소를 보면, 맨 처음 가상머신을 추가한 파일이 나오고, ODD 장치가 한개 추가 되어 있는 걸 볼 수 있다. 제거 할 수 있고, 추가 할 수 있다.


 시스템에서 있는 내용(부팅순서)에 따라서 부팅되는 순서가 바뀐다.

 


 CentOS을 삽입(혹은 윗 설정에서 ODD에서 ISO를 추가시킨 상태)에서 동작 시키면, ODD가 작동되서 CentOS 6.3의 설치 메뉴가 뜨게 된다.



 광학 미디어에 내장된 파일이 이상이 없는지 확인하는 과정으로 다운 받은 파일 혹은 광학 미디어가 문제가 없다면, 그냥 Skip해도 된다.(오래된 광학 미디어일 경우 확인을 해야되는 경우도 있다.)



 CentOS 6 Graphics 과정으로 맨처음 설치 메뉴에서 나온 곳에서 Text모드로 설치 실행을 하지 않으면, 가능한 Graphics로 설치하게 되어있다.



 설치하는 과정에서 언어를 선택하는 것으로 Korean(한국어)을 설정하면 쓰기가 편해진다.



 키보드 사용하는 정보인데, '한국어'라는 모듈이 깔리지 않는 이상 굳이 한국어 키보드를 쓰든 영어 키보드를 쓰든 상관은 없다.(영어에서 파생된 형태이니...)





 사용자(정확하겐 시스템 관리자)의 호스트 명과 네트워크 연결 설정창이다.

 고정 IP일 경우에 이걸 수정하고 Booting 후에도 작동을 했으면 한다면, 여기서 수정을 가해야된다.



 시스템 시간을 설정하는 것이다. Korean으로 설정하는 등 한국으로 설정을 해서 자동으로 서울로 잡아 준 것 같다. 안 그러면 영국이나 미국으로 설정되어 있는 경우도 있기도 한다.



 Windows 위에 리눅스를 덮어 씌울때 주의 해야되는 경우다.

 필자는 VM을 사용하고 있지만, VM의 단점은 VM이 진짜 하드웨어 상황을 완벽하게 시뮬레이팅을 해주지 않는다. 그러므로, 가끔 윈도우 위에 리눅스를 깔아야 되는 경우도 있다. 이때, 모든 공간 사용을 사용하면, Windows의 정보까지 모조리 삭제하는 경우가 생기므로, 그런것은 피하는 방향으로 작업을 해야된다.



 설정하는 것.

 CentOS 등 리눅스 OS등은(리눅스 커널 등 기본 리눅스 OS 제외) 사용자가 사용하기 편하게 하기 위해서 패키지화 시켜서 모아둔 것들이라고 했다. 그래서, CentOS에서 사용자가 원하는 패키지들을 묶어서 고를 수 있게 만들어 져있다.


 - Desktop은 사용자가 XWindows등을 사용할려는 것 및 Editor등을 포함시켜 놓은 상태를 말하는 것이다.

 - Minimal Desktop은 XWindows 같은 데스크탑의 최소 패키지.

 - Minumal은 그런것 전혀 없는 순수 리눅스 OS를 쓰기 위해 필요한 것들

 - Basic Server는 기본 서버(웹 서버등)을 위한것.

 - DataBase Server는 데이터 베이스만 컨트롤 하기 위한 서버.

 - Web Server는 웹서버를 위한 서버.

 - Virtual Host는 네임 서버등 가상화를 위한 서버.

 - Software Development Workstation는 에디터 및 디버깅 툴들을 가지는 패키지 이다.


 일반적으로 RPM(레드햇의 패키지) 모둠들을 가지고 설치하는 것이기 때문에 중요한 것이 아닌 이상 그냥 Minimal로 설치하는 것이 나은 경우도 많다.


 밑에 있는 지금 선택(C)을 선택하고 다음으로 넘어가면, 밑의 사진처럼 나오게 되어 사용자가 필요한 것만 뽑아서 설치할 수 있다.



 필요한 부분을 패키지로 나눠서 볼 수 있는 창이다. 필요한 것들만 체크해서 설치하면 된다.

 단, 이걸 제대로 사용할려면, ISO 파일을 전부 다 받아 둬야 되는 경우도 생기므로 왠만해선 Source 버전(혹은 RPM버전)에서 자주 사용할 것들만 다운 받아서 사용하는게 낫다.

 참고로 CentOS의 해당 버전에서 제대로 동작하는 Source 버전과 RPM 버전은 Mirror에서 제공해주므로, 그걸 사용하는걸 추천한다.




 인스톨이 끝나서 재부팅된 후에 나오는 화면이다.

 여기서 나온 창은 로그인 창으로 윈도우스에서 맨처음 나오면, 로그인 하도록 만드는 창과 동일한 창이라고 보면 된다.


 여기서 초기에 사용자가 설정이 되어 있지 않기 때문에 현재 있는 사용자는 root(시스템 관리자) 밖에 없게 된다.


 참고로 시스템 관리자는 보안을 위해서라도 패스워트를 반드시 입력하게 되어있다.(설치 과정에서 스크린 샷을 빼먹었지만, 설치하게 되어 있다.)


 


  1. https://www.centos.org/ [본문으로]
  2. http://mirror.symnds.com/distributions/CentOS-vault/ [본문으로]
Posted by JunkMam
,