서버 운영/APM 서버 구축

우분투 20.04 APM 서버 기본 환경 파일 설정 - apache2.conf 기본 설정

씨실과 날실 2020. 9. 26. 09: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 20.04에서 설치한 Apache2 서버 주요 설정 파일 원문

2020/09/30 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 주요 환경 파일 목록

2020/10/05 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 주요 환경 파일 원문 - Apache2

2020/10/07 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 주요 환경 파일 원문 - PHP 7.4 - php.ini

 

Ubuntu 20.04에서 설치한 Apache2 서버 주요 설정 파일 내 지시어 설명

2020/10/09 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] apache2.conf의 기본값에 사용된 지시어 설명

2020/10/11 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] ports.conf 의 기본값에 사용된 지시어 설명

2020/10/13 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] envvars의 기본값에 사용된 지시어 설명

2020/10/15 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] security.conf의 기본값에 사용된 지시어 설명

2020/10/17 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] 000-default.conf의 기본값에 사용된 지시어 설명

2020/10/19 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] default-ssl.conf의 기본값에 사용된 지시어 설명


Ubuntu 20.04에서 phpMyAdmin 설치 및 설정

2021.02.20 - [서버 운영/APM 서버 구축] - 우분투 20.04에서 phpMyAdmin 설치 01 - 저장소 설치

2021.03.15 - [서버 운영/APM 서버 구축] - 우분투 20.04에서 phpMyAdmin 설치 02 - Apache 서버 관리자를 위한수동 설치(버전 5.1.0 기준)

2021.03.17 - [서버 운영/APM 서버 구축] - 우분투 20.04에서 phpMyAdmin 설치 03 - 보안강화 작업

2021.03.19 - [서버 운영/APM 서버 구축] - phpMyAdmin 설치 04 - 웹호스팅 사용자를 위한 수동 설치(버전 5.1.0 기준)

2021.03.21 - [서버 운영/APM 서버 구축] - phpMyAdmin 설치 05 - setup 페이지를 통한 구성 파일 생성

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

 

 

 

APM(Apache2, PHP 7, MariaDB) 서버를 구축하고자 할 때 단순히 설치한다고 끝이 아닙니다. APM 서버가 정상적으로 작동하기 위해서는 적절한 설정 작업이 필요합니다.

여기서는 우분투에 설치된 Apache2의 환경설정 파일 apache2.conf를 설정하는 가장 기본적인 방법에 대해 적도록 하겠습니다.

우분투 20.04에 설치된 PHP 7.4의 환경설정 파일 php.ini을 설정하는 가장 기본적인 방법은 아래 링크를 참고하시기 바랍니다.

 

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

 

이하의 내용은 아래 링크의 글을 Ubuntu 20.04에 구축한 APM 서버에 맞춰 수정, 증보한 개정판입니다.

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

본 글은 지난 번 글과 달리 환경 설정 파일의 모든 수정 작업을 gedit와 같은 GUI 에디터가 아닌 터미널에서 수행하는 과정을 온전히 담았습니다.

이는 리눅스 초심자들이 터미널을 이용한  CLI(명령어 입력 인터페이스)에 익숙해지도록 도와드리기 위해서입니다. 여기서 배운 명령들은 다른 텍스트 파일 편집 작업에서도 손쉽게 응용하여 작업 효율성을 증대할 수 있을 것입니다.

아직 터미널 작업에 두려움이 있으신 분들은 이전 글을 참고하셔서 본 글대로 수정하셔도 됩니다.

 


 

 

apache2.conf

/etc/apache2/apache2.conf

 

 

study@study-VirtualBox:~$ cd /etc/apache2
study@study-VirtualBox:/etc/apache2$ ls -F
apache2.conf     envvars          mods-enabled/     sites-enabled/
conf-available/  magic            ports.conf
conf-enabled/    mods-available/  sites-available/
study@study-VirtualBox:/etc/apache2$ sudo cp apache2.conf apache2_original.conf
[sudo] study의 암호: 
study@study-VirtualBox:/etc/apache2$ ls -F
apache2.conf           conf-enabled/  mods-available/  sites-available/
apache2_original.conf  envvars        mods-enabled/    sites-enabled/
conf-available/        magic          ports.conf
study@study-VirtualBox:/etc/apache2$ ls -F | grep apache2
apache2.conf
apache2_original.conf
study@study-VirtualBox:/etc/apache2$ 

 

 

 

가장 먼저 Apache2의 설정 파일 디렉터리로 이동해 어떤 디렉터리와 파일들이 있는지 확인해봅시다.

그 다음 할일은 Apache2의 전역 기본 환경 설정 파일 apache2.conf을 수정하기 전에 (sudo) cp 명령을 이용해 백업해둡니다.

ls 명령어로 파일이 제대로 생성되었는지 확인합니다.

 

 

study@study-VirtualBox:/etc/apache2$ cat -n apache2.conf

이제 apache2.conf 파일의 내용을 위 명령을 통해 확인해보도록 합시다.

cat

cat은 파일을 연결하고 파일 내용을 표준출력(일반적으로 터미널)에 표시하는 명령입니다. 만약 지정 파일이 없거나 -로 설정된 경우 표준 입력에서 내용을 읽어들입니다.

cat은 도움말과 버전 표시 기능을 제외하고 도합 10가지 기능을 지원하는 각 옵션들이 존재하는데 그중에 -n 옵션은 해당 파일의 모든 행 앞에 각 행의 순서를 숫자로 표시합니다.  

apache2.conf를 포함하여 Apache2의 주요 설정 파일의 원본과 설정 파일의 주요 도움말은 아래 링크에 따로 작성하도록 하겠습니다.

 

 

서버 이름(ServerName) 설정

먼저 서버명을 설정해주어야 합니다. 일반적으로 ServerRoot 아래에 적습니다.

 

study@study-VirtualBox:/etc/apache2$ sed -n '67, 71p' apache2.conf
# Do NOT add a slash at the end of the directory path.
#
#ServerRoot "/etc/apache2"

#
study@study-VirtualBox:/etc/apache2$ 

 

69 #ServerRoot "/etc/apache2"
70
71 #

 

70 ServerName localhost

위와 같이 70번째 줄쯤에 ServerName을 설정해주도록 합시다.

설정 형식은 두 가지 방식입니다. IP 주소를 입력하거나 아니면 전체 도메인 주소(FQDN - Fully Qualified Domain Name)을 적어줍니다.

전체 도메인 주소(FQDN - Fully Qualified Domain Name)

전체 도메인 주소(FQDN)는 https:// 등의 프로토콜 부분을 제외한 모든 주소를 의미하며 호스트명.도메인명으로 구성되어 있습니다.

 

ServerName 172.217.26.35

또는

ServerName www.google.co.kr

 

로컬호스트의 경우 가상호스트를 설정하지 않는 한 굳이 이 설정을 입력할 필요는 없습니다. 적을 땐 다음과 같이 적어줍니다.

ServerName 127.0.0.1

또는

ServerName localhost

 

지금까지 제 블로그에서 파일 편집 프로그램으로 gedit나 vi(m)을 다룬 적이 있습니다.

 

이번 글에서는 아래를 보면 알 수 있듯 파일 내용을 편집할 때 gedit같은 GUI 에디터나 Vi(m)이나 nano 같은 CUI 에디터가 아닌 전혀 새로운 형태의 파일 편집기인 sed를 다룹니다.

gedit나 Vi(m), nano 등은 사용자가 파일의 내용을 보면서 편집하는 대화식 편집기였다면 sed는 터미널에서 파일을 인자로 받아 명령어를 통해 내용을 편집하는 스트림 편집기입니다.

 

 

study@study-VirtualBox:/etc/apache2$ sudo sed -i '/#ServerRoot/a\ServerName localhost' apache2.conf
[sudo] study의 암호: 
study@study-VirtualBox:/etc/apache2$ 

위 명령을 실행함으로써 ServerName 구문을 설정해줍니다.

위 명령을 구문 분석은 다음과 같습니다.

sudo sed -i '/#ServerRoot/a\ServerName localhost' apache2.conf

 

sudo

관리자 권한으로 실행

 

sed

sed 실행

 

-i

편집 내용을 저장


'/#ServerRoot/a\ServerName localhost'

'/기준이 되는 패턴(문자열)/a\사용자가 원하는 편집 결과 패턴(문자열)'

a\은 기준 패턴(문자열)을 포함하는 행 아랫줄에 후행하는 패턴(문자열)을 첨부하는 옵션입니다.

 

apache2.conf

읽어들일/편집할 파일명

 

 

 

study@study-VirtualBox:/etc/apache2$ study@study-VirtualBox:/etc/apache2$ sed -n '69, 72p' /etc/apache2/apache2.conf | cat -n
     1	#ServerRoot "/etc/apache2"
     2	ServerName localhost
     3	
     4	#
study@study-VirtualBox:/etc/apache2$ 

추가한 행을 포함하여 위 아래 주변부의 행을 확인해봅시다. 위와 같이 cat -n을 뒤에 붙이면 파일에서의 각 행의 실제 행번호가 아니라 1부터 순서대로 행번호가 붙어 출력됩니다.

 

sed -n '69, 72p' /etc/apache2/apache2.conf | cat -n

-n

sed의 -n 옵션은 패턴 공간의 자동 출력 억제 기능을 합니다. 이 옵션은 p플래그와 함께 쓰여 지정 범위의 행만 출력합니다.

'68,72p'

순서상 두 숫자를 포함하는 범위의 행을 지정합니다. 후행 숫자 뒤에 오는 p는 print를 의미하는 플래그로 해당 범위의 행을 표준출력에 표시하라는 의미입니다.

| cat -n

전항의 결과에 cat -n 명령을 적용합니다. 즉 각 행의 앞에 순서 숫자를 표시합니다.

 

 

study@study-VirtualBox:/etc/apache2$ sudo sed -i '/ServerName localhost/i\\' apache2.conf
study@study-VirtualBox:/etc/apache2$ 

#ServerRoot 설정 바로 아래 ServerName 설정이 있어 가독성이 떨어질 수 있습니다. 두 설정 사이에 빈줄을 추가합시다.

 

sudo sed -i '/ServerName localhost/i\\' apache2.conf

'/ServerName localhost/i\\'

'/기준이 되는 패턴(문자열)/i\사용자가 원하는 편집 결과 패턴(문자열)'

i\은 기준이 되는 패턴을 포함하는 행 아랫줄에 지정 패턴을 부가하는 a\와는 달리 기준 패턴(문자열)을 포함하는 행 윗줄에 후행하는 패턴(문자열)을 삽입하는 옵션입니다.

i\ 뒤에 추가할 특정한 문자열 없이 빈줄 하나만 추가할 경우 \만 하나 더 추가해주시면 되니다.

 

i\  바로 뒤에 w 대신 \n(강제개행)을 사용하는 경우 빈줄 두 개가 추가됩니다.

 

 

study@study-VirtualBox:/etc/apache2$ cat -n apache2.conf | sed -n '69, 73p'
    69	#ServerRoot "/etc/apache2"
    70	
    71	ServerName localhost
    72	
    73	#
study@study-VirtualBox:/etc/apache2$ 

앞과는 달리 cat -n 명령을 먼저 두면 위와 같이 파일에서의 실제 행 번호가 출력됩니다.

 

 

서버에 최대 2기가바이트 업로드 설정

 

study@study-VirtualBox:/etc/apache2$ sudo bash -c 'cat >> /etc/apache2/apache2.conf'

# upload up to two gigabytes 
<Directory />
   LimitRequestBody 2147483647
</Directory>
study@study-VirtualBox:/etc/apache2$ 

 

#대용량 업로드#
<Directory />
   LimitRequestBody 2147483647
</Directory>

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

 

2147483647에 대하여

정수 2,147,483,647은 수학사적 측면에서 보면 8번째 메르센 소수로 레온하르트 오일러가 발견했습니다.

컴퓨터 연산 측면에서 정수 2,147,483,647은 2의 31승-1로 간결하게 표현이 가능하며 이는 32비트 정수형의 최댓값입니다.

유튜브에서는 싸이의 강남스타일 뮤직비디오의 조회수가 2,147,483,647 회를 넘길 것으로 예측되자 기존의 32비트 정수형을 64비트 정수형으로 시스템을 업데이트하기도 했습니다.

64비트 정수형의 최댓값은 9,223,372,036,854,775,807로 2의 거듭제곱수로 표현하면 2의 63승-1입니다.

LimitRequestBody 뒤에 붙는 정수 2147483647은 외부에서 일반적인 서버에 업로드할 수 있는 최대 용량인 2GB를 뜻합니다.

 

sudo bash -c 'cat >> /etc/apache2/apache2.conf'

bash

Bash는 표준 입력 또는 파일에서 읽은 명령을 실행하는 sh 호환 명령 언어 인터프리터입니다.

-c

후행 문자열에서 명령을 읽어들이는 옵션입니다.

'cat >> /etc/apache2/apache2.conf'

cat >> 파일명은 지정 파일의 하단에 명령 실행 이후 작성되는 텍스트 내용을 첨부합니다.

 

 

study@study-VirtualBox:/etc/apache2$ sudo bash -c 'cat >> /etc/apache2/apache2.conf'

위 명령을 실행하면 커서가 하단으로 내려가면서 첨부될 텍스트를 작성할 수 있습니다.

첨부될 내용을 다 작성한 후 Ctrl+d를 눌러 저장합니다. 저장 후 셸 프롬프트로 돌아옵니다.

 

 

HTML문서 등에 php문서를 읽어들일 수 있도록 설정

 

 

study@study-VirtualBox:/etc/apache2$ sudo bash -c 'cat >> apache2.conf'

# Make all PHP code look like HTML
AddType application/x-httpd-php .php4 .php .phtml .ph .inc .html .htm
study@study-VirtualBox:/etc/apache2$ 

위 내용은 HTML문서 등에 php문서를 불러올 수 있도록 설정해주는 설정값입니다.

과거 제로보드가 쓰이던 시절만 해도 HTML문서에 php문서를 불러오기 위해서 필수적인 설정이었습니다.

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

 

터미널에 문서 하단부 내용 출력

 

study@study-VirtualBox:/etc/apache2$ tail -n 10 apache2.conf

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

# upload up to two gigabytes 

   LimitRequestBody 2147483647


# Make all PHP code look like HTML
AddType application/x-httpd-php .php4 .php .phtml .ph .inc .html .htm
study@study-VirtualBox:/etc/apache2$ 

문서 하단부를 터미널에 표시하려면 tail 명령어를 사용하면됩니다. 반대로 문서 상단부를 표시하려면 head 명령어를 사용하면 됩니다.

 

tail -n 10 apache2.conf

tail

문서 하단부를 터미널에 표시하는 명령어입니다.

-n 10

표시할 행수를 설정하는 옵션입니다. 이 옵션이 없는 경우 기본값은 10줄입니다.

apache2.conf

내용을 표시할 파일을 지정해주시면 됩니다.

 

 

study@study-VirtualBox:/etc/apache2$ cat -n apache2.conf | tail -n 10
   228	
   229	# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
   230	
   231	# upload up to two gigabytes 
   232	
   233	   LimitRequestBody 2147483647
   234	
   235	
   236	# Make all PHP code look like HTML
   237	AddType application/x-httpd-php .php4 .php .phtml .ph .inc .html .htm
study@study-VirtualBox:/etc/apache2$ 
위는 cat -n 명령어의 결괏값을 tail -n N 명령에 적용한 예입니다.

 파일 내의 실제 행번호가 표시됩니다.

 

 

Apache2 구문 검사

 

study@study-VirtualBox:/etc/apache2$ sudo apache2ctl configtest
Syntax OK
study@study-VirtualBox:/etc/apache2$ 

앞치 환경 설정 파일 수정 후 수정 내용을 다시 적용하기 전에 수정 내용에 구문 오류가 없는지 검사할 필요가 있습니다. 구문 오류가 없다면 위처럼 출력될 것입니다.

 

study@study-VirtualBox:~$ sudo apache2ctl configtest
apache2: Syntax error on line 239 of /etc/apache2/apache2.conf: Could not open configuration file /etc/phpmyadmin/apache.conf: No such file or directory
Action 'configtest' failed.
The Apache error log may have more information.
study@study-VirtualBox:~$ 

반대로 구문 오류가 있다면 위와 같이 출력됩니다.

 

Apache2 서버 재시작

 

study@study-VirtualBox:/etc/apache2$ sudo systemctl restart apache2

 

 


 

 

참고 사항

phpmyadmin 사용시

#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

 


 

php.ini

/etc/php/7.4/apache2/php.ini

 

 

 

tudy@study-VirtualBox:~$ diff -q /etc/php/7.4/apache2/php.ini /etc/php/7.4/cli/php.ini
Files /etc/php/7.4/apache2/php.ini and /etc/php/7.4/cli/php.ini differ
study@study-VirtualBox:~$

 

 

 

study@study-VirtualBox:~$ diff /etc/php/7.4/apache2/php.ini /etc/php/7.4/cli/php.ini
312c312
< disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
---
> disable_functions =
379c379
< expose_php = Off
---
> expose_php = On
409c409
< memory_limit = 128M
---
> memory_limit = -1
study@study-VirtualBox:~$ 

 

 

study@study-VirtualBox:~$ diff -y --suppress-common-lines  /etc/php/7.4/apache2/php.ini /etc/php/7.4/cli/php.ini
disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcnt |	disable_functions =
expose_php = Off					      |	expose_php = On
memory_limit = 128M					      |	memory_limit = -1
study@study-VirtualBox:~$

 

 

study@study-VirtualBox:~$ diff -c /etc/php/7.4/apache2/php.ini /etc/php/7.4/cli/php.ini
*** /etc/php/7.4/apache2/php.ini	2020-05-26 21:24:22.000000000 +0900
--- /etc/php/7.4/cli/php.ini	2020-05-26 21:24:22.000000000 +0900
***************
*** 309,315 ****
  ; This directive allows you to disable certain functions for security reasons.
  ; It receives a comma-delimited list of function names.
  ; http://php.net/disable-functions
! disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
  
  ; This directive allows you to disable certain classes for security reasons.
  ; It receives a comma-delimited list of class names.
--- 309,315 ----
  ; This directive allows you to disable certain functions for security reasons.
  ; It receives a comma-delimited list of function names.
  ; http://php.net/disable-functions
! disable_functions =
  
  ; This directive allows you to disable certain classes for security reasons.
  ; It receives a comma-delimited list of class names.
***************
*** 376,382 ****
  ; threat in any way, but it makes it possible to determine whether you use PHP
  ; on your server or not.
  ; http://php.net/expose-php
! expose_php = Off
  
  ;;;;;;;;;;;;;;;;;;;
  ; Resource Limits ;
--- 376,382 ----
  ; threat in any way, but it makes it possible to determine whether you use PHP
  ; on your server or not.
  ; http://php.net/expose-php
! expose_php = On
  
  ;;;;;;;;;;;;;;;;;;;
  ; Resource Limits ;
***************
*** 406,412 ****
  
  ; Maximum amount of memory a script may consume (128MB)
  ; http://php.net/memory-limit
! memory_limit = 128M
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ; Error handling and logging ;
--- 406,412 ----
  
  ; Maximum amount of memory a script may consume (128MB)
  ; http://php.net/memory-limit
! memory_limit = -1
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ; Error handling and logging ;
study@study-VirtualBox:~$ 

 

 

study@study-VirtualBox:~$ cd /etc/php/7.4/apache2
study@study-VirtualBox:/etc/php/7.4/apache2$ ls -F
conf.d/  php.ini
study@study-VirtualBox:/etc/php/7.4/apache2$ sudo cp php.ini php_original.ini
[sudo] study의 암호: 
study@study-VirtualBox:/etc/php/7.4/apache2$ ls -F
conf.d/  php.ini  php_original.ini
study@study-VirtualBox:/etc/php/7.4/apache2$ 

 

 

 

 

study@study-VirtualBox:/etc/php/7.4/apache2$ cat -n php.ini | grep date.timezone
   961	; http://php.net/date.timezone
   962	;date.timezone =
study@study-VirtualBox:/etc/php/7.4/apache2$

 

 

study@study-VirtualBox:/etc/php/7.4/apache2$ sudo sed -i 's/;date.timezone =/date.timezone = Asia/Seoul/' php.ini
[sudo] study의 암호: 
sed: -e expression #1, char 41: `s' 에 관한 알수 없는 옵션
study@study-VirtualBox:/etc/php/7.4/apache2$

 

 

study@study-VirtualBox:/etc/php/7.4/apache2$ sudo sed -i 's/;date.timezone =/date.timezone = Asia\/Seoul/' php.ini
study@study-VirtualBox:/etc/php/7.4/apache2$ 

 

 

tudy@study-VirtualBox:/etc/php/7.4/apache2$ cat -n php.ini | grep date.timezone   961	; http://php.net/date.timezone
   962	date.timezone = Asia/Seoul
study@study-VirtualBox:/etc/php/7.4/apache2$ 

 

 

study@study-VirtualBox:/etc/php/7.4/apache2$ cat -n php.ini | egrep '(file_uploads|upload_max_filesize|post_max_size|max_execution_time|max_input_time|memory_limit)'
   116	; max_input_time
   388	max_execution_time = 30
   398	max_input_time = 60
   409	memory_limit = 128M
   694	post_max_size = 8M
   837	file_uploads = On
   846	upload_max_filesize = 2M
   849	max_file_uploads = 20
study@study-VirtualBox:/etc/php/7.4/apache2$ 

 

 

study@study-VirtualBox:/etc/php/7.4/apache2$ sudo sed -i -e 's/upload_max_filesize = 2M/upload_max_filesize = 2048M/; s/post_max_size = 8M/post_max_size = 2048M/' php.ini
[sudo] study의 암호: 
study@study-VirtualBox:/etc/php/7.4/apache2$

 

 

study@study-VirtualBox:/etc/php/7.4/apache2$ sudo sed -i -e'
> s/max_execution_time = 30/max_execution_time = 0/
> s/max_input_time = 60/max_input_time = -1/
> s/memory_limit = 128M/memory_limit = 2048M/
> ' php.ini
study@study-VirtualBox:/etc/php/7.4/apache2$ 

 

 

study@study-VirtualBox:/etc/php/7.4/apache2$ cat -n php.ini | egrep '(file_uploads|upload_max_filesize|post_max_size|max_execution_time|max_input_time|memory_limit)'
   116	; max_input_time
   388	max_execution_time = 0
   398	max_input_time = -1
   409	memory_limit = 2048M
   694	post_max_size = 2048M
   837	file_uploads = On
   846	upload_max_filesize = 2048M
   849	max_file_uploads = 20
study@study-VirtualBox:/etc/php/7.4/apache2$ 

 

 

 

 

study@study-VirtualBox:/etc/php/7.4/apache2$ cat -n php.ini | grep short_open_tag
   146	; short_open_tag
   187	short_open_tag = Off
study@study-VirtualBox:/etc/php/7.4/apache2$ 

 

 

study@study-VirtualBox:/etc/php/7.4/apache2$ sudo sed -i 's/short_open_tag = Off/short_open_tag = On/' php.ini
study@study-VirtualBox:/etc/php/7.4/apache2$ 

 

 

study@study-VirtualBox:/etc/php/7.4/apache2$ cat -n php.ini | grep short_open_tag
   146	; short_open_tag
   187	short_open_tag = On
study@study-VirtualBox:/etc/php/7.4/apache2$