도찐개찐
Docker nginx + php8.0 + laravel8 설치하기 본문
* 본 포스팅은 기본 셋팅 절차에 대한 상세 설명을 다루고 있으나 귀찮으신 분들을 위해 명령어를 한번에 정리해둔 코드를 본문 최하단에 정리해 놓을 예정이니 따라하기 귀찮으시면 본문을 가볍게 읽으시고 하단 코드를 확인 하시면 됩니다.
1. 도커에서 ubuntu 이미지와 컨테이너 띄우기
$ docker pull ubuntu
$ docker run -it -p 8080:80 --name nginx_php8_laravel8 ubuntu bash
2. 컨테이너에 개발환경 세팅
* time zone 환경설정
* 하지 않아도 되는 설정이지만 해당 OS 환경 설정을 하지 않으면 패키지 설치시 마다 time zone을 설정해줘야 하는 번거로움이 있습니다.
* 패키지별 time zone 설정이 별도로 필요 하면 진행 하면 안됩니다.
$ export TZ='Asia/Seoul'
$ ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
- apt 관련 업데이트 및 php8, nginx 설치
# apt 최신버전 리스트업
$ apt update
# apt 최신버전 설치
$ apt upgrade
# 소프트웨어 관리 패키지 설치
$ apt install software-properties-common
# 최신버전 설치를 위한 별도의 레포지토리 추가
$ add-apt-repository ppa:ondrej/php
# php8 및 php-fpm 패키지 설치 / 확인
$ apt install php8.0-fpm
# nginx 설치
$ apt install nginx
- php8, nginx 설치 확인
$ php-fpm8.0 -v
$ nginx -v
- 추가 사용 패키지, 프로그램 설치
# laravel 설치에 필요
$ apt install php8.0-zip
# laravel 실행시 필요
$ apt install php8.0-mbstring
$ apt install php8.0-xml
$ apt install php8.0-curl
# 추가 사용 패키지 설치
$ apt install vim
$ apt install curl
- nginx php-fpm 설정 추가
$ vi /etc/nginx/sites-available/default
server {
....
}
server부분에 설정 추가
server {
listen 80 default_server;
listen [::]:80 default_server;
# 홈 디렉토리 설정
root /home/laravel8/public;
# Add index.php to the list if you are using PHP
#index index.html index.htm index.nginx-debian.html;
index index.php index.html;
# 자신의 로컬 도메인 설정
server_name localhost;
# 아래 주석처리
#location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404;
#}
# try_files 설정 새로 추가
try_files $uri $uri/ /index.php;
# php-fpm 설정 추가
# fastcgi_pass 경로는 vi /etc/php/8.0/fpm/pool.d/www.conf 경로에서 확인 가능
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
}
}
- 홈 디렉토리에 Laravel8 설치
# composer 2.x 버전으로 설치 (1.x 는 ubuntu20 이상에서 laravel command not found오류)
$ apt remove composer
$ curl -s https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer
# composer 2.x 버전 확인
$ composer -v
# laravel installer 설치
$ composer global require laravel/installer
# bashrc에 PATH 등록 방법
$ echo export PATH="$PATH:$HOME/.config/composer/vendor/bin" >> ~/.bashrc
# 또는
$ vi ~/.bashrc
# 제일 하단에 Laravel Composer PATH 등록
# Laravel Composer
$ export PATH="$PATH:$HOME/.config/composer/vendor/bin"
# bashrc 적용
$ source ~/.bashrc
# laravel 프로젝트 생성
$ cd /home
# laravel new {프로젝트 폴더명}
$ laravel new laravel8
# laravel 프로젝트 폴더 접근권한 설정
$ chown -R www-data laravel8
laravel 폴더 접근권한 설정은
/etc/php/8.0/fpm/pool.d/www.conf
위 파일에 설정되어있는 id와 동일하게 적용해줘야 한다.
; 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
- php-fpm 및 nginx 실행
# php-fpm 실행
service php8.0-fpm start
# nginx 실행
service nginx start
그리고 웹브라우저 localhost/index.php 를 입력하면 아래와 같이 laravel 화면을 확인 할 수 있습니다.
* 간단설치 (필요 패키지 일괄 적용), docker-compose 셋팅 github 경로 포함
- 중간에 한번 [Enter] 한번 필요
$ export TZ='Asia/Seoul' \
&& ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \
&& apt update \
&& apt -y upgrade \
&& apt -y install software-properties-common \
&& add-apt-repository ppa:ondrej/php \
&& apt -y install php8.0-fpm \
php8.0-zip \
php8.0-mbstring \
php8.0-xml \
php8.0-curl \
nginx \
vim \
curl \
&& apt remove composer \
&& curl -s https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/composer \
&& composer global require laravel/installer \
&& echo export PATH="$PATH:$HOME/.config/composer/vendor/bin" >> ~/.bashrc \
&& source ~/.bashrc \
&& composer global require laravel/installer \
&& export PATH="$PATH:$HOME/.config/composer/vendor/bin" \
&& cd /home
- 본문 nginx php-fpm 설정 추가 확인 필요
$ vi /etc/nginx/site-available/default
$ laravel new laravel8
$ chown -R www-data laravel8
$ service php8.0-fpm start
$ service nginx start
참고 : https://mosei.tistory.com/entry/Docker-Ubuntu-컨테이너에-PHP8-Nginx-Laravel8-최신환경-세팅하기 [씹어먹는 블로그]
728x90
'Infra ------------------------- > DOCKER' 카테고리의 다른 글
[Docker] 컨테이너(Container), 이미지(Image) 일괄 삭제 (0) | 2022.07.19 |
---|---|
[MacOS] Docker + React 빌드 및 배포 (0) | 2022.04.19 |
Dockerfile 주 사용 명령어 (0) | 2022.03.18 |
Docker + ubuntu + gitbook 셋팅 (0) | 2022.03.17 |
Docker ubuntu(이미지) 셋팅 (0) | 2022.03.17 |
Comments