• Feed
  • Explore
  • Ranking
/

    Ubuntu에서 Laravel install Script

    C
    CodeReaper
    2024.05.24
    ·
    4 min read

    until-205

    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