본문 바로가기
Linux

APM(Apache2+Php7.2+Mysql)설정 및 세팅(Ubuntu 18.04)

by mizuiro 2019. 4. 29.

이번에는 서버를 운영하기 위한 설정을 준비 해보도록 하겠습니다.

서버를 위해 apche, php, mysql을 설치해야 합니다. 단, 저는 Ubuntu 18.04버전에 맞추어 설치하였습니다.

 

1. 운영체제 최신버전 업데이트

 

프로그램을 설치하기 전에 운영체제의 프로그램이 최신버전이 되어야 설치/제거가 쉬워집니다.

$sudo su - root

root로 미리 들어가면 설치시 코드의 길이가 줄어들어 편해 집니다. 

위의 코드를 입력하고 현재 계정의 비밀번호를 입력하면 root로 올라가게 되니 참고 해놓아야 합니다.

 

#apt update
#apt upgrade
#apt autoremove

위의 세개의 명령어로 프로그램을 업데이트 하였습니다. 마지막의 코드는 업데이트 중 찌꺼기 파일을 없애는 것으로

실행 하지 않아도 문제는 없습니다.

 

2. 자주 쓰는 프로그램 설정 (참고)

 

-Git : 설치 방법 참고

#apt install git
#git version

#git config --global user.name "Username"

#git config --global user.email user_email_id@email.com

Git설치 방법1     Git설치 방법2 

 

마지막 줄은 git에 사용할 아이디와 이메일 주소를 넣어주면 됩니다.

 

3. Apache2 설치

 

#apt install apache2
#apache2 -v
#apt remove --purge apache2 //설치 잘못 되었을시 하는 코드(php나 mysql에도 가능)
#apt clean

위의 줄은 아파치의 버전을 확인하는 코드 입니다.

 

FireFox에 들어가서 localhost로 주소창에 검색하여 다음과 같은 창이 나오면 정상적으로 설치된 것이다.

 

#apt install ssl-cert
#apt install certbot

https 인증서 관련 프로그램 및 무료 인증서 발급 프로그램 설치

 

#a2enmod rewrite
#a2enmod headers
#a2enmod ssl
#a2dismod -f autoindex

Apache2 Module 활성화 : 이 코드를 함으로써 워드프레스를 포함한 많은 프로그램을 구동할 수 있게 됩니다.

 

#service apache2 restart

변경사항 저장 및 적용

 

#apache2ctl -S

Apache2 환경설정 문법검사

-> 만약 문법검사 시 오류가 있다면 어디를 고쳐라고 지시해주므로 지시하는 데로 따라 하기만 하면 됩니다.

 

 

#vi /etc/apache2/conf-available/charset.conf

기본 언어셋 변경 : 한글과 기존 언어가 bite가 맞지 않아 오류가 생길 수 있습니다.

그러므로 다음과 같이 변경해야 합니다.

 

AddDefaultCharset의 옆에 UTF-8을 입력하고 저장해 줍니다.

 

# vi /etc/apache2/conf-available/security.conf

추가보안 설정 -> Apache패키지에 코드는 입력되어 있으므로 주석(#)만 지우면 실행이 됩니다.

 

Directory줄을 주석 제거
ServerTokens과 Serversignature 주석 제거
TraceEnable, Header 주석 제거

 

추가 보안 패치(Web Access가 되어서는 안될 파일들의 접근 제어)

# vi /etc/apache2/apache2.conf
# deny file, folder start with dot
<DirectoryMatch "^\.|\/\.">
    Require all denied
</DirectoryMatch>
 
# deny (log file, binary, certificate, shell script, sql dump file) access.
<FilesMatch "\.(?i:log|binary|pem|enc|crt|conf|cnf|sql|sh|key|yml|lock|gitignore)$">
    Require all denied
</FilesMatch>
 
# deny access.
<FilesMatch "(?i:composer\.json|contributing\.md|license\.txt|readme\.rst|readme\.md|readme\.txt|copyright|artisan|gulpfile\.js|package\.json|phpunit\.xml|access_log|error_log|gruntfile\.js|bower\.json|changelog\.md|console|legalnotice|license|security\.md|privacy\.md)$">
    Require all denied
</FilesMatch>
 
# Allow Lets Encrypt Domain Validation Program
<DirectoryMatch "\.well-known/acme-challenge/">
    Require all granted
</DirectoryMatch>
 
# Block .php file inside upload folder. uploads(wp), files(drupal), data(gnuboard).
<DirectoryMatch "/(uploads|default/files|data|wp-content/themes)/">
    <FilesMatch ".+\.php$">
        Require all denied
    </FilesMatch>
</DirectoryMatch>

위의 코드를 실행해여 <FilesMatch “^\.ht”> 구문 다음에 추가한다

->vi 에디터 열자마자 199G (대문자) 입력하면 바로 이동

 

# service apache2 restart

변경사항 저장 및 적용

 

기본 사이트 추가 설정

 

# vi /etc/apache2/sites-available/000-default.conf

ServerName localhost를 추가합니다.

 

# mv /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/000-default-ssl.conf

HTTPS 기본사이트 켜기

 

# vi /etc/apache2/sites-available/000-default-ssl.conf

코드 실행 후 맨 윗줄 ServerAdmin 위에 ServerName localhost를 추가합니다.

 

# a2ensite 000-default-ssl.conf

설정 확인 (사이트 게시)

 

# service apache2 reload

설정 설치 및 적용

 

아파치 설치 및 모듈 추가 및 index 파일 변경-1

아파치 설치 및 모듈 추가 및 index 파일 변경-2

 

# vi /var/www/html/index.html

이 파일을 수정하면 (http://localhost)의 내용이 수정이 됩니다.

더 자세한 사항의 위의 링크를 참조하길 바랍니다.

 

 

4. PHP 7.2 설치

 

# apt install php
# php -v

php를 설치하고 버전을 확인한다. 현재 2019년 04월을 기준으로 버전은 7.2.17버전이다.

시스템이 Apache2가 설치되어 있어 Apache2 PHP module (libapache2-mod-php7.2) 도 같이 설치되어지고 적용된다.

 

기타 사용되는 추가 php 모듈

#apt install php-mbstring  //다국어 처리모듈
#apt install php-gd  //이미지 처리모듈
#apt install php-curl php-xml  //원격지 정보 불러는 모듈 (워드프레스 등에서 쓰임)
#apt install php-bcmath  //수학 연산 확장 모듈
#apt install php-oauth // OAuth 인증 모듈 (클라우드 API 등 연동서비스에서 쓰임)
#apt install php-mysql  //MySQL 연동 모듈 (mysqli, pdo-mysql 관련 함수를 사용할 수 있게됨)
#apt install composer  //Composer 설치 (PHP 패키지 의존성 관리 프로그램)

 

PHP 보안 설정

너무 많은 확장자를 해석해주므로 보안에 취약합니다. 그래서 불필요한 확장자의 접근을 제한하여 줍니다.

 

#vi /etc/apache2/mods-available/php7.2.conf
<FilesMatch ".+\.ph(p3|p4|p5|p7|ar|t|tml)$">  
            Require all denied
</FilesMatch>

코드를 실행해준 후 위의 내용을 다음 아래과 같이 추가하여 줍니다.

 

#service apache2 restart

Php가 Apache2의 모듈로 동작하는 방식이므로

Php에서 변경사항이 생기면 Apache를 재시작하여 적용시켜 주어야 합니다.

 

PHP Default timezone 설정하기

 

PHP에서 사용하는 시간에 관한 기준을 정하는 것입니다. 계정에 설정되어 있는 시간과 다르니 맞추어 주어야 합니다.

 

#vi /etc/php/7.2/apache2/php.ini

코드 입력후 실행시켜 /timezone' 엔터를 누릅니다.

 

위와 같이 date.timezone에 주석 ';'을 제거한 후 Asia/Seoul을 입력하고 저장합니다.

 

#service apache2 restart

변경된 사항을 적용합니다.

 

바뀌었는지 확인하기 위해 phpinfo파일을 생성하여 확인하여 봅니다.

# echo "<?php phpinfo(); ?>" > /var/www/html/myphpinfo.php
http://서버의 IP주소/myphpinfo.php로 접속하여 확인
단, IP주소 확인은 ifconfig로 실행하여 inet 뒤의 숫자가 IP주소

설정이 이렇게 되어있다면 성공한 것입니다.

 

5. Mysql 설치

 

#apt install mysql-client
#apt install mysql-server
##mysqladmin version

위의 코드로 Mysql을 설치할 수 있습니다.

 

데이터 베이스를 쓰기 위한 초기화 작업

 

/usr/bin/mysql_secure_installation

코드를 실행하여 passowrd strength는 0이나 1로 하고 비밀번호를 설정하여 줍니다.

그런다음 모든 것을 y로 입력하여 주면 됩니다.

 

기본 언어셋 설정

-초기 DB가 latin1로 설정되어 있기 때문에 확장자를 바꾸어서 오류가 나지 않도록 한다

#vi /etc/mysql/mysql.conf.d/override.cnf
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
 
query_cache_type = ON
query_cache_limit = 4M
query_cache_size = 64M
 
sql_mode = NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

위 코드를 실행하고 아래처럼 내용을 입력하여 저장한다

 

Mysql 환경설정 문법 테스트

 

# mysqld --verbose --help | grep configtest
# service mysql restart
# mysqladmin variables | grep character

위의 코드로 변경사항을 확인하고 적용합니다.

 

데이버메이스 웹 관리 프로그램 phpmyadmin 설치

 

#apt install phpmyadmin
#apt remove phpadmin //삭제시 사용

위 코드를 실행 하면 비밀번호가 나오는데 그것을 설정하고 실행합니다

localhost/phpmyadmin으로 접속하여 설정한 비밀번호로 로그인하여 봅니다

단 접속이 안될때

 

#vi /etc/apache2/apache2.conf

이 코드 실행 후 실행 파일 내용 맨 아래에 

Include /etc/phpmyadmin/apache.conf를 추가하여 줍니다.

#service apache2 restart

코드를 실행하면 브라우저에 다시 접속이 가능하여 진다.

전체 설치 방법 및 다른 상세 항목!!!!! 

Mysql 설치 방법  

Mysql 패스워드 방법 

 

'Linux' 카테고리의 다른 글

우분투 명령어 살펴보기  (0) 2019.05.06
DNS(Domain Name System)  (0) 2019.04.29
VM+Ubuntu설치 및 기본 세팅  (0) 2019.04.29
linux 명령어 -디렉토리 권한관리  (0) 2019.03.25
linux 명령어 - 파일내용 확인출력  (0) 2019.03.25