목록
1. 도커에서 우분투 이미지와 컨테이너 만들기
- Ubuntu 20.04 LTS
2. 컨테이너에 개발환경 세팅
- PHP 8.0
- Nginx
- Laravel 9
1. 도커에서 우분투 이미지와 컨테이너 만들기
1) 도커에서 우분투 이미지 pull 하기
docker pull ubuntu:20.04
2) 컨테이너 만들기
docker run -it -p 80:80 --name myContainer ubuntu:20.04 bash
2. 컨테이너에 개발환경 세팅
1) 우분투 서버 최신 버전 업데이트
apt update && apt upgrade
update는 소프트웨어 리스트만을 업데이트하고 실제로 소프트웨어는 변경되지 않는다.
repository 목록을 변경해야 하는 경우가 생기는데 그럴 경우 필요한 것 같다.
upgrade는 실제로 소프트웨어를 교체한다.
2) PHP 8.0 repository 등록
apt install software-properties-common
add-apt-repository ppa:ondrej/php
우분투에서 사용하는 패키지 관리 툴 apt에는 아직 php 8.0 버전을 정식 지원하지 않는다.
따라서 repository를 추가하여 문제를 해결한다.
외부 repository를 등록하기 위해서는 software-properties-common의 설치가 필요한 듯하다.
ppa:ondrej/php 등록 중 나오는 안내를 보면 nginx 사용자에게 ppa:ondrej/nginx repository도 등록하라는 메시지가 나온다.
프로그램 설치 시 꼼꼼하게 확인하는 습관이 필요한 것 같다.
3) nginx repository 등록
add-apt-repository ppa:ondrej/nginx
repository를 수정했으니 추가적으로 소프트 웨어 목록 업데이트를 해준다.
apt update
4. nginx, php, zip 설치
apt install nginx zip unzip
apt install php8.0-fpm php8.0-bcmath php8.0-mbstring php8.0-xml php8.0-xmlrpc php8.0-curl php8.0-gd php8.0-mysql php8.0-zip
laravel 구동 중 zip, unzip 모듈을 요구해서 같이 설치한다.
단순하게 apt install php를 실행하면 의존성에 의해서 apache관련 모듈이 설치된다.
nginx를 사용하기 위해서는 php가 아닌 fpm을 설치해야 한다.
php-fpm 설치 시 추가로 설치되는 모듈 목록
php-common, php8.0-cli, php8.0-common, php8.0-opcache, php8.0-readline
php 모듈 설치는 최소화하고 나중에 필요한 모듈이 확인될 때 추가 설치를 한다.
5. nginx의 정상 동작을 확인한다.
설치한 php8.0-fpm와 nginx서버를 켜주도록 하자
service php8.0-fpm start
service nginx start
포트를 80번으로 연결했다면 브라우저 주소창에 localhost라고 입력하는 것으로 nginx의 동작을 확인할 수 있다.
localhost
nginx가 어떤 파일을 표시하는지는 설정 파일에서 확인할 수 있다.
cat /etc/nginx/sites-available/default
설정 파일의 경로는 nginx와 우분투 버전에 따라 바뀌는 것 같으므로 설정 파일을 열어 확인해보는 것이 제일 정확하다.
root 경로에 파일을 만들어서 확인해도 되고 기본으로 제공되는 파일로 확인해도 된다.
나의 경우에는 기본으로 설치된 index.nginx-debian.html 파일로 확인했다.
6. 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/laravel9/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/php8.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
nginx 설정을 변경했으니 서버를 재시작 해준다.
service nginx restart
아래 위치에 파일을 만들고
/home/laravel9/public/index.php
php 파일이 제대로 표시되는지 확인합니다.
<?php phpinfo(); ?>
7. composer 설치
laravel을 사용하기 위해서는 composer가 필요하다.
composer를 다운로드하기 위해서는 curl을 설치해야 한다.
apt install curl
laravel composer를 설치한다.
curl -s https://getcomposer.org/installer | php
composer 파일을 다운로드 bin 디렉터리로 이동시킨다.
mv composer.phar /usr/local/bin/composer
composer가 정상적으로 설치되었는지 확인한다.
composer -v
8. laravel installer 설치
php 테스트 위해서 만들었던 laravel9 폴더를 삭제시킨다.
cd /home
rm -rf laravel9
laravel installer & laravel project 만들기
composer global require laravel/installer
composer create-project --prefer-dist laravel/laravel laravel9
laravel project의 view단이 public이기 때문에 위에서 경로를 일부러 public에 맞춰 두었다.
프로젝트명을 다르게 할 경우 nginx의 설정을 수정해 주어야 한다.
권한을 변경해 주어야 한다.
chown www-data: laravel9
www-data는 nginx가 구동되는 계정이다.
아래 파일을 열어보면
/etc/php/8.0/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 정상 구동을 확인한다.
'개발환경만들기 > Laravel' 카테고리의 다른 글
05. [Laravel] Mac OS - 라라벨 설치하기 (0) | 2022.02.21 |
---|---|
04. [Laravel] docker ubuntu container로 라라벨 개발환경 만들기(2) (0) | 2022.02.20 |
02. [Laravel] homestead & install Laravel8.X window10 virtualBox (0) | 2022.01.22 |
01. [Laravel] WAMP로 laravel 설치하기 (0) | 2021.02.28 |