본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/리눅스

CentOS 7.2 웹서버 구축 (센토스 서버세팅)

by 미노드 2016. 8. 17.

Ubuntu, CentOS, Fedora, debian, redhat 등을 써보고 했지만 깊게 파들어가진 못했다.

 

주소 사용하던게 Ubuntu이기에 이번엔 CentOS를 가지고 놀아보자

 

웹서버 구축을 해볼건데 어떻게하는지 차근차근 정리해봐야겠다.

 

CentOS 운영체제에 관해서는 https://ko.wikipedia.org/wiki/CentOS 를 참조하면 된다.

 

사용하는 버전은 CentOS 7.2 버전이지만 7.0버전 위로 설치하려면 아래의 설치법을 따라해도된다.

 

 

1) 리눅스 버전체크

# uname -a

Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

2) CentOS 버전체크

# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

3. 하드용량체크

# df -h

 

 

4) 메모리 체크

# free -m

 

5) CPU 코어수 확인

# cat /proc/cpuinfo | grep processor | wc -l

 

위의 정보를 조합해본다면 사용가능한 용량은 14GB 중 약 12GB, 메모리 또한 2G중에 1.3G정도, CPU 코어수는 4코어가 되겠다.

 

6) yum 업데이트

yum 이 처음에 뭔지몰랐다. yummy~ 의 약자인가 싶었는데

Yellow dog Updater, Modified 의 약자란다. 의미는 중요치않다 이게 뭔지가 중요하지

데몬이라고도 할 수 있는데, 리눅스에서 사용 가능한 유틸리티들을 편리하게 설치할 수 있게끔 도와주는 도구다.

이 도구는 서버에 현재 최신버전의 패키지를 다운받을 수 있는 링크를 저장해뒀다가 명령어 입력시 해당 패키지가 있는곳으로 접속하여 다운로드, 설치를 할 수 있게 해주는 아주 좋은 도구다.

그러나 현재는 점점 과거가되고, 최신버전의 패키지가 나오더라도 서버에 저장된 링크는 자동으로 바뀌지 않기 때문에 yum을 갱신해줄 필요가 있다.

그러므로 OS설치 후에 갱신을 해주자.

추가적으로 이 명령어를 수행시 업데이트도 같이 가능하다.

 

# yum update

 

7) 시스템 시간 설정

한국 시간으로 작업하고싶다면 설정해야한다.

 

#cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime

 

시간 동기화 설정을 원한다면 해당글 참조

https://teck10.tistory.com/184

8) Hostname 설정

이 서버의 이름을 정하는 과정이다.

 

#vi /etc/hostname

 

여기로 가서 localhost라고 적힌 부분을 원하는 이름으로 변경해준 뒤에 서버를 재시작하면 변경된게 확인 가능하다.

 

 

서버이름이 appfirst로 변경된 모습

 

9) 방화벽 포트에서 80번 포트 허용하기

CentOS 7에서는 방화벽이 기본적으로 적용되어있는데 모두 차단이 기본값이다.

그러니 호스팅에 사용하기 위한 포트를 직접 열어줘야한다.

root 계정으로 로그인 한 다음 아래처럼 입력하면 80번 포트가 열린다.

특정 포트를 열고싶다면 80번 대신 다른번호를 적으면 된다.

 

# firewall-cmd --zone=public --add-port=80/tcp --permanent

 

입력 후 방화벽 설정 새로고침 하면 끝

 

# firewall-cmd --reload

 

10) Apache2 설치

현재 OS에서 이용할 수 있는 최신버전을 설치한다.

# yum install httpd

 

16년 8월 17일 현재 버전은 다음과 같다.

 

설치가 끝났다면 웹서버를 실행해본다.

# service httpd start

 

실행 후 웹브라우저를 통해 서버에 접속해보면 아파치 화면이 뜰 것이다. 바밤

 

 

기본으로 보이는 파일을 대체할 수도 있다.

# touch /var/www/html/index.html

 

11) PHP 설치

이 또한 yum으로 쉽게 가능하다.

수동은 잘 못찾겠으니 직접찾아보길

 

# yum install php

 

명령어 입력시 자동으로 아파치를 중단시키고 설정파일에 php를 등록후 재시작시킴

 

설치된 버전은 다음과 같다.

 

필요하지만 php에서 빠진 기능이 몇가지 있다. 설치하자 필요없다싶은건 안해도된다.

 

  - 이미지 처리모듈

 # yum install php-gd

  - 다국어 처리 모듈

 # yum install php-mbstring

  - db관련 모듈

 # yum install php-mysql

  - 기타등등

 # yum install php-ldap

 # yum install php-odbc

 # yum install php-pear

 # yum install php-xml

 # yum install php-xmlrpc

 # yum install php-mbstring

 # yum install php-snmp

 # yum install php-soap

 # yum install curl

 # yum install curl-devel

 

 추가로 설치하고 싶은 모듈이 있다면

 # yum search php-     라고 입력하여 설치가능한 패키지를 검색 후 설치하면된다.

 

설치 후 아파치를 재시작( service httpd restart)을 해주면 적용된 것이 확인가능하다.

 

12) Mysql 설치

Mariadb라고 쓰고 Mysql이라 읽는다.

다른DB는 맞지만 같은엔진으로 같은 쿼리가먹히는 db이므로 아주비슷하다만, 오라클쪽의 정책문제로 인해 이름만바꿔 나온것이 Mariadb다

 

# yum install mariadb

 

# yum install mariadb-server

2개를 설치해주자

 

그 뒤에 MariaDB 시작함

# service mariadb start

 

실행 후에 MariaDB의 환경설정을 해줘야한다.

# /usr/bin/mysql_secure_installation

[y/n] 중에서 대문자

로 쓰여져 있는 것이 기본값이다. root 비밀번호만 설정하고 나머지는 엔터(기본값 설정)를 입력하자.
Y 입력하고 엔터 입력해도 된다.

 

13) 기본 언어셋 설정

이 단계를 건너뛰면 DB가 latin1 으로 언어가 잡혀 DB에 데이터입력시 문제가 발생한다.

그러니 꼭 수정하자.

 

# vi /etc/my.cnf

 

로 들어간 뒤에 mysqld항목에 아래의 2줄을 추가 후 저장한다.

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

 

 

저장 후 db재시작 시키면 적용된다.

# service mariadb restart

 

14)  계정생성 및 동작테스트

계정 jaebae를 만들어 보겠다.

 

# adduser jaebae

 

계정이 만들어졌다.! 비밀번호 설정하자

 

# passwd jaebae

 

끝 ! 매우간단하다.

내가 계정생성 처음할땐 2일을 해맸었는데;; 이렇게 간단할수가 있나..

 

 

 

그리고 계정을 생성하고나면 /home 디렉토리에 계정에 대한 디렉토리가 생긴다.

기본적인 웹루트는 /var/www/html 이지만 home 디렉토리 안의 계정 폴더로 옮겨서 접근의 용이, 안정성을 높일 수 있다.

 

15) 웹사이트 Apache 환경설정 파일 작성

아파치 설정파일에 내용 추가를 해줘야한다

 

# vi /etc/httpd/conf/httpd.conf

 

설정파일을 열고 맨 아래 줄에 다음의 2줄을 추가하자

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

 

 

그다음 /etc/httpd/conf 경로에서 extra라는 폴더를 만든 다음 httpd-vhosts.conf 파일을 만들자

httpd-vhosts.conf 파일에는 다음과 같은 내용을 추가하자

 

<VirtualHost *:80>
  DocumentRoot "/home/laelbe/www"
  ServerName laelbe.com
  ServerAlias www.laelbe.com
 
  <Directory /home/laelbe/www/>
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
 
    require all granted
  </Directory>
 
</VirtualHost>

 

호스트를 더 추가하려면 아래처럼 하면 된다.

<VirtualHost *:80>
  DocumentRoot "/home/laelbe/www"
  ServerName laelbe.com
  ServerAlias www.laelbe.com
 
  <Directory /home/laelbe/www/>
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
 
    require all granted
  </Directory>
 
</VirtualHost>
 
<VirtualHost *:8145>
  DocumentRoot "/home/test1/www"
  ServerName test1.laelbe.com
 
  <Directory /home/test1/www/>
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
 
    require all granted
  </Directory>
 
</VirtualHost>

 

아래쪽 VirtualHost처럼 포트번호를 구분하여 서비스 할 수도 있다.

물론 방화벽에 해당 포트번호는 차단해제를 해줘야 하며, Listen 쪽에도 ip:포트번호 를 추가해줘야한다.

 

설정파일 변경 후 오타나 잘못된 설정구문이 있는지 확인해보면 좋다.

아래의 명령어로 검사해보자

# service httpd configtest

 

※ 아파치 재시작(새로운 확장모듈의 추가, 포트변경 등)과 아파치 새로고침 (새로운 virtualhost 추가나 삭제시에)

 새로고침은 기존 연결된 사용자는 그대로 두고 새로운 접속자부터 새로운 설정이 적용되게 하는 방법이다.

 즉, 서비스가 운영 중에 끊기지 않고 적용 가능한 방법이다.

 

아파치 재시작 # service httpd restart

아파치 새로고침 # service httpd reload

reload를 할지 restart를 할지는 상황에 따라서 바꿔가며 적용하자.

몇가지 경우를 가지고 설명해보자면

- 대용량 파일의 다운로드 중 restart가 되면 -> 다운로드가 중단됨, 파일이 깨짐, reload가 낳음

- 글쓰기, 내용 작성 후 쓰기 버튼 클릭 / 글, 첨부파일 업로드 중 restart 되면 -> 작성내용이 날아가버림, reload가 낳음

- 동작이 긴 PHP 파일 실행중 restart 되면 -> 중간 상태에서 끊어짐, reload가 낳음

 

그러니 운영중에는 reload를 선호한다만, 포트번호 변경이나 새로운 확장모듈의 추가 등 중요한 변경이 필요하다면 restart가 필요함

 

다시 아파치 설정분을 보자

 

권한 설정(/home/의 하위레벨의 폴더 권한을 701로 설정)

# chmod 701 /home/*

 

부팅시 자동실행

# chkconfig httpd on

# chkconfig mariadb on

 

확인하기

# systemctl list-unit-files | grep httpd

# systemctl list-unit-files | grep mariadb

 

 

enabled로 설정된 걸 보니 기막히게 설정이 잘되었다.

 

16) 리눅스 보안강화 모듈 해제하기

CentOS는 SELinux 라는 보안강화 모듈이 기본적으로 설치 및 활성화 되어있다.

이는 웹 상에서 업로드 및 쓰기 기능을 차단시키기에 끄는게 낳다.

 

# setenforce 0

 

# vi /etc/sysconfig/selinux

 

 파일 중간의 SELINUX=enforcing 을 SELINUX=disabled 로 변경 후 저장

 

 

 

이로써 웹 서버 설치는 끝이 났다.

고생많았다.

 

phpmyadmin을 쓰는 사람도 있을까봐서 다음 글로 올려놓겠다.

 

 

도움을 많이 받은 사이트 : https://blog.lael.be/post/1721