RadarURL
Skip to content
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

CentOS 에서의 웹서버 구축 방법을 요청하셔서 작성해 봅니다.

 

Ubuntu, CentOS, Fedora, ArchLinux 등에서 어떤 것이 제일 좋은 것이냐 하면,

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

 

#최종수정 2015-08-02

 


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

 

01.png

 

CentOS 6.6 의 yum 저장소내의 패키지 버전이 너무 낮아서 CentOS 7.1 기준으로 다시 작성합니다.

 

CentOS 7.0 이상 버전에서 아래의 방법으로 세팅할 수 있습니다.

 

 

 

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

 

 


 

1) 리눅스 버전체크

#uname -a
Linux laeldev 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

 

2) CentOS 버전체크

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

3) 하드용량체크

#df -h

02.png

 

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

 

 

4) 메모리 체크

#free -m

03.png

 

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

 

4-1) CPU 코어수 확인

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

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

04.png

 

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

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

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

 

5) 자잘한 업글

 

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

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

 

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

#yum update

 

 

6) 시스템 시간 설정

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

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

 

05.png

 

 

 

7) Hostname 설정

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

06.png

 

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

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

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

#vi /etc/hostname

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

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

 

적용한다.

#hostname -F /etc/hostname

 

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

07.png

 

 

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

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

08.png

 

 

웹서버 실행

#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 입력하고 엔터 입력해도 된다.
09.png

 

 

 

#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

 

10.png

 

 

변경사항 적용

#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

추가

11.png

 

 

extra 폴더 및 httpd-vhosts.conf 생성

12.png

 

 

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
 
13.png

 

 

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

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

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

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

# setenforce 0
# vi /etc/sysconfig/selinux

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

 

--

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

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

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

 

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

14.png

 

 

출처 : https://blog.lael.be/post/1721

?

List of Articles
번호 제목 글쓴이 날짜 조회 수
» 한번에 끝내는 CentOS 7.x (7.0 ~ 7.2) 웹서버세팅 (센토스 서버세팅) JAESOO 2016.10.24 155
162 리눅스(Linux) 디렉토리 구조 JAESOO 2016.10.19 100
161 ssh서버가 비밀번호를 거부했습니다. 다시 시도하십시오. JAESOO 2016.08.26 319
160 [리눅스] IP 설정 변경 하기 JAESOO 2016.08.26 185
159 리눅스 설치후 초기설정해야 할 것들 [2] JAESOO 2016.07.13 153
158 리눅스 설치후 초기설정해야 할 것들 [1] JAESOO 2016.07.13 143
157 쉘 프로그래밍을 이용한 시스템 관리 기법 JAESOO 2016.05.11 146
156 AIX 자주 쓰이는 관리 명령 모음 JAESOO 2016.05.11 310
155 AIX 시스템상의 core, SMT(Simultaneous Multi Threading) 수 확인하기 JAESOO 2016.05.11 228
154 리눅스 호스트명 변경 JAESOO 2016.05.11 106
153 AIX 서버 기초 JAESOO 2016.05.11 215
152 AIX Admin Study 교육 자료 JAESOO 2016.05.11 351
151 성능 엔지니어링 대한 접근 방법 (Performance tuning) JAESOO 2016.05.04 120
150 [AIX] 파일시스템 관리 (du, df) JAESOO 2016.05.03 212
149 IBM AIX Admin (사용자 DISK 관리) JAESOO 2016.05.03 115
148 [UNIX] 유닉스 기본명령어 JAESOO 2016.05.03 112
147 [AIX] 파일시스템 용량 늘리기 JAESOO 2016.05.03 190
146 유닉스 상에서 ls 출력물을 MB 단위로 출력해주는 옵션 JAESOO 2016.05.03 68
145 ls 명령시 날짜 전체가 보이도록 하기 JAESOO 2016.05.02 45
144 리눅스 logrotate 에서 로그파일 강제로 rotate 시키기 JAESOO 2016.03.30 251
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 Next
/ 10

PageViews   Today : 1,374   Yesterday : 2,131   Total : 19,323,195  /  Counter Status   Today : 309   Yesterday : 614   Total : 1,284,300
Site Info   Member : 63  /  Total documents : 1,220   New documents : 0  /  Total comments : 20

Edited by JAESOO

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소