한번에 끝내는 CentOS 웹서버세팅 (센토스 서버세팅)
CentOS 에서의 웹서버 구축 방법을 요청하셔서 작성해 봅니다.
Ubuntu, CentOS, Fedora, ArchLinux 등에서 어떤 것이 가장 좋은 운영체제 일까요?
본인에게 편한 운영체제가 가장 좋습니다. (일방적으로 하나의 좋은 것이 있다면 다들 그것만 쓰고 나머지는 도태되겠죠.) 참고로 저에겐 Ubuntu 가 편합니다.
현재 배포된 CentOS 버전은 아래와 같습니다.
참조 : https://ko.wikipedia.org/wiki/CentOS
이 글에서는 CentOS 7.0 또는 그 이상 버전에서 사용가능한 설정 방법을 설명하도록 하겠습니다.
참고로 운영체제 이미지는 다음의 위치에서 다운로드 가능합니다.
https://www.centos.org/download/
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
대략 다 더하면 50GB의 여유공간이 있다.
4) 메모리 체크
#free -m
전체 3832MB의 메모리중 현재 3669MB 가 사용가능하다.
4-1) CPU 코어수 확인
cpu정보 프로세스를 읽어서 processor 항목이 몇개인지 갯수를 셉니다.
#cat /proc/cpuinfo | grep processor | wc -l
위의 사진은 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
7) Hostname 설정
이 서버에 이름을 정하는 것이다. 이름을 잘 정해 두어야 나중에 다중 서버작업을 할 때 헷갈리지 않는다.
위의 뜻은 “li599-115 서버에 root 사용자” 라는 뜻이다.
글 쓰는 지금 단어를 빨리 생각해보았는데 newhistory 라는 것이 떠오르더라.
이제 이 서버는 newhistory 라는 이름으로 만들 것입니다.
#vi /etc/hostname
빈 파일일 건데(또는 기존 hostname이 쓰여있을것임.) 원하는 이름으로 바꾼다. newhistory
권장하는 단어는 이 서버에 연결될 대표 도메인이다. 예를 들어 lael.be 같은 것.
적용한다.
#hostname -F /etc/hostname
서버에 재 접속하면 적용된 것을 확인 할 수 있을 것이다.
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
웹서버 실행
#service httpd start
#touch /var/www/html/index.html
10) PHP 5.x 설치
#yum install 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
#/usr/bin/mysql_secure_installation
#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
변경사항 적용
#service mariadb restart
12) 계정생성 및 동작테스트
#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
추가
extra 폴더 생성 및 그 하위에 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
#chmod 701 /home/*
#chkconfig httpd on
#chkconfig mariadb on
#systemctl list-unit-files | grep httpd
#systemctl list-unit-files | grep mariadb
14) 리눅스 보안강화 모듈 해제하기
CentOS는 SELinux 라고 보안강화 모듈이 기본으로 설치 및 활성화 되어 있다.
이것이 당신의 웹 소프트웨어 업로드 및 파일 쓰기 기능을 막을 것이다.
쓸말은 많은데 그냥 끄도록 하자. 방화벽만 잘 설정하고 유지보수가 잘되는 좋은 웹소프트웨어를 사용한다면 보안에 큰 무리는 없을 것이다.
# setenforce 0
# vi /etc/sysconfig/selinux
파일 중간의 SELINUX=enforcing 을 SELINUX=disabled 로 변경 후 저장
--
Apache 와 PHP 와 MySQL 을 모두 사용하는 phpmyadmin 을 다운받아서 설치하신 후 로그인하면 됩니다.
phpmyadmin 은 전세계적으로 가장많이 쓰이는 데이터베이스 관리 오픈소스 프로그램이며
https://www.phpmyadmin.net/ 에서 다운받을 수 있습니다. 압축풀고 서버에 업로드 한 후 접속해보시면 됩니다.
phpmyadmin 로그인이 된다면 정상적으로 서비스 할 수 있는 상태입니다.
'Tip&Tech > 아마니&그누보드' 카테고리의 다른 글
Ubuntu 18.04 LTS 에서 웹서버(Apache + PHP + MySQL) 구성하기 (0) | 2020.09.18 |
---|---|
Ubuntu 18.04 LTS 운영체제 설치하는 방법 (0) | 2020.09.18 |
블루투스란 무엇일까? (블루투스의 의미와 버전별차이) (0) | 2020.09.04 |
IT용어 [ 방화벽] Firewall 이란 무엇일까? (0) | 2020.09.04 |
IT관련용어 [ OS ] 운영체제 란 무엇인가? (운영체제 종류와 특징) (0) | 2020.09.04 |