서버 운영/APM 서버 구축

서버 환경 파일 수정 - php.ini, apache2.conf

씨실과 날실 2018. 11. 21. 10:00

[관련 게시물]

Ubuntu 20.04 LTS에서 APM 설치

2020/09/14 - [서버 운영/APM 서버 구축] - 우분투(Ubuntu) 20.04에서 APM 설치 - 아파치(Apache2 설치

2020/09/16 - [서버 운영/APM 서버 구축] - 우분투(Ubuntu) 20.04에서 APM 설치 - 마리아DB(MariaDB) 10.3 설치

2020/09/18 - [서버 운영/APM 서버 구축] - 우분투(Ubuntu) 20.04에서 APM 설치 - 마리아DB(MariaDB) 10.5 설치

2020/09/20 - [서버 운영/APM 서버 구축] - 우분투(Ubuntu) 20.04에서 APM 설치 - PHP 7.4 설치

2020/09/22 - [서버 운영/APM 서버 구축] - 우분투(Ubuntu) 20.04에서 APM 설치 - APM 설치 후 방화벽 설정

2020/09/24 - [서버 운영/APM 서버 구축] - MariaDB 10.4 이후의 계정 인증 관련 변화(unix_socket, mysql_native_password 인증 / 계정, 암호 및 전역 권한 정보 저장 테이블 변경 등)

2020/09/26 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 기본 환경 파일 설정 - apache2.conf 기본 설정

2020/09/28 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 기본 환경 파일 설정 - php.ini 기본 설정


Ubuntu 18.04 LTS에서 APM 설치

2018/11/09 - [서버 운영/APM 서버 구축] - Apache 서버 설치

2018/11/14 - [서버 운영/APM 서버 구축] - MariaDB 설치

2018/11/16 - [서버 운영/APM 서버 구축] - MariaDB 업그레이드 1

2018/11/16 - [서버 운영/APM 서버 구축] - MariaDB 업그레이드 2 - ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded

2018/11/16 - [서버 운영/APM 서버 구축] - MariaDB 업그레이드 3

2018/11/19 - [서버 운영/APM 서버 구축] - PHP7 설치

2018/11/21 - [서버 운영/APM 서버 구축] - 서버 환경 파일 수정 - php.ini, apache2.conf


Ubuntu 18.04 LTS에서 MariaDB 백업 및 업그레이드

2019/01/15 - [서버 운영/APM 서버 구축] - MariaDB & MySQL 백업과 복원 - Nextcloud 14

2019/06/27 - [서버 운영/APM 서버 구축] - MariaDB 업그레이드 (Upgrading from MariaDB 10.3 to MariaDB 10.4)


Ubuntu 18.04 LTS에서 PHP 버전 전환

2019/07/05 - [서버 운영/APM 서버 구축] - Apache와 Shell에서 PHP 버전 전환하기(How to Switch between Multiple PHP Version)


Ubuntu 18.04 LTS에서 phpmyadmin 설치 및 운용

2018/11/23 - [서버 운영/APM 서버 구축] - phpmyadmin 설치 - APT 패키지 관리자를 통한 설치

2019/06/18 - [서버 운영/APM 서버 구축] - APT 패키지 관리자를 통해 설치한 phpMyAdmin 업그레이드 방법(업그레이드 버전 4.9.0.1)

2019/07/01 - [서버 운영/APM 서버 구축] - phpMyAdmin 수동 설치 01 - 일반 설치

2019/07/03 - [서버 운영/APM 서버 구축] - phpMyAdmin 수동 설치 02 - 심볼릭 링크를 이용한 보안 접속

2019/06/16 - [서버 운영/APM 서버 구축] - phpMyAdmin 4.6.6deb5와 PHP 7.2 간 호환성 문제 해결 - Warning in ./libraries/sql.lib.php#613


XAMPP 설치 및 운용

2019/04/20 - [서버 운영/서버 구축 꾸러미] - XAMPP에 대하여(버전 7.1.28 / 7.2.17 / 7.3.4)

2019/04/22 - [서버 운영/서버 구축 꾸러미] - XAMPP for Windows 7.3.4 인스톨러 설치

2019/04/25 - [서버 운영/서버 구축 꾸러미] - XAMPP for Windows 설정

2019/06/03 - [서버 운영/서버 구축 꾸러미] - XAMPP 포터블(portable) 사용법

2019/06/05 - [서버 운영/서버 구축 꾸러미] - XAMPP for Linux 4.3.5 설치 및 사용법


서버 운영을 위한 관련 연재글

2018/11/07 - [리눅스/Ubuntu] - 방화벽 설정 - ufw

2018/11/12 - [서버 운영/버추얼박스(VirtualBox)] - 가상머신(Virtualbox) 내 서버 외부접속

2019/01/05 - [미디어위키/미디어위키 설치 및 관리] - 호스트 컴퓨터에서 가상머신 내 미디어위키 접속 및 작업을 위한 버추얼박스 포트포워딩 설정

2019/03/15 - [서버 운영/APM 서버 구축] - PHP 7.3으로의 업그레이드 및 사용 연기 권장 안내 - PHP Notice: compact(): Undefined variable:


[관련 웹문서]

https://mariadb.com/kb/en/authentication-plugin-unix-socket/#unix_socket


안녕하세요. 지난 글까지 우리는 LAMP를 설치하였습니다. 서버 구축의 9부 능선을 넘었다고 보시면 됩니다. 이제 남은 작업은 방화벽 설정과 서버 환경 파일을 적절하게 수정해주는 작업이 남았습니다.

방화벽은 서버를 실제로 서비스하지 않고 외부와 단절된 로컬호스트 전용으로 사용한다면 큰 의미는 없으므로 따로 설정해줄 필요는 없습니다. 그렇지만 테스트용이라도 서버를 인터넷에 연결해 서비스할 생각이라면 적절하게 설정해주어야 합니다.

그렇지만 서버 환경 파일 수정은 서버 구축을 위해서 반드시 거쳐야 하는 관문입니다. 이번에는 가장 필수적인 서버 수정 내용을 알려드리도록 하겠습니다.

우리가 다루게 될 서버 환경 파일은 php의 php.ini 파일과 apache2의 apache2.conf 파일입니다. 이 두 파일을 수정함으로써 우리는 서버의 환경을 제어할 수 있습니다.

이번 파일 수정은 지난 글에서 phpinfo.php 파일을 만들 때 사용한 vi 에디터가 아니라 GUI의 에디터인 gedit를 사용할 생각입니다.

리눅스 초보자 여러분들에게는 아무래도 vi보다는 gedit가 익숙하고 쉬울 것입니다. 그러나 이 gedit를 보다 손쉽게 사용하려면 지난 게시물 중 노틸러스 확장 프로그램인 nautilus-admin이 설치되어 있어야 합니다. 이번 연재 역시 이 확장 패키지가 설치되어 있다는 전제 하에 설명하도록 하겠습니다. 혹시 아직 설치하지 않으신 분들은 아래의 링크를 참고하시기 바랍니다.


php.ini

php.ini은 php를 컴파일 설치하지 않고 우분투 저장소에서 sudo apt install php 명령을 통해 설치한 경우, /etc/php/7.2/apache2에 위치해 있습니다.

gedit를 이용해 php.ini 파일을 수정해 봅시다.

노틸러스를 실행시켜 다른위치 - 컴퓨터 - etc 폴더 - php 폴더 - 7.2 폴더 - apache 폴더로 들어가 아래 그림과 같이 php.ini 파일 아이콘에 마우스를 올려두고 마우스 오른쪽 버튼을 눌러 메뉴를 띄우고 Edit as Administrator를 클릭해줍니다.


그러면 아래와 같이 인증 창이 뜹니다.


암호를 입력해줍니다.

그럼 아래와 같이 php.ini 파일의 내용이 나오게 됩니다.


여기서 필수적으로 수정해주어야 할 부분이 있습니다. 수정 방법은 예시로 하나만 보여드리겠습니다. 예시로 든 것 외의 수정 부분은 예시로 알려드린 방법을 참고하셔서 수정해주시기 바랍니다.

가장 먼저 php의 타임존을 수정해주어야 합니다. 일단 지난 글에서 만든 phpinfo.php를 웹브라우저에서 불러와 봅시다. 웹브라우저 주소창에서 http://localhost/phpinfo.php를 입력해 접속합시다. 그 상태에서 Ctrl+F를 누릅니다. 검색창에 Default timezone를 입력합니다. 그럼 아래와 같이 검색이 될 겁니다.


보니 Asia/Pyongyang이라고 설정되어 있네요. 이것을 gedit에서 검색해 수정해줍니다.


저장 버튼 옆의 세줄의 가로막대 버튼을 눌러 메뉴를 불러옵니다. 나타난 메뉴 중 찾기를 눌러줍니다.


gedit 우상단에 검색창이 뜹니다 그 창에 ;date.timezone =을 입력해줍니다. 그러면 해당 문자열 배경색이 반전되면서 검색될 것입니다. 이 부분을 date.timezone = Asia/Seoul로 수정해줍니다. 특히 ;(세미콜론)을 지워주시는 것을 잊어서는 안됩니다.

수정 후 저장해줍시다.

이제 터미널에서 다음의 명령을 입력하여 Apache 서버를 재시작해줍니다.

study@study-VirtualBox:~$ sudo service apache2 restart
이제 웹브라우저에서 http://localhost/phpinfo.php를 다시 불러들인 다음 아까처럼 Default timezone를 검색해봅시다.

이렇게 타임존 기본값이 바뀐 것을 확인할 수 있습니다.

[타임존]

date.timezone = Asia/Seoul

기본값

;date.timezone =

타임존 설정은 바꾸었으니 다른 것들도 같은 방식으로 수정해줍니다.

[업로드 설정]

- 필수 설정
file_uploads = On // 파일 업로드 사용 여부
upload_max_filesize = 2048M // 업로드 용량 제한 설정 (최대 2기가)
post_max_size = 2048M // php내 post 방식 업로드 최대 용량 (최대 2기가)

- 옵션 설정
max_execution_time = 0 // php 최대 실행시간 제한 (0 : 제한 없음)
max_input_time = -1 //  php 엔진이 데이터를 입력받는 최대 시간 (-1 : 제한 없음)
memory_limit = 2048M // php 메모리 사용량 제한

*  크기를 memory_limit > post_max_size > upload_man_filesize 순으로 설정


참고 - 해당 부분 기본값들

- 필수 설정
file_uploads = On
upload_max_filesize = 2M
post_max_size = 8M

- 옵션 설정
max_execution_time = 30
max_input_time = 60
memory_limit = 128M

// 줄은 여러분들에게 이해를 돕기 위해 적은 설명입니다. 따라서 // 부분은 적을 필요 없습니다.

업로드 용량을 수십MB 수준으로 작게 설정할 거라면 필수 설정만 수정해주면 됩니다. 그러나 대용량 업로드가 가능하게 해주려면 옵션 설정까지 크게 혹은 무제한 값으로 설정해주어야 합니다.

저는 서버를 실제 서비스용이 아니라 튜토리얼용/내부 로컬호스트 전용으로 세팅하여 이 연재를 이어가고 있으므로 서버가 지원하는 최대 용량을 설정하였습니다. 만약 실제로 서버를 서비스하려면 서버와 회선의 성능 및 접속에 따른 트래픽 부하 등을 종합적으로 고려하여  이 업로드 가능 용량을 적절히 제한해주어야 합니다.

그리고 대용량 업로드가 가능하려고 하려면 apache2.conf 파일도 수정해주어야 합니다. 이 내용은 해당 부분을 참고하시기 바랍니다.

[숏코드 사용]

short_open_tag = On


기본값

short_open_tag = Off

위 구문은 보통 php 구문을 <?php로 시작하는데 이것을 <? 로 단축시켜주는 설정값입니다. 과거 제로보드로 웹사이트를 구축한 경험이 있었던 분들은 <? ~ ?> 코드를 보셨을 겁니다. 사실 위 설정값이 아니라면 <?php ~ ?>가 되어야 했던 것이지요.


apache2.conf

apache2.conf 파일은 apache2를 컴파일 설치하지 않고 우분투 저장소에서 sudo apt install apache2 명령을 통해 설치한 경우, /etc/apache2에 위치해 있습니다.

[문서 인클루드]

# Make all PHP code look like HTML
AddType application/x-httpd-php .php4 .php .phtml .ph .inc .html .htm

위 내용은 HTML문서 등에 php문서를 불러올 수 있도록 설정해주는 설정값입니다. 과거 제로보드가 쓰이던 시절만 해도 HTML문서에 php문서를 불러오기 위해서 필수적인 설정이었습니다.

파일 하단에 추가해주면 됩니다.

[대용량 업로드]

<Directory />
   LimitRequestBody 2147483647
</Directory>

이것은 apache2 차원에서 파일 업로드 용량을 설정하는 구문으로 이 역시 문서 하단에 추가해주면 됩니다.

2147483647은 업로드 최대 용량인 2GB를 뜻합니다.

[phpmyadmin 접속]

#Include phpMyAdmin
Include /etc/phpmyadmin/apache.conf


- phpmyadmin 설치 전

#Include phpMyAdmin
#Include /etc/phpmyadmin/apache.conf

이 글 다음으로 연재될 내용이 phpmyadmin 프로그램입니다. 이 phpmyadmin은 MySQL이나 MariaDB 콘솔을 다루기 힘들어 하는 초보자들에게 웹접속을 통해 DB를 관리할 수 있도록 만든 프로그램입니다. 그런데 이 프로그램을 우분투 저장소를 통해 설치한다고 해서 바로 사용할 수 있는 것은 아닙니다. 접속이 가능해지려면 위 구문이 apache2.conf 파일에 추가되어 있어야 합니다.

Include ports.conf 아래에 위 구문을 추가해줍니다.

그러나 phpmyadmin이 설치 전에 미리 위 구문을 적어 놓으면 아파치 서버가 작동하지 않습니다. 따라서 phpmyadmin을 설치 후에 위 구문을 적어주고 아파치 서버를 재시작해주거나, 굳이 미리 적어 놓으려면 Include /etc/phpmyadmin/apache.conf 앞에 #을 적어 주어 주석처리를 하고 저장했다가 phpmyadmin 설치 후 #만 제거해주고 저장 후 아파치 서버를 재시작해주면 문제없이 접속할 수 있을 것입니다.

위 내용들을 다 수정한 후 터미널에 다음의 명령을 입력함으로써 Apache2 서버와 MariaDB를 재시작해줍니다.

study@study-VirtualBox:~$ sudo service apache2 restart
study@study-VirtualBox:~$ sudo service mariadb restart

이제 방화벽을 설정하면 최소한의 서버 구축은 완료됩니다.

방화벽 설정은 아래의 이전 글을 참고하시기 바랍니다.

그러나 서버 관리를 보다 쉽게 하기 위해서 보통 프로그램 하나를 더 설치하고는 하는데요. 바로 phpmyadmin입니다. phpmyadmin을 설치하면 서버의 구축은 완료된 것입니다. 조금만 더 힘내도록 합시다.