Ubuntu에서 Laravel install Script
LAMP 스택으로 Ubuntu에서 Laravel 프로젝트 생성까지 진행하는 script.
PHP 8.3, Apache2, Composer, npm, MariaDB 차례대로 설정 후
Laravel을 Livewire, Jetstream과 함께 설치하는 것까지 한 방에 진행함.
필요시 수정해서 사용하시길
#!/bin/bash
# Snap 설치 여부 확인
read -p "VS Code를 설치하시겠습니까? (Y/N) " answer
if [[ "$answer" == "Y" || "$answer" == "y" ]]; then
echo -e "\e[48;2;255;255;0;38;2;0;0;0mVS Code 설치중..(약 1분 소요됨)\e[0m"
sudo snap install --classic code
else
echo -e "\e[48;2;255;255;0;38;2;0;0;0mVS Code 설치를 취소하였습니다.\e[0m"
fi
# 시스템 업데이트 및 업그레이드
echo -e "\e[48;2;255;255;0;38;2;0;0;0m시스템 업데이트, 업그레이드중..\e[0m"
sudo apt update
sudo apt upgrade -y
# PHP 설치
echo -e "\e[48;2;255;255;0;38;2;0;0;0mPHP 8.3 설치중..\e[0m"
sudo apt install -y php8.3 php8.3-common php8.3-cli php8.3-gd php8.3-mysqlnd php8.3-redis php8.3-curl php8.3-intl php8.3-mbstring php8.3-bcmath php8.3-xml php8.3-zip
# Apache2 설치 및 실행
echo -e "\e[48;2;255;255;0;38;2;0;0;0mApache2 설치중..\e[0m"
sudo apt install -y apache2
sudo systemctl enable apache2
sudo systemctl start apache2
# UFW(방화벽) 설정
echo -e "\e[48;2;255;255;0;38;2;0;0;0mUFW 설정중..\e[0m"
sudo ufw allow 'Apache'
sudo ufw enable
# Curl 및 Composer 설치
echo -e "\e[48;2;255;255;0;38;2;0;0;0mCurl, Composer 설치중..\e[0m"
sudo apt install -y curl
sudo apt install -y composer
# npm 설치
echo -e "\e[48;2;255;255;0;38;2;0;0;0mnpm 설치 시작\e[0m"
sudo apt install -y npm
# MariaDB 설치
echo -e "\e[48;2;255;255;0;38;2;0;0;0mMariaDB 설치중..\e[0m"
sudo apt-get install -y mariadb-server
sudo systemctl enable mariadb
sudo systemctl start mariadb.service
# MariaDB 쉘 실행 및 보안 설정 자동화
echo -e "\e[48;2;255;255;0;38;2;0;0;0mMariaDB 보안 설정중..\e[0m"
sudo mariadb << EOF
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
EOF
# Laravel 프로젝트 생성
echo -e "\e[48;2;255;255;0;38;2;0;0;0m이제 프로젝트 생성 단계입니다.\e[0m"
read -p "새로운 Laravel 프로젝트의 이름을 입력하세요: " project_name
composer create-project laravel/laravel "$project_name"
cd "$project_name"
# .env 파일 내용 변경
echo -e "\e[48;2;255;255;0;38;2;0;0;0m.env 파일 내용 변경\e[0m"
sed -i 's/DB_CONNECTION=.*$/DB_CONNECTION=mariadb/' .env
sed -i 's/# DB_HOST=.*$/DB_HOST=127.0.0.1/' .env
sed -i 's/# DB_PORT=.*$/DB_PORT=3306/' .env
sed -i 's/# DB_DATABASE=.*$/DB_DATABASE=lounge/' .env
sed -i 's/# DB_USERNAME=.*$/DB_USERNAME=root/' .env
sed -i 's/# DB_PASSWORD=.*$/DB_PASSWORD=root/' .env
echo -e "\e[48;2;255;255;0;38;2;0;0;0mMigration 시도중\e[0m"
php artisan migrate --force
echo -e "\e[48;2;255;255;0;38;2;0;0;0mLivewire 설치 시작\e[0m"
composer require livewire/livewire
echo -e "\e[48;2;255;255;0;38;2;0;0;0mJetStream 설치 시작\e[0m"
composer require laravel/jetstream
php artisan jetstream:install livewire
echo -e "\e[48;2;255;255;0;38;2;0;0;0mLaravel Installer 설치 시작\e[0m"
composer global require "laravel/installer"
echo -e "\e[48;2;255;255;0;38;2;0;0;0m환경변수 추가\e[0m"
# export PATH="~/.config/composer/vendor/bin:$PATH"
echo 'export PATH="~/.config/composer/vendor/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
echo -e "\e[48;2;0;0;255;38;2;255;255;255m"
laravel --version
echo -e "설치 완료\e[0m"
# jetstream 기능 정의(주석 제거)
config_file="config/jetstream.php"
sed -i 's/\/\/ Features::profilePhotos/Features::profilePhotos/' $config_file
sed -i 's/Features::accountDeletion/\/\/Features::accountDeletion/' $config_file
echo -e "\e[48;2;255;255;0;38;2;0;0;0mLaravel 프로젝트 생성 및 설정 완료!\e[0m"
echo -e "\e[48;2;255;255;0;38;2;0;0;0mLaravel npm run build !\e[0m"
# npm install && npm run build
npm install && npm run dev