한번에 끝내는 CentOS 웹서버세팅 (센토스 서버세팅)

반응형

CentOS 에서의 웹서버 구축 방법을 요청하셔서 작성해 봅니다.
Ubuntu, CentOS, Fedora, ArchLinux 등에서 어떤 것이 가장 좋은 운영체제 일까요?

본인에게 편한 운영체제가 가장 좋습니다. (일방적으로 하나의 좋은 것이 있다면 다들 그것만 쓰고 나머지는 도태되겠죠.) 참고로 저에겐 Ubuntu 가 편합니다.

 


현재 배포된 CentOS 버전은 아래와 같습니다.

참조 : https://ko.wikipedia.org/wiki/CentOS

scr1108

 

이 글에서는 CentOS 7.0 또는 그 이상 버전에서 사용가능한 설정 방법을 설명하도록 하겠습니다.

 

참고로 운영체제 이미지는 다음의 위치에서 다운로드 가능합니다.

https://www.centos.org/download/

scr1108-3

Everything ISO : 운영체제 파일 + 패키지 파일 이 모두 담겨있음. 인터넷이 안되는 환경에서 사용할 수 있음.

Minimal ISO : 운영체제 파일. 패키지는 인터넷 연결을 통해 설치해야 함. 일반적으로 이 이미지를 CD 장치 또는 DVD 에 기록 후 사용합니다.

 


 

1) 리눅스 버전체크

#uname -a
Linux lael-centos 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

스크린샷 2015-08-03 오전 12.50.52

대략 다 더하면 50GB의 여유공간이 있다.

 

 

4) 메모리 체크

#free -m

스크린샷 2015-08-03 오전 12.51.41

전체 3832MB의 메모리중 현재 3669MB 가 사용가능하다.

 

4-1) CPU 코어수 확인

cpu정보 프로세스를 읽어서 processor 항목이 몇개인지 갯수를 셉니다.

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

스크린샷 2015-04-08 오전 12.42.54

위의 사진은 6 core 를 뜻합니다.

한번 정도는 다음의 명령어를 확인해 보세요.

#cat /proc/cpuinfo | grep processor
#cat /proc/cpuinfo

 

5) 자잘한 업글

 

yum란 Yellow dog Updater, Modified 을 뜻합니다. (노란강아지 업데이터 수정버전. 별뜻 없으며 작명이 이렇게 되었을 뿐.)

우리는 yum 라는 센트오에스에 내장된 프로그램을 이용해서 프로그램을 쉽게 설치/제거 할 수 있습니다.

 

패키지 목록 갱신 및 업데이트 체크.

#yum update

 

 

6) 시스템 시간 설정

이것을 하지 않으면 EST 시간을 불러올 것이다.

#ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

tzselect

7) Hostname 설정

이 서버에 이름을 정하는 것이다. 이름을 잘 정해 두어야 나중에 다중 서버작업을 할 때 헷갈리지 않는다.

v3

위의 뜻은 “li599-115 서버에 root 사용자” 라는 뜻이다.

글 쓰는 지금 단어를 빨리 생각해보았는데  newhistory 라는 것이 떠오르더라.

이제 이 서버는 newhistory 라는 이름으로 만들 것입니다.

#vi /etc/hostname

빈 파일일 건데(또는 기존 hostname이 쓰여있을것임.) 원하는 이름으로 바꾼다. newhistory

권장하는 단어는 이 서버에 연결될 대표 도메인이다. 예를 들어 lael.be 같은 것.

 

적용한다.

#hostname -F /etc/hostname

 

서버에 재 접속하면 적용된 것을 확인 할 수 있을 것이다.

v4

 

8)방화벽 포트에서 http 80  허용하기

당신의 서버에 방화벽이 이미 설치되어 있을 수도 있고, 설치되어 있지 않을 경우도 있다.

클라우드 사업자에 따라서 기본 패키지로 설치하는 경우가 많으니 이 글에서는 방화벽 설정까지 서술하도록 하겠다.

#yum install firewalld

설치되지 않았다면 설치 안내 메시지가 출력되고, 설치되어 있다면 이미 최신버전이 설치되어 있다는 메시지가 출력된다.
 

CentOS 7 에는 방화벽 기본값이 모두 차단으로 되어 있고 허용할 포트를 따로 등록해 주어야 한다.

root 로그인 상태에서

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

 

방화벽 설정 새로고침

#firewall-cmd --reload

 

9) Apache2 설치

#yum install httpd

CentOS 7.1 에서는 Apache 2.4.6 이 설치된다.

 

버전체크

#httpd -v

스크린샷 2015-08-04 오전 12.11.47

 

웹서버 실행

#service httpd start

 

확인해본다.
http://256.123.213.213 (서버의아이피)
웹브라우져에 기본 설명페이지가 뜨면 성공.

 

기본 파일을 대체한다.
#touch /var/www/html/index.html

 

10) PHP 5.x 설치

#yum install php
자동으로 아파치 중단시키고  설정파일에 php를 등록시키고 재 구동시킨다.(바로 적용됨)

CentOS 7.1 에서는 php 5.4.16 이 설치된다.

기타 주로 사용되는 모듈을 설치한다.

 

 

- 이미지처리 모듈

#yum install php-gd

 

- 다국어 처리 모듈

#yum install php-mbstring

 

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

#yum search php-

라고 입력해서 설치가능한 패키지를 검색후 install 하도록 하자.

 

11) Mysql 설치

 

#yum install mariadb
#yum install mariadb-server

MariaDB 5.5.41 버전이 설치된다.

 

MariaDB 시작

#service mariadb start

 

MariaDB 기본 환경설정
#/usr/bin/mysql_secure_installation
 
대문자로 쓰여져 있는 것이 기본값이다. root 비밀번호만 설정하고 나머지는 엔터(기본값 설정)를 입력하자.
Y 입력하고 엔터 입력해도 된다.
스크린샷 2015-08-04 오전 12.25.30

 

 

#yum install php-mysql

php와 mysql 의 연동모듈 설치.

 

 

11 - 2) 기본 언어셋 설정(중요)

이 단계를 건너뛰면 DB가 latin1 으로 생성되며 추후 DB작업에 문제가 생길 수 있다.

#vi /etc/my.cnf

 

[mysqld] 항목에 다음 2 줄을 추가한다.

 

character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

 

스크린샷 2015-08-04 오전 12.28.11

변경사항 적용

#service mariadb restart
 
 
 

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

laelbe 사용자 계정 생성
 
#adduser laelbe
 
 
 
비밀번호 설정
#passwd laelbe
 
 
보통 웹루트는 홈디렉토리에 하지 않습니다.
저는 주로 www 디렉토리를 사용합니다.사용자변경 후 www 디렉토리를 생성하고 빠져나오기
#su -l laelbe
#mkdir www
#exit

 

 

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

다음의 내용을 작성한다.

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

 

파일 맨 밑줄에 다음의 Include 구문 추가.  VirtualHost 설정 파일을 따로 분리합니다.

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

추가

스크린샷 2015-08-04 오전 12.34.19

 

extra 폴더 생성 및 그 하위에 httpd-vhosts.conf 파일 생성

스크린샷 2015-08-04 오전 12.35.02

 

httpd-vhosts.conf
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<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>

 

호스트를 추가할 경우 위의 httpd-vhosts.conf 파일 하단에 추가하시면 됩니다.

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
<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/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>

아파치 설정파일 구문 및 동작검사

오타나 잘못된 설정구문이 있는지 미리 확인해 본다.

설정파일을 변경했으면 반드시 이 명령어를 통해 문법을 검사하도록 하자.

#service httpd configtest

 

아파치 새로고침 (새로운 virtualhost 추가나 삭제시에)

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

서비스가 운영중인 상황에서는 되도록 restart 대신 reload 를 사용하도록 하자.

#service httpd reload

 

reload 를 할지 restart 를 할지는 엔지니어의 판단에 맡긴다. 몇가지 크리티컬한 상황은 다음과 같다.

1. 대용량 파일의 다운로드 중 restart 되면 -> 다운로드가 중단됨. 파일이 깨짐.

2. 글쓰기, 내용 작성 후 쓰기 버튼 클릭 / 글 첨부파일 업로드 중 restart 되면 -> 작성된 내용이 날아가게 됨.

3. 동작이 긴 PHP 파일 실행중 restart 되면 -> 중간 상태에서 끊어짐.

중단 없이 restart 하는 방법도 있는데, 난이도가 많이 올라가므로 따로 다루지는 않는다.

 

아파치 재시작 (새로운 확장모듈의 추가, 포트변경 등)

모든 연결을 강제 종료하고 서비스를 stop 한 후에 다시 start 하는 동작이다. restart = stop & start

주의 : 위의 configtest 에서 실패한 상태에서 restart를 하면 httpd 가 stop 된 후에 start 되지 않는다. 즉 서비스 중단 상태가 된다.

#service httpd restart

 

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

 

부팅시 자동실행
#chkconfig httpd on
 
#chkconfig mariadb on
 
 
확인하기
#systemctl list-unit-files | grep httpd
 
#systemctl list-unit-files | grep mariadb
 
스크린샷 2015-08-04 오전 12.52.31

 

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

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

이것이 당신의 웹 소프트웨어 업로드 및 파일 쓰기 기능을 막을 것이다.

쓸말은 많은데 그냥 끄도록 하자. 방화벽만 잘 설정하고 유지보수가 잘되는 좋은 웹소프트웨어를 사용한다면 보안에 큰 무리는 없을 것이다.

# setenforce 0
# vi /etc/sysconfig/selinux

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

 

--

Apache 와 PHP 와 MySQL 을 모두 사용하는 phpmyadmin 을 다운받아서 설치하신 후 로그인하면 됩니다.

phpmyadmin 은 전세계적으로 가장많이 쓰이는 데이터베이스 관리 오픈소스 프로그램이며

https://www.phpmyadmin.net/ 에서 다운받을 수 있습니다. 압축풀고 서버에 업로드 한 후 접속해보시면 됩니다.

 

phpmyadmin 로그인이 된다면 정상적으로 서비스 할 수 있는 상태입니다.

스크린샷 2015-08-04 오전 1.00.03

반응형
LIST

댓글()