메뉴 닫기
    • 등록된 관련자료가 없음
< 모든 주제
인쇄

Ubuntu 20.04에 LAMP Apache, MySQL, PHP를 설치하는 방법

Ubuntu 20.04에 LAMP Apache, MySQL, PHP를 설치하는 방법. 이 가이드에서는 Apache2, MySQL 및 PHP 7.4를 설치하는 방법을 배웁니다.

또한 몇 가지 일반적인 PHP 확장을 설치하고 PHP 구성을 조정합니다. 마지막으로 Let’s Encrypt SSL을 사용하여 설정을 보호하고 HTTPS 리디렉션을 구성합니다.

이 설정은 Google 클라우드에서 테스트되었으므로 AWS, Azure 또는 VPS 또는 Ubuntu 20.04를 실행하는 모든 전용 서버와 같은 모든 클라우드 호스팅 서비스에서 작동합니다.

전제 조건

  • 서버 또는 sudo 사용자에 대한 루트 액세스

1단계: 초기화 설정

다음 명령을 사용하여 패키지를 사용 가능한 최신 버전으로 업데이트하여 시작합니다.

$sudo apt update
$sudo apt upgrade

설정을 업데이트했으면 설정을 시작할 수 있습니다.

2단계: Apache 설치

다음 명령을 사용하여 Apache를 설치합니다.

$sudo apt install apache2

그러면 apache2모든 필수 종속 항목 이 설치됩니다 .

3단계: 방화벽 설정

이제 당신에 대한 기본 웹 포트에 대한 공용 액세스를 허용하도록 아파치와 방화벽 (UFW)을 설정할 수 있습니다 HTTPHTTPS

$sudo ufw app list

나열된 모든 응용 프로그램이 표시됩니다.

출력
 사용 가능한 애플리케이션: 
   Apache 
   Apache Full 
   Apache Secure 
   OpenSSH
  • Apache : 이 프로필은 포트를 엽니다 80(일반, 암호화되지 않은 웹 트래픽).
  • Apache Full : 이 프로필은 포트 80(일반, 암호화되지 않은 웹 트래픽)와 포트 443(TLS/SSL 암호화 트래픽)를 모두 엽니다.
  • Apache Secure : 이 프로필은 포트만 엽니다 443(TLS/SSL 암호화된 트래픽).
  • OpenSSH : 이 프로필 22은 SSH 액세스를 위한 포트 를 엽니다 .

SSL을 사용하지 않으려면 Apache 프로필만 활성화해야 합니다.

이제 Apache Full을 활성화합니다.

$sudo ufw allow “Apache Full”

이 명령으로 UFW의 상태를 볼 수 있습니다.

$sudo ufw status

다음과 같이 출력이 표시됩니다.

출력
 상태: 활성 
작업 시작 
-- ------ ---- 
Apache 전체 ALLOW Anywhere                   
OpenSSH ALLOW Anywhere                   
Apache 전체(v6) ALLOW Anywhere(v6)              
OpenSSH(v6) ALLOW Anywhere(v6)

단계: 4 Apache 설치 확인

Apache가 설치되면 자동으로 시작되어 이미 실행 중입니다.

Apache의 모든 프로세스는 systemctl명령으로 관리됩니다 . 다음 명령어로 Apache의 상태를 확인합니다.

$sudo systemctl status apache2

산출
● apache2.service - 아파치 HTTP 서버
    로드됨: 로드됨(/lib/systemd/system/apache2.service; 활성화됨, 공급업체 사전 설정: 활성화됨)
   드롭인: /lib/systemd/system/apache2.service.d
            └─apache2-systemd.conf
    활성: 활성(실행 중) 이후 Tue 2020-01-06 03:59:34 UTC; 5분 전
  메인 PID: 10617(apache2)
     작업: 55(한도: 667)
    C그룹: /system.slice/apache2.service
            ├─10617 /usr/sbin/apache2 -k 시작
            ├─10619 /usr/sbin/apache2 -k 시작
            └─10620 /usr/sbin/apache2 -k 시작
 Jan 06 03:59:34 apache systemd[1]: Apache HTTP 서버 시작 중…
 Jan 06 03:59:34 apache systemd[1]: Apache HTTP 서버를 시작했습니다.

이제 Apache를 설치하고 방화벽을 구성했습니다.

5단계: MySQL 설치

Ubuntu 20.04에서 MySQL 8은 Focal Fossa 리포지토리에 기본적으로 포함되어 있으므로 apt install명령을 사용하여 쉽게 설치할 수 있습니다 .

$sudo apt install mysql-server

설치가 완료되면 MySQL 서비스가 자동으로 시작됩니다. MySQL 서버가 실행 중인지 확인하려면 다음을 입력하십시오.

$sudo service mysql status

출력은 서비스가 활성화되어 실행 중임을 표시해야 합니다.

  mysql.service - MySQL 커뮤니티 서버
     로드됨: 로드됨(/lib/systemd/system/mysql.service; 활성화됨, 공급업체 사전 설정: 활성화됨)
     활성: 활성(실행 중) 이후 Tue 2020-05-05 07:13:18 UTC; 1분 4초 전
   메인 PID: 3333(mysqld)
     상태: "서버가 작동 중입니다"
      작업: 38(한도: 2010)
     메모리: 322.9M
     C그룹: /system.slice/mysql.service
             └─3333 /usr/sbin/mysqld

6단계: MySQL 보안

MySQL 설치에는 mysql_secure_installation MySQL 서버 보안을 쉽게 개선할 수 있는 이름의 스크립트가 함께 제공됩니다  .

$sudo mysql_secure_installation

VALIDATE PASSWORD PLUGIN MySQL 사용자 암호의 강도를 테스트하고 보안을 개선하는 데 사용되는 구성을 묻는 메시지가 표시됩니다  .

를 눌러  y 당신은 암호의 유효성을 확인 플러그인 또는 다음 단계로 이동하려면 다른 키를 설정합니다.

암호 유효성 검사 정책에는 낮음, 중간 및 강력의 세 가지 수준이 있습니다.

강력한 암호 유효성 검사를 위해 2를 입력합니다.

다음 프롬프트에서 MySQL 루트 사용자의 비밀번호를 설정하라는 메시지가 표시됩니다.

비밀번호 확인 플러그인을 설정하면 스크립트에 새 비밀번호의 강도가 표시됩니다. 입력  y 하여 암호를 확인합니다.

다음으로, 익명 사용자를 제거하고, 로컬 시스템에 대한 루트 사용자 액세스를 제한하고, 테스트 데이터베이스를 제거하고, 권한 테이블을 다시 로드하라는 메시지가 표시됩니다. y 모든 질문에 답  해야 합니다.

7단계: PHP 설치

기본적으로 Ubuntu 20.04에는 최신 PHP 7.4 저장소가 추가되었습니다. 따라서 다음 명령을 사용하여 PHP를 설치할 수 있습니다.

$sudo apt install php libapache2-mod-php php-mysql php-common php-mysql php-xml php-xmlrpc php-curl php-gd php-imagick php-cli php-dev php-imap php-mbstring php7.4-opcache php-soap php-zip php-intl

PHP가 설치되면 다음 명령을 사용하여 버전을 확인할 수 있습니다.

$php -v

8단계: PHP 구성

이제 php.ini파일의 일부 값을 변경하여 웹 애플리케이션용 PHP를 구성 합니다.

Apache가 설치된 PHP 7.4의 경우 php.ini위치는 다음 디렉토리에 있습니다.

$sudo nano /etc/php/7.4/apache2/php.ini

히트 F6편집기 내부 검색 및 성능 향상을 위해 다음과 같은 값을 업데이트합니다.

upload_max_filesize = 32M 
post_max_size = 48M 
memory_limit = 256M 
max_execution_time = 600 
max_input_vars = 3000 
max_input_time = 1000

PHP 설정을 수정했으면 변경 사항을 적용하려면 Apache를 다시 시작해야 합니다.

9단계: Apache 구성

기본 Apache 구성을 비활성화합니다.

$sudo a2dissite 000-default

웹사이트 디렉토리를 만듭니다.

$sudo mkdir -p /var/www/html/domain_name/public

올바른 권한을 설정하십시오.

$sudo chmod -R 755 /var/www/html/domain_name

$sudo chown -R www-data:www-data /var/www/html/domain_name

새 가상 호스트 구성을 만듭니다.

$sudo nano /etc/apache2/sites-available/domain_name.conf

새 파일에 다음 구성을 붙여넣습니다.

<VirtualHost *:80>
     ServerAdmin admin@domainname.com
     ServerName domainname.com
     ServerAlias www.domainname.com

     DocumentRoot /var/www/html/domainname/public

     <Directory /var/www/html/domainname/public>
         Options Indexes FollowSymLinks
         AllowOverride All
         Require all granted
     </Directory>

     ErrorLog ${APACHE_LOG_DIR}/error.log 
     CustomLog ${APACHE_LOG_DIR}/access.log combined 
 </VirtualHost>

새 구성을 활성화합니다.

$sudo a2ensite domain_name.conf

10단계: Let’s Encrypt SSL 설치

HTTPS는 서버(인스턴스)와 클라이언트(웹 브라우저) 간의 보안 통신을 위한 프로토콜입니다. 무료 SSL 인증서를 제공하는 Let’s Encrypt의 도입으로 모든 사람이 HTTPS를 채택하고 청중에게 신뢰를 제공합니다.

$sudo apt install python3-certbot-apache

이제 Ubuntu 20.04용 Let’s Encrypt의 Certbot을 설치했습니다. 이 명령을 실행하여 인증서를 받으십시오.

$sudo certbot –apache –agree-tos –redirect -m yourmail@email.com -d domain_name.com -d www.domain_name.com

적절한 옵션을 선택하고 Enter

이 명령은 무료 SSL을 설치하고 HTTPS로 리디렉션을 구성하며 Apache 서버를 다시 시작합니다.

11단계: SSL 인증서 갱신

Let’s Encrypt에서 제공하는 인증서는 90일 동안만 유효하므로 자주 갱신해야 합니다. 그럼 다음 명령어를 사용하여 갱신 기능을 테스트해보자.

$sudo certbot update –dry-run

이 명령은 인증서 만료를 테스트하고 자동 갱신 기능을 구성합니다.

12단계: 설정 테스트

가능한 단계를 완료하면 웹 디렉토리에 새로운 테스트 PHP 파일을 생성할 수 있습니다.

$sudo nano /var/www/html/domain_name/public/info.php

파일 안에 아래 코드를 붙여넣습니다.

<?php phpinfor();

파일을 저장합니다.

이제 info.phpURL( domainname.com/info.php) 에서 도메인 이름을 확인하십시오 .

도메인이 HTTPS로 리디렉션되고 PHP 정보 세부 정보가 표시됩니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

목차