개발환경만들기/Laravel

04. [Laravel] docker ubuntu container로 라라벨 개발환경 만들기(2)

drizzle0925 2022. 2. 20. 16:38
728x90

docker로 Laravel 개발환경을 만들기

개발환경 확인하기

ubuntu version

$ lsb_release -a

No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04 LTS
Release:	20.04
Codename:	focal

 

php version

$ php --version

PHP 7.4.3 (cli) (built: Nov 25 2021 23:16:22) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

 

nginx version

$ nginx -v

nginx version: nginx/1.18.0 (Ubuntu)

 

database version

$ mysql --version

mysql  Ver 15.1 Distrib 10.3.32-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

 

게시글에서 사용한 docker 버전

$ docker -v
Docker version 20.10.12, build e91ed57

Ubuntu 20.04 설치

우분투 이미지를 내려받아 컨테이너를 생성해보자

이미지를 내려받기 위해서는 docker pull 명령어를 사용한다.

$ docker pull ubuntu:20.04

특정 버전을 내려받고자 한다면 위와 같이 버전명을 명시해주어야 하며 가장 최신 안전화 버전을 내려받고자 한다면 다음과 같이 적어주면 된다.

$ docker pull ubuntu:latest

버전명을 붙이지 않으면 default는 latest라고 한다.

 

ubuntu 20.04 LTS image pull하기

 

pull 한 image 확인

docker images


container에 개발환경 만들기 

1. container 만들기

docker run -it -p 80:80 --name mycontainer ubuntu:20.04 bash

 

2. 우분투 소프트웨어 최신화 시키기

apt update && apt upgrade

update : 소프트웨어 리스트를 최신화시킨다.

upgrade : 설치된 소프트웨어를 최신화시킨다.

 

 

3. PHP 8.0 repository 등록

apt install software-properties-common
add-apt-repository ppa:ondrej/php

 

4. nginx repository 등록

add-apt-repository ppa:ondrej/nginx

 

5. 레포지토리를 수정했으니 추가적으로 소프트웨어 목록을 업데이트해준다.

apt update

 

6. nginx, php, zip 설치

apt install nginx zip unzip

apt install php7.4-fpm php7.4-bcmath php7.4-mbstring php7.4-xml php7.4-xmlrpc php7.4-curl php7.4-gd php7.4-mysql php7.4-zip

 

laravel 구동 중 zip, unzip 모듈을 요구해서 같이 설치한다.

 

단순하게 apt install php를 실행하면 의존성에 의해서 apache관련 모듈이 설치된다.

nginx를 사용하기 위해서는 php가 아닌 fpm을 설치해야 한다.

 

php 모듈 설치는 최소화하고 나중에 필요한 모듈이 확인될 때 추가 설치를 한다.

 

7. nginx의 정상 동작을 확인한다.

설치한 php7.4-fpm과 nginx 서버를 켜주도록 하자

service php7.4-fpm start
service nginx start

 

8. nginx 동작 확인

포트를 80번으로 연결했다면 브라우저 주소창에 localhost라고 입력하는 것으로 nginx의 동작을 확인할 수 있다.

localhost

 

9. PHP 정상 동작을 확인

nginx를 확인했다면 다음은 php 파일의 동작 여부이다.

nginx에서 php 파일의 동작 여부를 확인하려면 설정 파일을 수정해주어야 한다.

 

에디터는 nano 혹은 vim을 사용하면 되고 docker로 우분투 컨테이너를 만들면 이 에디터들이 설치되어 있지 않다.

기호에 따라 설치하자.

apt install nano

apt install vim

 

nginx 설정 파일을 편집기로 엽니다.

vim /etc/nginx/sites-available/default

 

root와 fpm 부분은 각자 환경에 맞게 수정합니다.

server {
    listen 80;
    server_name example.com;
    root /home/laravel8/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index 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_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

 

설정을 변경했으니 nginx 서버를 재실행한다.

service nginx restart

 

아래 위치에 파일을 만든다.

vim /home/laravel8/public/index.php

 

php 파일 내용을 다음과 같다.

<?php phpinfo(); ?>

 

작성한 php 파일이 제대로 화면에 표시되는지 브라우저에서 확인한다.

localhost

 

11. composer 설치

laravel을 사용하기 위해서는 composer가 필요하다.

composer를 다운로드하기 위해서는 curl을 설치해야 한다.

apt install curl

 

12. laravel composer를 설치한다.

curl -s https://getcomposer.org/installer | php

 

composer 파일을 다운로드 bin 디렉터리로 이동시킨다.

mv composer.phar /usr/local/bin/composer

 

composer가 정상적으로 설치되었는지 확인한다.

composer -v

위의 명령어를 입력했을 때 설명이 좌르륵 나온다면 정상적으로 설치된 것이다.

 

13. laravel installer 설치

php 테스트를 위해서 만들었던 laravel8 폴더를 삭제시킨다.

cd /home
rm -rf laravel8

 

laravel installer 설치

composer global require laravel/installer

 

laravel project 만들기

composer create-project --prefer-dist laravel/laravel=8.* laravel8

 

설치된 라라벨 버전 확인

cd /home/laravel8
php artisan --version

Laravel Framework 8.83.1

laravel project의 view단이 public이기 때문에 위에서 경로를 일부러 public에 맞춰 두었다.

프로젝트명을 다르게 할 경우 nginx의 설정을 수정해 주어야 한다.

 

 

페이지를 테스트하기 전에 권한을 변경해야 한다.

chown -R www-data: laravel8

www-data는 nginx가 구동되는 계정이다.

 

권한을 변경하지 않으면 에러가 발생한다.

 

 

아래 파일을 보면

/etc/php/7.4/fpm/pool.d/www.conf

user와 group값을 확인할 수 있다.

; Unix user/group of processes 
; Note: The user is mandatory. If the group is not set, the default user's group 
; will be used. 

# 이 부분 www-data에서 root로 변경하는것이 나중에 로컬환경과 마운트 할때 편하다 
user = www-data 
group = www-data

 

laravel 정상 구동을 확인한다.


mariaDB 설치하기

설치 전에 apt update를 해줘야 하는데 위에서 했으므로 이과정을 건너뛴다.

 

MariaDB 서버를 설치한다.

apt install mariadb-server

 

mariadb-server 패키지를 설치를 완료했다면 mariadb-client를 설치한다.

이 클라이언트 모듈은 MariaDB에 접속하기 위한 다양한 도구가 포함되어 있다고 보면 된다.

apt install mariadb-client

 

mariaDB를 실행한다.

service mysql start

 

다음은 MariaDB secure 설정을 해준다.

Secure 설정은 Unix socket authentification 활성화, root password 설정, anonymous users 활성화 여부, 원격으로 root login 여부, test DB 삭제 여부를 설정할 수 있다. 대부분은 Default 값으로 설정하고, 추후에 SQL 명령어나 환경 설정 파일을 통해서 변경이 가능하다.

mysql_secure_installation

 

MariaDB에 로그인하여 보안을 유지하려면 현재
루트 사용자의 암호. MariaDB를 방금 설치했다면
아직 루트 암호를 설정하지 않은 경우 암호는 비어 있습니다.
여기에서 엔터를 눌러야 합니다.

 

패스워드를 설정하겠습니까? [Y/n] Y

원하는 패스워드를 지정하면 됩니다. (111111, 123456, abcdef, abc123 등등)

 

익명 계정을 삭제하겠습니까? [Y/n] Y

 

MariaDB의 관리자 계정인 root 계정으로 원격에서의 접속을 허용할 것인가? [Y/n] Y

 

test db를 삭제할 것인가? [Y/n] Y

 

지금까지 설정한 내용을 즉시 반영하겠는가? [Y/n] Y

 

이것으로 MariaDB의 설치와 보안설정이 완료되었다.

 

접속 테스트를 해보자

아래 명령어를 입력한다.

mysql -u root -p

 

비밀번호를 입력한다.

 

MariaDB라고 표시되면 제대로 잘 접속된 것이다.

 

mysql version 확인

select version();

 

이것으로 개발환경 세팅을 완료했습니다.

다음에는 라라벨에서 필요한 설정에 대해서 알아보겠습니다.

고생하셨습니다.

728x90