728x90

원하는 Server-Side 언어가 PHP, JSP, node.js 에 따라서 설치하는 사항이 조금씩 다르다.

CentOS7 에서 Apache Web서버와 PHP 7.3 을 설치하는 방법이다.

 

# 설치 확인
rpm -qa | grep httpd
rpm -qa | grep php
rpm -qa | grep MariaDB
rpm -qa | mysql

 

# PHP 설치여부 확인
rpm -qa | grep php
yum list installed | grep php

 

## 설치된 것 한꺼번에 지우기 (잘못 설치한 경우)
rpm -qa | grep httpd >list
rpm -qa | grep php >list

# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '' <list)

 

PHP 설치

#Step 1 – Prerequsitis
yum -y install epel-release

#Step 2 - Repository 설치
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm


#Step 3 - yum Utilities Package 설치
yum -y install yum-utils

#Step 4 – Install PHP and PHP-FPM
# Disable repo for PHP 5.4
yum-config-manager --disable remi-php54
yum-config-manager --enable remi-php73

yum -y install --enablerepo=remi-php73 httpd mod_ssl php php-zip php-fpm php-common php-opcache php-curl
yum -y install --enablerepo=remi-php73 php-devel php-gd php-imap php-ldap php-mysql php-mysqlnd php-pdo
yum -y install --enablerepo=remi-php73 php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-mbstring   
yum -y install --enablerepo=remi-php73 php-mcrypt php-soap php-tidy curl curl-devel php-libwww-perl
yum -y install --enablerepo=remi-php73 ImageMagick libxml2 libmxl2-devel mod_fcgid php-cli httpd-devel    
yum -y install --enablerepo=remi-php73 php-intl php-pspell wget php-openssl unzip mc git     

# PHP 설치버전 확인
php -v

 

# 설치된 PHP Package 확인
rpm -qa | grep php

 

## 보안설정
sudo chmod 640 /etc/httpd/conf/httpd.conf
sudo chown root:root /etc/httpd/conf/httpd.conf
sudo chmod 640 /etc/php.ini
sudo chown root:root /etc/php.ini

sudo chown -R apache:apache /var/www/html
sudo chmod -R 755 /var/www/html

 

#Step 4 httpd.conf 파일 수정

vi /etc/httpd/conf/httpd.conf
ServerName localhost

# 불필요한 Methods 차단 설정 : method 허용은 GET, POST 만 허용
# Directory 태그를 사용하면 Directory 별로 모두 제한을 걸어줘야 하므로
# URL pattern 을 이용하여 일괄적으로 제한하는 방법
<Location />
   <LimitExcept GET POST>
       Order deny,allow
       Deny from all
   </LimitExcept>
</Location>

<Directory "/var/www/html">
    Options +FollowSymLinks -Indexes
    AllowOverride All
    Require all granted
    <LimitExcept GET POST>
      Order deny,allow
      Deny from all
    </LimitExcept>
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

# 서버 정보 노출 방지
ServerTokens Prod
ServerSignature Off 

# Trace Method 처리
TraceEnable off

ErrorDocument 400 /error.html
ErrorDocument 401 /error.html
ErrorDocument 402 /error.html
ErrorDocument 403 /error.html
ErrorDocument 404 /error.html
ErrorDocument 405 /error.html
ErrorDocument 408 /error.html
ErrorDocument 500 /error.html
ErrorDocument 501 /error.html
ErrorDocument 502 /error.html
ErrorDocument 503 /error.html

저장하고 나온다.

# Apache HTTPOXY 취약점 방지
echo "RequestHeader unset Proxy early" >> /etc/httpd/conf/httpd.conf

 

# Step 5 : Configure PHP-FPM

vi /etc/php.ini
cgi.fix_pathinfo=0
short_open_tag = On
post_max_size = 60M  ;// 8M 으로 되어 있었음.
upload_max_filesize = 50M ;// 기본 2M 으로 되어 있었음

;PHP 버전정보 노출 방지
expose_php=Off

date.timezone ="Asia/Seoul"

;PHP에서 세션은 일단 생성 된 뒤에, 가비지 콜렉터 관리로직에 의해 소멸된다.
session.gc_probability = 1
session.gc_divisor = 1
;이값이 100이면 1/100 즉 1%의 확률로 가비지콜렉션이 실행된다.
;1이면 정확하게 유효기간이 넘은 데이타가 삭제될 것이다.
session.gc_maxlifetime = 3600

;세션과 쿠키를 동시에 사용
session.use_cookies = 1

;PHP 시작과 동시에 세션 사용(1), 사용하지 않음(0)
session.auto_start = 0

# 저장하고 나온다.
# 반드시 추가구현해야 문제없이 동작한다.
cd /var/www/html/
vi .htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{THE_REQUEST} !^(POST|GET)\ /.*\ HTTP/1\.1$
RewriteRule .* - [R=405,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ error.html?/$1 [QSA,PT,L]
</IfModule>

 

### 시간 동기화
yum -y install rdate

crontab -e
00 00  * * * /usr/bin/rdate -s time.bora.net && /sbin/clock -w

#크론탭 재시작
service crond restart

 

#crontab 설치 여부 확인
ps -ef | grep cron

# 서비스 활성화
systemctl enable httpd

# 서비스 시작
systemctl start httpd

systemctl stop httpd
systemctl restart httpd
systemctl status httpd

 

위 설치 스크립트에서 추가 설정을 하면 PHP-FPM 설정이 가능하다. 그 내용은 생략한다.

이것으로 윈도우10 에서 CentOS7 을 Virtual Box로 설치하여 Web서버를 운영하는 방법에 대한 설명을 마친다.

블로그 이미지

Link2Me

,