Ubuntu 20.04에 Laravel을 설치하는 방법

Ubuntu 20.04 LTS 머신에 Laravel 웹 애플리케이션을 배포하기 위해 알아야 할 모든 것

Laravel은 현대적이고 아름다운 웹 애플리케이션을 디자인하는 데 사용되는 표현력 있고 우아한 구문을 사용하는 매우 인기 있는 오픈 소스 PHP 프레임워크입니다. Laravel은 웹 개발의 고통을 없애고 즐겁고 창의적인 경험으로 만들어 웹 개발자를 웹 장인으로 만드는 것을 목표로 합니다.

이 가이드에서는 웹 애플리케이션을 시작 및 실행하기 위해 Ubuntu 20.04 서버에 LAMP 스택과 함께 Laravel을 설치하는 방법을 배울 것입니다.

전제 조건

이 가이드를 따르려면 Ubuntu 20.04 LTS 서버가 필요하고 다음으로 로그인해야 합니다. 수도 사용자. 시작하기 전에 다음을 실행하여 Ubuntu 20.04 패키지를 업데이트하고 업그레이드하십시오.

sudo apt 업데이트 && sudo apt 업그레이드

LAMP 스택 설치

LAMP는 유닉스 운영 체제, 파치 웹 서버, ySQL 데이터베이스 및 HP 프로그래밍 언어. 우리는 이미 LAMP 스택에서 Linux를 선택하는 Ubuntu 20.04에 있습니다. 그래서 우리는 Laravel 애플리케이션을 위한 LAMP 스택을 완성하기 위해 나머지 세 개의 패키지를 설치할 것입니다.

Ubuntu 20.04 리포지토리에 LAMP 스택을 설치하는 데 사용할 수 있는 메타 패키지가 없습니다. 그러나 우리는 다음의 깔끔한 작은 기능을 사용할 수 있습니다. 적절한 태스크라는 패키지 관리자. 과제는 생도(^)를 붙였습니다.

sudo apt 설치 램프 서버^

이 명령은 모든 "Task:" 필드에 대한 패키지 목록 파일을 검색하고 해당 작업 필드에 "lamp-server"가 있는 모든 패키지를 설치합니다. 따라서 모든 종속성과 함께 Apache, MySQL 및 PHP 패키지로 구성된 LAMP 스택이 Ubuntu 서버에 설치됩니다.

방화벽 구성

LAMP 스택을 설치했으면 인터넷에서 Apache 서버에 액세스할 수 있도록 단순 방화벽(UFW)을 구성하고 규칙을 변경해야 합니다.

UFW는 네트워크 포트에서 규칙을 변경하고 트래픽을 토글하는 데 사용할 수 있는 간단한 애플리케이션 프로필을 제공합니다. 다음 명령을 실행하여 네트워크 포트에 액세스하는 모든 애플리케이션을 나열합니다.

sudo ufw 앱 목록

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

사용 가능한 애플리케이션: Apache Apache Full Apache Secure OpenSSH

이러한 프로필이 Ubuntu 20.04 서버에서 열리는 네트워크 포트는 다음과 같습니다.

  • Apache: 이 프로필은 포트만 엽니다. 80 (HTTP 트래픽 허용)
  • Apache Full: 이 프로필은 두 가지 모두를 엽니다. 80 & 443 포트(HTTP 및 HTTPS 트래픽 허용)
  • Apache Secure: 이 프로필은 포트만 엽니다. 443 (HTTPS 트래픽 허용)
  • OpenSSH: 이 프로필은 포트를 엽니다. 22 SSH 프로토콜을 허용하는

인터넷에서 Apache 웹 서버로의 트래픽을 허용하는 'Apache Full' 프로필을 활성화해야 합니다. 또한 포트의 트래픽을 허용하는 'OpenSSH' 프로필도 활성화해야 합니다. 22 (SSH) Ubuntu 20.04 서버. 'OpenSSH' 프로필을 허용하지 않고 UFW를 활성화하면 SSH를 사용하여 서버에 연결할 수 없습니다.

UFW 규칙을 변경하고 포트에서 트래픽을 허용하려면 80 그리고 22, 운영:

sudo ufw allow 'Apache Full' sudo ufw allow 'OpenSSH'

그런 다음 다음 명령을 사용하여 UFW 방화벽을 활성화합니다.

sudo ufw 활성화

"명령이 기존 ssh 연결을 방해할 수 있습니다. 작업을 계속하시겠습니까(y|n)?". 누르다 와이 UFW에서 SSH를 허용하는 규칙을 이미 추가했기 때문에 계속 진행합니다.

이제 인터넷에서 Ubuntu 서버의 IP 주소를 사용하여 Apache 기본 웹 페이지에 액세스할 수 있습니다. 그렇게 하려면 브라우저를 열고 URL 표시줄에 Ubuntu 20.04 서버의 IP 주소를 입력하고 Enter 키를 누르십시오.

//당신의_ubuntu_server_ip

이 페이지는 Apache 웹 서버가 올바르게 실행 중이고 UFW 규칙이 올바르게 설정되었는지 확인합니다.

Laravel용 MySQL 데이터베이스 설정

Laravel 7은 MySQL 버전 5.6+, PostgreSQL 9.4+, SQLite 3.8.8+ 및 SQL Server 2017+와 같이 지원하는 다양한 데이터베이스 백엔드에서 데이터베이스와 상호 작용하는 것을 매우 간단하게 만듭니다. 우리는 이미 최신 MySQL 패키지를 설치했습니다. 램프 서버^ 직무. 따라서 이 섹션에서는 MySQL 서버를 구성한 다음 Laravel 애플리케이션을 위한 새로운 MySQL 사용자 및 데이터베이스를 설정하는 방법을 살펴보겠습니다.

MySQL 구성

MySQL 데이터베이스에는 일부 안전하지 않은 기본 설정을 제거하는 데 사용할 수 있는 보안 스크립트가 사전 설치되어 있습니다. Laravel 애플리케이션을 배포하기 전에 이 스크립트를 실행하는 것이 좋습니다.

sudo mysql_secure_installation

위의 명령은 MySQL 서버 구성에 대한 일련의 질문을 표시하는 보안 스크립트를 실행합니다.

먼저 설정할 것인지 묻는 메시지가 표시됩니다. 비밀번호 확인 플러그인. 이 플러그인은 비밀번호를 확인하고 곧 선택하게 될 비밀번호 유효성 검증 정책 수준에 따라 비밀번호를 보안 또는 비보안으로 분류합니다. 그러니 누르세요 와이 이 플러그인을 활성화하려면.

산출: MySQL 서버 배포 보안. 빈 암호를 사용하여 MySQL에 연결합니다. VALIDATE PASSWORD COMPONENT는 암호를 테스트하고 보안을 개선하는 데 사용할 수 있습니다. 그것은 암호의 강도를 확인하고 사용자가 충분히 안전한 암호만 설정할 수 있습니다. VALIDATE PASSWORD 구성요소를 설정하시겠습니까? 예를 보려면 y|Y를 누르고 아니요를 선택하려면 다른 키를 누르십시오. 와이

그런 다음 다음을 입력하여 암호 유효성 검사 정책 수준을 설정합니다. 0, 1 또는 2 데이터베이스에 대한 암호를 생성하려는 강도에 따라 다릅니다.

산출: 암호 유효성 검사 정책에는 세 가지 수준이 있습니다. LOW 길이 >= 8 MEDIUM 길이 >= 8, 숫자, 대소문자 혼합 및 특수 문자 STRONG 길이 >= 8, 숫자, 대소문자 혼합, 특수 문자 및 사전 파일 0 = LOW, 1 = 중간 및 2 = 강함: 2

다음으로 MySQL 루트 사용자의 새 비밀번호를 입력하라는 메시지가 표시됩니다. MySQL 루트에 적합한 비밀번호를 입력하십시오. VALIDATE PASSWORD 플러그인은 비밀번호 유효성 검사 수준에 따라 예상 비밀번호 강도를 알려줍니다. 누르다 와이 제공한 비밀번호로 계속 진행합니다.

산출: 여기에서 root의 암호를 설정하십시오. 새 암호: 새 암호 다시 입력: 암호의 예상 강도: 100 제공된 암호를 계속 사용하시겠습니까?(예인 경우 y|Y를 누르고 아니요의 경우 다른 키를 누르십시오): 와이

누르다 와이 나머지 프롬프트에서는 일부 익명 사용자와 테스트 데이터베이스를 제거하고 원격 루트 로그인을 비활성화하고 MySQL 서버에 대한 새 설정을 다시 로드합니다. 완료되면 다음을 실행하여 데이터베이스를 테스트합니다.

sudo mysql

위의 명령은 MySQL 콘솔을 열고 MySQL 데이터베이스에 뿌리 사용자. 다음과 같은 출력이 표시됩니다.

산출: MySQL 모니터에 오신 것을 환영합니다. 명령은 로 끝납니다. 또는 \g. MySQL 연결 ID는 10 서버 버전: 8.0.20-0ubuntu0.20.04.1(Ubuntu) Copyright (c) 2000, 2020, Oracle 및/또는 그 계열사. 판권 소유. Oracle은 Oracle Corporation 및/또는 그 계열사의 등록 상표입니다. 다른 이름은 해당 소유자의 상표일 수 있습니다. '도움말;'을 입력하십시오. 또는 '\h'를 입력하세요. 현재 입력 문을 지우려면 '\c'를 입력합니다. mysql>

MySQL 루트 사용자에 대해 설정한 암호를 입력할 필요가 없다는 것을 눈치채셨을 것입니다. 관리 MySQL 루트 사용자에 대한 기본 인증 방법은 caching_sha2_인증 대신 mysql_native_password 암호를 사용하여 로그인하는 방법입니다.

따라서 기본적으로 다음을 사용하여 MySQL 루트 사용자로만 로그인할 수 있습니다. 수도 MySQL 서버에 대한 추가 보안 역할을 하는 활성화된 사용자. 그러나 MySQL PHP 라이브러리는 지원하지 않습니다 caching_sha2_인증 방법. 따라서 우리는 사용해야합니다 mysql_native_password Laravel이 데이터베이스에 연결하고 상호 작용하기 위해 암호를 사용하기 때문에 Laravel에 대한 새 사용자를 생성할 때 메소드를 사용합니다.

새 MySQL 사용자 및 데이터베이스 생성

MySQL 루트 사용자 및 테스트 데이터베이스를 사용하는 대신 애플리케이션을 위해 특별히 새 사용자와 데이터베이스를 생성하는 것이 항상 좋은 방법입니다. 그래서 우리는 새로운 MySQL 사용자를 설정할 것입니다. laravel_user 그리고 라는 데이터베이스 라라벨. 여기까지 튜토리얼을 따랐다면 MySQL 콘솔이 열려 있어야 합니다. 라는 사용자를 생성하려면 laravel_user MySQL 콘솔에서 다음 쿼리를 실행합니다.

메모: 교체 시험 통과 강력한 암호를 사용하여 아래 MySQL 쿼리에서.

CREATE USER 'laravel_user'@'%' IDENTIFIED WITH mysql_native_password BY 'testpass';

다음으로 라는 데이터베이스를 생성합니다. 라라벨 다음 쿼리를 실행하여 Laravel 애플리케이션에 대해

데이터베이스 생성 라라벨;

MySQL 루트 사용자만 새로 생성된 데이터베이스 laravel에 대한 권한을 갖습니다. 에 대한 모든 권한 부여 라라벨 데이터베이스에 laravel_user 실행하여:

laravel에 대한 모든 권한 부여.* TO 'laravel_user'@'%';

이제 새로운 MySQL 사용자와 데이터베이스가 생겼습니다. 다음을 실행하여 MySQL 콘솔을 종료합니다.

출구;

새 MySQL 사용자를 사용하여 MySQL 콘솔에 로그인하여 테스트하려면 터미널에서 다음 명령을 실행하십시오.

mysql -u laravel_user -p

주의 -피 명령에 플래그를 지정하면 생성하는 동안 사용한 암호를 묻는 메시지가 표시됩니다. laravel_user (시험 통과 쿼리에서). MySQL 콘솔에 다음과 같이 로그인한 후 laravel_user, 사용자에게 액세스 권한이 있는지 확인 라라벨 다음을 실행하여 데이터베이스

데이터베이스 표시
산출: +--------------------+ | 데이터베이스 | +--------------------+ | 라라벨 | | 정보 스키마 | +--------------------+ 2행 세트(0.01초)

위의 출력은 MySQL 사용자가 laravel_user 데이터베이스에 대한 권한이 있습니다 라라벨. 다음을 사용하여 MySQL 콘솔을 종료합니다. 출구; 쿼리를 통해 DemoApp Laravel 애플리케이션 생성을 진행할 수 있습니다.

라라벨 설치하기

Laravel 프레임워크는 Composer를 사용하여 종속성을 다운로드하고 관리합니다. 따라서 Laravel 애플리케이션을 생성하기 전에 Ubuntu 20.04 시스템에 Composer를 설치해야 합니다.

작곡가 설치

Composer는 PHP용 종속성 관리자 도구로, PHP 프레임워크와 라이브러리를 훨씬 쉽게 설치하고 업데이트할 수 있습니다. Laravel 프레임워크를 다운로드하고 관리하는 데 사용할 수 있도록 이 튜토리얼에서 Composer를 빠르게 설치하는 방법을 살펴보겠습니다.

다음과 같이 Composer가 작동하는 데 필요한 몇 가지 추가 패키지를 설치해야 합니다. php-cli 터미널에서 PHP 스크립트를 실행하고 압축을 풀다 Composer가 패키지를 추출하는 데 도움이 됩니다. 다음을 실행하여 둘 다 설치합니다.

sudo apt install php-cli 압축 풀기

그런 다음 Composer를 전역적으로 설치하려면 다음을 사용하여 Composer 설치 스크립트를 다운로드하십시오. 곱슬 곱슬하다 다음 명령을 사용하여 설치하십시오.

curl -sS //getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

마지막으로 다음을 실행하여 작성기가 올바르게 설치되었는지 확인합니다.

작곡가
 ______ / ____/___ ___ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / / / / / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ 작곡가 버전 1.10.8 2020-06- 24 21:23:30 사용법: 명령 [옵션] [인수]

이 출력은 Composer가 Ubuntu 20.04 서버에서 제대로 작동하고 있음을 확인하고 이를 사용하여 PHP 프레임워크 및 라이브러리를 설치하고 관리할 수 있습니다.

라라벨 애플리케이션 생성

우리는 몇 가지 PHP 확장을 제외하고 Ubuntu 20.04 서버에서 Laravel 애플리케이션을 만드는 데 필요한 모든 것을 거의 갖추고 있습니다. 다음 명령을 사용하여 누락된 확장을 설치합니다.

sudo apt 설치 php-mbstring php-xml php-bcmath php-zip php-json

이제 Composer를 사용하여 Laravel을 설치하고 새로운 Laravel 애플리케이션을 만들 수 있습니다. 먼저 사용자의 홈 디렉토리에 있는지 확인하십시오.

CD ~

그런 다음 Composer를 사용하여 새 Laravel 프로젝트를 만듭니다. 프로젝트 생성 명령:

작곡가 create-project --prefer-dist laravel/laravel LaravelApp

위의 명령은 LaravelApp이라는 새 프로젝트를 생성하고 Laravel Framework도 설치 및 구성합니다. 다음과 유사한 출력이 표시됩니다.

산출: "./LaravelApp"에 "laravel/laravel" 프로젝트 생성 laravel/laravel(v7.12.0) 설치 laravel/laravel(v7.12.0): 다운로드(100%) /home/ath/LaravelApp @php에 프로젝트 생성 - r "file_exists('.env') || copy('.env.example', '.env');" 패키지 정보가 있는 작곡가 저장소 로드 종속성 업데이트(require-dev 포함) 패키지 작업: 97개 설치, 0개 업데이트, 0개 제거 voku/portable-ascii(1.5.2) 설치: 다운로드(100%) symfony/polyfill-ctype(v1) 설치 .17.1): 다운로드(100%) phpoption/phpoption 설치(1.7.4): 다운로드(100%) vlucas/phpdotenv(v4.1.7) 설치: 다운로드(100%) symfony/css-selector(v5.1.2) 설치 : 다운로드 중(100%) ....

설치가 완료되면 애플리케이션의 루트 디렉토리로 이동한 다음 Laravel의 장인 모든 구성 요소가 제대로 설치되었는지 확인하는 명령:

cd LaravelApp/ php 장인
산출: Laravel Framework 7.18.0 사용법: command [options] [arguments] 옵션: -h, --help 이 도움말 메시지 표시 -q, --quiet 어떤 메시지도 출력하지 않음 -V, --version 이 애플리케이션 버전 표시 --ansi 강제 ANSI 출력 --no-ansi ANSI 출력 비활성화 -n, --no-interaction 대화형 질문 안 함 --env[=ENV] 명령이 실행되어야 하는 환경 -v|vv|vvv, --verbose 증가 메시지의 자세한 정도: 일반 출력의 경우 1, 더 자세한 출력의 경우 2, 디버그의 경우 3 ....

이 출력은 설치가 성공했고 모든 파일이 제자리에 있으며 Laravel 명령줄 도구가 제대로 작동하고 있음을 확인합니다. 그러나 데이터베이스 및 기타 몇 가지 설정을 설정하려면 애플리케이션을 구성해야 합니다.

Laravel 애플리케이션 구성

Laravel 구성 파일은 다음 디렉토리에 있습니다. 구성 애플리케이션의 루트 디렉토리 내부. 또한 Composer를 통해 Laravel을 설치하면 애플리케이션의 루트 디렉터리에 '.env'라는 환경 파일이 생성됩니다. 환경 파일에는 환경별 구성이 포함되어 있으며 config 디렉토리 내부에 있는 일반 구성 파일의 설정보다 우선합니다.

참고: 환경 구성 파일에는 데이터베이스 비밀번호, Laravel 애플리케이션 키 등과 같은 서버에 대한 민감한 정보가 포함되어 있습니다. 따라서 공개적으로 공유해서는 안 됩니다.

이제 수정하겠습니다. .env 파일을 사용하여 구성을 변경하고 여기에 데이터베이스 자격 증명을 추가합니다. 다음을 실행하여 nano 편집기를 사용하여 파일을 엽니다.

나노 .env

여기에는 많은 구성 변수가 있습니다. .env 파일. Composer는 대부분의 설정을 자동으로 구성하므로 각각을 변경할 필요가 없습니다. 따라서 다음은 알아야 할 몇 가지 기본 구성 변수 목록입니다.

  • APP_NAME: 알림 및 메시지에 사용되는 애플리케이션 이름이므로 'LaravelApp'으로 설정하겠습니다.
  • 앱_ENV: 이 변수는 현재 응용 프로그램 환경을 나타내는 데 사용됩니다. 로컬, 개발, 테스트 또는 프로덕션 환경으로 설정할 수 있습니다. 지금은 개발 환경으로 설정하겠습니다.
  • 앱_키: 웹 앱용 솔트 및 해시를 생성하는 데 사용되는 고유한 애플리케이션 키입니다. Composer를 통해 Laravel을 설치할 때 자동으로 생성되므로 변경할 필요가 없습니다.
  • APP_DEBUG: 클라이언트 측에서 오류를 표시할지 여부에 따라 true 또는 false로 설정할 수 있습니다. 프로덕션 환경으로 이동할 때 false로 설정하십시오.
  • APP_URL: 애플리케이션의 기본 URL 또는 IP, Laravel 앱용이 있으면 도메인 이름으로 변경하고, 그렇지 않은 경우 지금은 그대로 두십시오.
  • DB_DATABASE: Laravel 애플리케이션과 함께 사용하려는 데이터베이스의 이름입니다. MySQL을 구성할 때 생성한 MySQL 데이터베이스 'laravel'을 사용할 것입니다.
  • DB_USERNAME: 데이터베이스에 연결할 사용자 이름입니다. 우리는 우리가 만든 MySQL 사용자 'laravel_user'를 사용할 것입니다.
  • DB_PASSWORD: 데이터베이스에 접속하기 위한 비밀번호입니다.
 앱_이름= 라라벨앱 앱_ENV= 개발 앱_키= base64:Application_unique_key APP_DEBUG=참 APP_URL= //도메인_or_IP LOG_CHANNEL=스택 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=라라벨 DB_USERNAME= laravel_user DB_PASSWORD= 시험 통과

변경 .env 그에 따라 파일을 만들고 편집이 완료되면 다음을 사용하여 파일을 저장하고 종료합니다. Ctrl+X 그런 다음 누르십시오 와이 확인을 위해 Enter 키를 누릅니다. 이제 Apache 서버를 구성하고 Laravel 애플리케이션을 위한 가상 호스트를 만드는 일만 남았습니다.

Apache 웹 서버 설정

사용자 홈 디렉토리의 로컬 폴더에 Laravel을 설치했습니다. 이것은 로컬 개발에 완벽하게 작동하지만 웹 애플리케이션 디렉토리를 다음 위치에 두는 것이 좋습니다. /var/www. Laravel을 설치하지 않은 이유 /var/www 직접은 루트가 소유하고 Composer를 다음과 함께 사용해서는 안 되기 때문입니다. 수도.

그래서 사용 뮤직비디오 Laravel 응용 프로그램 폴더와 그 내용을 다음으로 이동하는 명령 /var/www:

sudo mv ~/라라벨/ /var/www

LaravelApp 디렉토리는 사용자가 소유하므로 사용하지 않고도 파일을 편집하고 변경할 수 있습니다. 수도 명령. 그러나 Apache 웹 서버는 Laravel이 애플리케이션 생성 파일을 저장하므로 애플리케이션의 캐시 및 스토리지 디렉토리에 액세스해야 합니다. 이 폴더의 소유자를 다음으로 변경하십시오. www-데이터 사용자가 차우 명령:

sudo chown -R www-data.www-data /var/www/LaravelApp/storage sudo chown -R www-data.www-data /var/www/LaravelApp/bootstrap/cache

이 디렉토리의 소유자를 변경한 후 Apache의 mod_rewrite Laravel이 라우팅 기능에 의해 해석될 URL을 적절하게 변환하기 위해 요구하기 때문에 .ht액세스 파일.

sudo a2enmod 다시 쓰기

다음으로 Laravel 애플리케이션을 위한 가상 호스트를 설정해야 합니다. 가상 호스트 구성은 다음 위치에 있습니다. /etc/apache2/sites-사용 가능. Laravel 애플리케이션을 배포하기 위해 기본 가상 호스트 파일을 편집할 것입니다. nano 편집기를 사용하여 기본 가상 호스트 구성 파일을 엽니다.

sudo nano /etc/apache2/sites-available/000-default.conf

문서 루트 변경 /var/www/html 에게 /var/www/LaravelApp/public DocumentRoot 줄 아래에 다음 스니펫을 추가합니다.

 모두 재정의 허용 

당신의 000-default.conf 이제 몇 가지 의견으로 다음과 같이 보일 것입니다.

 ServerAdmin webmaster@localhost DocumentRoot /var/www/LaravelApp/public AllowOverride All ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log 결합 

다음 명령을 실행하여 Apache 웹 서버를 다시 시작합니다.

sudo systemctl apache2 재시작

이제 브라우저로 이동하여 Ubuntu 20.04 서버의 IP 주소를 입력하십시오. 기본 Apache 시작 페이지 대신 Laravel 시작 페이지가 표시됩니다.

지금까지 이 가이드를 따랐다고 가정하면 라라벨 그것을 위해. 이 시점부터 Laravel 애플리케이션 개발을 직접 시작할 수 있습니다. Laravel 프레임워크와 사용법에 대해 자세히 알아보려면 Laravel 문서 페이지를 방문하세요.