소개
Laravel은 내장 도구 및 리소스 세트를 제공하여 현대적인 PHP 애플리케이션을 개발할 수 있는 웹 애플리케이션 프레임워크입니다. 신뢰성, 성능, 효율성, 모듈성 및 보안성으로 잘 알려져 있습니다. 다양한 내장 기능 덕분에 Laravel은 인기가 엄청나게 성장했습니다. 많은 개발자가 웹 개발 프로세스를 간소화하기 위해 Laravel을 채택하고 있습니다.
이 가이드는 Ubuntu 20.04에서 새로운 Laravel 애플리케이션을 설치하고 구성하는 방법을 보여줍니다..
Ubuntu에서의 Laravel
우리는 Laravel을 다운로드하고 관리하기 위해 PHP 의존성 관리자인 Composer를 사용할 것입니다. Composer를 설치하려면 이 튜토리얼의 지침을 따르십시오. The Nginx 서버가 애플리케이션을 서비스할 것입니다. MySQL 데이터베이스를 사용하여 데모 Laravel 애플리케이션을 구축할 것입니다.
이 가이드는 몇 가지 전제 조건이 필요합니다. 이미 올바르게 구성된 Ubuntu 20.04 서버가 실행 중이라고 가정합니다. 참고로, 다음은 Ubuntu 서버 설정에 대한 빠른 가이드입니다. 또한 LEMP (Linux, Nginx, MySQL, PHP) 스택이 설치 및 구성되어 있어야 합니다. LEMP 스택 설치 및 구성.
에 대한 자세한 가이드가 있습니다. 다양한 패키지를 설치할 예정이므로 root 권한이 필요합니다. Ubuntu의 경우 기본적으로 root 사용자가 비활성화되어 있습니다. 따라서 sudo 권한이 있는 비-root 사용자에 대한 액세스가 필요합니다. 다음은 다른 사용자에게 sudo 권한을 부여하는 방법.
1단계 – PHP 모듈 설치
Laravel을 설치하기 전에 프레임워크에 필요한 몇 가지 중요한 PHP 모듈이 필요합니다. 이 모듈들은 Ubuntu 기본 패키지 저장소에서 직접 제공됩니다. 이 모듈들은 문자 인코딩, XML 및 정밀 수학과 같은 기능을 지원합니다.
먼저, APT 캐시를 업데이트하고 패키지를 설치합니다:
|
1 2 |
$ sudo apt update $ sudo apt install php-mbstring php-xml php-bcmath |
2단계 – 애플리케이션용 데이터베이스 생성
Laravel의 기능을 시연하기 위해 사용자가 방문하고 싶은 장소 목록과 이미 방문한 장소 목록을 보여주는 여행 목록 애플리케이션을 만들 것입니다. 이 데이터는 name (위치 이름) 및 visited (visited 또는 nonvisited로 표시) 필드가 있는 place 테이블에 저장할 수 있습니다. 추가 필드에는 각 항목의 고유 식별자가 포함됩니다. 데이터를 Laravel 애플리케이션과 연결하기 위해 전용 MySQL 사용자를 생성하고, 해당 사용자에게 travellist.
데이터베이스에 대한 전체 권한을 부여할 것입니다. 기본 MySQL PHP 라이브러리인 mysqlnd는 더 이상 caching_sha2_authentication을 지원하지 않습니다. 따라서 데이터베이스의 인증 방법을 mysql_native_password로 설정해야 합니다. 다음 사용자로 MySQL 셸에 액세스합니다: root:
|
1 |
$ sudo mysql |
다음으로, travellist:
|
1 |
> CREATE DATABASE travellist; |
그 후, 적절한 비밀번호를 가진 전용 사용자 travellist_user를 생성합니다:
|
1 |
> CREATE USER 'travellist_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
사용자 travellist_user에게 travellist 데이터베이스에 대한 전체 권한을 부여합니다. 이는 또한 해당 사용자가 서버의 다른 데이터베이스를 생성하거나 수정하는 것을 방지합니다:
|
1 |
> GRANT ALL ON travellist.* TO 'travellist_user'@'%'; |
MySQL 셸을 종료합니다:
|
1 |
> exit |
새로운 사용자를 테스트해 보겠습니다. 다음 명령은 travellist_user 사용자로 MySQL 셸에 로그인합니다. -p 플래그는 사용자 비밀번호를 묻는 메시지를 표시합니다:
|
1 |
$ mysql -u travellist_user -p |
사용 가능한 모든 데이터베이스를 출력합니다. 이전에 구성한 대로 travellist 및 information_schema만 표시되어야 합니다:
|
1 |
> SHOW DATABASES; |
다음으로, 데이터 테이블 places를 생성해야 합니다. 다음 MySQL 문을 실행합니다:
|
1 2 3 4 5 6 |
> CREATE TABLE travellist.places ( id INT AUTO_INCREMENT, name VARCHAR(255), visited BOOLEAN, PRIMARY KEY(id) ); |
테이블에 몇 가지 샘플 데이터를 채워 보겠습니다:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
> INSERT INTO travellist.places (name, visited) VALUES ("Tokyo", false), ("Delhi", true), ("Shanghai", false), ("Moscow", true), ("Lisbon", true), ("Denver", false), ("Berlin", false), ("Istanbul", false), ("Rio", true), ("Beijing", false), ("Helsinki", false); |
데이터가 데이터베이스에 성공적으로 저장되었는지 확인해 보겠습니다:
|
1 |
> SELECT * FROM travellist.places; |
보시다시피, 테스트 테이블에 유효한 데이터가 채워졌습니다. 이제 MySQL 셸을 종료할 수 있습니다:
|
1 |
> exit |
3단계 – 새 Laravel 앱 생성
이제 Composer를 사용하여 새 Laravel 애플리케이션을 생성할 준비가 되었습니다. 데모 애플리케이션으로 travellist를 사용하겠습니다. 이 애플리케이션은 MySQL 데이터베이스의 위치 목록을 표시하여 Laravel의 기본 구성을 보여줍니다. 사용자의 홈 디렉터리로 이동합니다:
|
1 |
$ cd ~ |
다음 단계는 Composer를 사용하여 새 Laravel 애플리케이션을 생성하는 것입니다. 그러면 기본 설정의 기본 Laravel 애플리케이션이 포함된 전용 디렉터리인 travellist가 생성됩니다. 다음 명령을 실행하세요:
|
1 |
$ composer create-project --prefer-dist laravel/laravel travellist |
앱이 생성되면 모든 구성 요소가 성공적으로 설치되었는지 확인할 수 있습니다:
|
1 2 |
$ cd travellist $ php artisan |
출력을 통해 모든 애플리케이션 파일이 제자리에 있는지 확인할 수 있습니다. 또한 모든 Laravel 명령줄 도구가 작동하는지 보장합니다. 하지만 데이터베이스를 설정하고 몇 가지 추가 조정을 하려면 여전히 앱 구성이 필요합니다.
4단계 – Laravel 구성
모든 Laravel 구성 파일은 루트 앱 디렉터리 내의 config 디렉터리 내에 저장됩니다. 또한 Composer로 Laravel을 설치하면 환경 파일도 생성됩니다. 여기에는 현재 환경에 특정한 다양한 설정이 포함되어 있습니다. 이 파일 내에 선언된 값은 config.
디렉터리의 일반 구성 파일에 설정된 값보다 우선합니다. 각 고유 설치에는 데이터베이스 연결 설정, 앱 URL, 디버그 옵션 등과 같은 값을 정의하기 위해 자체 환경 파일이 필요합니다. 환경 파일에는 데이터베이스 자격 증명, 보안 키 등과 같은 민감한 정보가 포함되어 있으므로 이 파일을 공개적으로 공유하지 않는 것을 강력히 권장합니다.
텍스트 편집기로 환경 파일을 엽니다:
|
1 |
$ nano .env |
다음은 샘플 환경 코드입니다:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
APP_NAME=TravelList APP_ENV=development APP_KEY=<unique_app_key> APP_DEBUG=true APP_URL=http://<domain_or_ip> LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=travellist DB_USERNAME=travellist_user DB_PASSWORD=password123 |
값을 하나씩 살펴보겠습니다:
APP_NAME: 이 필드는 애플리케이션의 이름을 설명합니다. 이 이름은 알림 및 메시지에 사용됩니다.APP_ENV: 애플리케이션의 현재 환경입니다.APP_KEY: 이 키는 Composer를 통해 Laravel을 설치할 때 자동으로 생성됩니다. 솔트 및 해시를 생성하는 데 사용됩니다. 변경할 필요가 없습니다.APP_DEBUG: 디버그 모드 토글입니다. 켜져 있으면 클라이언트 측에 디버그 정보가 표시됩니다.APP_URL: 앱의 기본 URL입니다. 애플리케이션 링크를 생성하는 데도 사용됩니다.DB_DATABASE: 데이터베이스의 이름입니다. 이 경우 우리가 생성한 전용 데이터베이스가 됩니다.DB_USERNAME: 데이터베이스에 연결할 사용자 이름입니다.DB_PASSWORD: 데이터베이스에 연결할 비밀번호입니다.
변경이 완료되면 파일을 저장하고 편집기를 닫습니다.
5단계 – Nginx 설정
사용자 홈 디렉토리의 로컬 폴더에 Laravel을 성공적으로 설치했습니다. 이 구성은 로컬 개발 환경에서는 잘 작동합니다. 하지만 외부 인터넷에 개방된 웹 서버에 적용하는 것은 권장되지 않습니다.
다음 단계는 애플리케이션을 다음 위치로 이동하는 것입니다: /var/www 이곳은 Nginx에서 실행되는 웹 앱의 일반적인 위치입니다. 다음 명령어를 사용하세요: mv 명령어를 사용하여 travellist을(를) 다음 위치로 이동합니다: /var/www/travellist:
|
1 |
$ sudo mv ~/travellist /var/www/travellist |
다음으로, 사용자에게 다음 폴더에 대한 쓰기 권한을 부여합니다: storage 및 cache 폴더. 이 폴더들은 Laravel 앱에서 생성된 파일들이 위치하는 곳입니다:
|
1 2 |
$ sudo chown -R www-data.www-data /var/www/travellist/storage $ sudo chown -R www-data.www-data /var/www/travellist/bootstrap/cache |
이제 애플리케이션 파일이 제자리에 준비되었습니다. 하지만 Nginx가 이 콘텐츠를 서비스하도록 설정해야 합니다. 새로운 가상 호스트 설정 파일을 생성하세요:
|
1 |
$ sudo nano /etc/nginx/sites-available/travellist |
다음은 Nginx에서 실행되는 Laravel 애플리케이션에 권장되는 설정 샘플입니다:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
server { listen 80; server_name <domain_or_ip>; root /var/www/travellist/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } |
이제 새로운 가상 호스트 설정 파일을 활성화할 차례입니다. 다음 디렉토리에 심볼릭 링크를 생성하세요: sites-enabled 디렉토리:
|
1 |
$ sudo ln -s /etc/nginx/sites-available/travellist /etc/nginx/sites-enabled/ |
다음 Nginx 명령어를 사용하여 설정 파일의 구문 오류를 테스트합니다:
|
1 |
$ sudo nginx -t |
그런 다음, Nginx를 재로드합니다:
|
1 |
$ sudo systemctl reload nginx |
이제 도메인 이름 또는 IP 주소(다음 지시어에 정의된 대로)를 사용하여 애플리케이션에 접속할 수 있습니다: server_name 지시어):
Step 6 – Customizing the Main Page
Laravel 애플리케이션 설정이 완료되었으므로 이제 작업을 시작할 수 있습니다. 데모를 위해, 데이터베이스 테이블인 places의 샘플 데이터를 보여주는 샘플 페이지를 만들어 보겠습니다. 먼저, 텍스트 에디터로 메인 라우트 파일을 엽니다:
|
1 |
$ nano routes/web.php |
이 파일에는 기본적으로 일부 내용이 포함되어 있습니다. 여기서 라우트는 정적 메서드(Route::get)를 사용하여 정의됩니다. 이 메서드는 path 및 callback function을 인수로 받습니다.
코드를 다음과 같이 변경합니다:
|
1 2 3 4 5 6 7 |
<?php use Illuminate\Support\Facades\DB; Route::get('/', function () { $visited = DB::select('select * from places where visited = ?', [1]); $togo = DB::select('select * from places where visited = ?', [0]); return view('travellist', ['visited' => $visited, 'togo' => $togo ] ); }); |
파일을 저장하고 편집기를 닫습니다. 다음으로, 데이터베이스 쿼리 결과를 사용자에게 렌더링할 레이아웃을 생성합니다. 다음 경로 내에 새 파일을 생성합니다: resource/views:
|
1 |
$ nano resources/views/travellist.blade.php |
다음 코드에서는 다음 값에 따라 두 개의 장소 목록을 생성했습니다: visited 및 togo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<html> <head> <title>여행 목록</title> </head> <body> <h1>나의 여행 버킷 리스트</h1> <h2>가보고 싶은 곳</h2> <ul> @foreach ($togo as $newplace) <li>{{ $newplace->name }}</li> @endforeach <ul> <h2>이미 방문한 곳</h2> <ul> @foreach ($visited as $place) <li>{{ $place->name }}</li> @endforeach <ul> </body> </html> |
파일을 저장하고 편집기를 닫습니다. 이제 웹 앱 페이지에 다시 접속합니다:
짜잔! 이제 콘텐츠에 MySQL 데이터베이스를 사용하는 기능적인 Laravel 애플리케이션이 완성되었습니다.
마치며
이 튜토리얼에서는 Ubuntu 20.04 서버에서 실행되는 LEMP 스택 위에 Laravel 애플리케이션을 설정하는 방법을 설명했습니다. 또한 기본 라우트를 사용자 정의하여 데이터베이스 콘텐츠를 쿼리하고 결과를 맞춤형 뷰에 표시하는 방법도 보여주었습니다. Laravel에 대한 자세한 내용은 다음의 공식 문서를 참조하세요: 뷰, 라우트, 및 데이터베이스 지원.
이 튜토리얼의 설치는 독립형 가상 머신에서 수행됩니다. 하지만 다음과 같이 할 수도 있습니다: Docker의 LEMP 스택에 Laravel 배포.
즐거운 컴퓨팅 되세요!









댓글
아직 댓글이 없습니다. 첫 번째로 작성해 보세요.