라라벨의 배포환경 관련 명령어 정리

라라벨배포nginx1. 인스턴스 초기화 후 리눅스(우분투) 초기설정

sudo passwd root // 관리자 비밀번호설정
sudo apt-get update // 패키지 업데이트 확인
sudo apt-get upgrade -y //패키지 업데이트 실시
sudo apt-get install vim // vim 설치
timedatectl set-timezone Asia/Seoul // 시간대설정
sudo apt-get install net-tools // netstat 등의 툴 설치

2. NodeJS / NPM 설치

curl -sL https://deb.nodesource.com/setup_16.x | sudo bash -E -
npm install // laravel의 메인 폴더에서 실행
// 서버 설정 파일은 이미지 참조

3. php설치

sudo apt install ca-certificates apt-transport-https software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2
sudo apt-get install php8.2-xml
sudo apt-get install php8.2-curl
sudo apt-get install php8.2-mysql
sudo apt install php-intl
sudo apt install php8.2-fpm
systemctl status php8.2-fpm

// 아래의 내용을 nginx의 설정파일에 추가후 nginx재시작

server {
    # . . . other code
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }
}

PHP에서 오류나면 해볼것들

pho —ini // php.ini위치 찾기
php.ini 에서 extension주석 해제 , curl이나 itnl이나 해당 프로젝트에 참조하는 익스텐션이있는 경우

업로드 기능이 있는 경우 수정 필요한 부분

upload_max_filesize = 20M // php.ini의 용량제한 20mb 으로 변경
post_max_size = 20M // php.init의 post용량제한 20mb로 변경
client_max_body_size 10M; // nginx의 용량제한 10mb으로 변경

파일업로드시의 에러에 대한 추가 설명

php.ini에 설정된 upload_max_filesize의 설정된 용량을 초과하는 경우

화면에서 이미지 파일등을 업로드해도 PHP에서 파일 형식이 application/octet-stream으로 변경된다

그러므로 알수없는 파일이 되고 이미지 형식을 잃게 된다..

참조

4. 컴포저설치

sudo apt install wget php-cli php-zip unzip curl
curl -sS https://getcomposer.org/installer |php
sudo mv composer.phar /usr/local/bin/composer
composer update
composer install // laravel의 메인 폴더에서 실행
php artisan key:generate
php artisan storage:link
php artisan config:cache

5. 라라벨의 메인디렉토리에서 파일접근권한 변경

sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache
chmod -R 775 storage
chmod -R 775 bootstrap/cache

6. DB설치

Mysql을 설치할 경우 해당 디비를 생성후 해당 유저에게 권한을준다

또한 Mysql이 5.7버전 이상일 경우 해당 파일을 수정해서 Mysql로 외부접속을 허용해준다

/etc/mysql/mysql.conf.d/mysqld.cnf 파일의 bind-address를 0.0.0.0 로 수정


7. 배포

composer install --optimize-autoloader --no-dev
php artisan config:cache
php artisan route:cache
php artisan view:cache // 화면 변경시 필수
sudo systemctl stop mysql.service // 현재 인스턴스에 메모리가 부족해서 일시중단필요
npm run build // 메모리 사용량으로 이해 mysql을 종료후, 빌드해준다 
sudo systemctl restart php8.2-fpm.service
sudo systemctl restart nginx.service
sudo systemctl start mysql.service

php artisan sitemap:generate // sitemap.xml생성
php artisan database:backup // database백업


참조

https://laravel.kr/docs/9.x/deployment

Aug 8, 2023 Views 287