내가 만든 라라벨 프로젝트를 가볍게 배포?를 하고 싶었다
일단 라이트세일에 내 프로젝트를 올려보자! 라고 생각했다
원래 사실 aws ec2는,, 내가 싫어한다.., 왜냐! 공부를 안하고 그냥 1년 무료라고해서 쓰다보면 어느순간
돈이 폴랑폴랑 날아가기 때문이다
내가 모르는 비용들이 자꾸 한두개씩 튀어나와서 날 괴롭혔다;
그래서 3년전에 aws가 무서워져서 탈퇴를 했다가
라이트세일이라는 좋은 친구가 나왔다고 해서 맘먹고 다시 aws를 가입했다.
aws ec2와 lightsail의 차이는 아래 글이 잘 설명해줘서 가져왔다
https://www.smileshark.kr/post/what-is-amazon-lightsail-ec2-vs-lightsail-comparison
결론적으로 , lightsail은 고정된 금액만 내면 된다는 것이 내가 선택한 가장 큰 메리트였다.
물론 ec2도 필요할때만 썼다 껐다 하면 된다는데,, 그럴바엔 그냥 맘놓고 고정된 금액 매달 내면서
내가 만든 프로젝트들을 마구마구 올려서 쓰는 것이 너무 만족스러웠다.
아래는 라라벨 프로젝트를 라이트세일 서버에 올리는 작업 순서를 정리해서 적어놓았다
1. 라이트 세일에 접속한다
https://lightsail.aws.amazon.com/ls/webapp/home
2. 인스턴스 생성을 누른다, 아래 순서대로 선택한다(자유)
*참고로,, 제일 싼 $5는 하지마세요,,
하도 mysql 서비스가 안켜져서 뭐가 문제인가 했더니만 용량문제였습니다..
개느리고 개불편해요 제발 $12부터 쓰세요 제가 1시간 삽질한 결과입니다
인스턴스 생성을 해준다.
3. ssh로 내가 만든 서버에 붙어보자
aws에서 제공해주는 쉘이 있긴한데 개구리다
난 git bash가 편해서 git bash로 붙었다
아래는 명령어를 순서대로 적어놨다
ssh -i [pem파일경로] ubuntu@[내 라이트세일 IP값]
sudo apt update
sudo apt install nginx -y
sudo apt install php php-fpm php-mysql php-cli php-xml php-mbstring php-json -y
sudo apt install git -y
sudo apt install mysql-server -y
sudo apt install composer -y
4. 아래 경로에 들어가서 내 라라벨 프로젝트를 git clone해준다
cd /var/www/html
sudo git clone https://github.com/yourusername/your-laravel-project.git
cd your-laravel-project
sudo composer install
>> 여기에서 에러나서 아래를 해줬다
sudo apt-get install php7.4-curl
>> 이거 후에도 vendor 없다고 오류나길래 mkdir로 vendor폴더를 만들어주긴했다..
sudo composer install
cp .env.example .env
sudo php artisan key:generate
5. nginx 설정을 추가한다
sudo nano /etc/nginx/sites-available/laravel
로 새파일을 만들고 아래내용을 복붙한후 ctrl + x // y // 엔터로 나온다
server {
listen 80;
server_name your-domain.com;
root /var/www/html/your-laravel-project/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # PHP 버전에 맞게 수정
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.ht {
deny all;
}
}
sudo ln -s /etc/nginx/sites-available/laravel /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default
sudo systemctl restart nginx
sudo systemctl status nginx => 서버 active 상태인지 확인
6. 권한 설정을 해준다
sudo chown -R www-data:www-data /var/www/html/your-laravel-project
sudo chmod -R 775 /var/www/html/your-laravel-project/storage
sudo chmod -R 775 /var/www/html/your-laravel-project/bootstrap/cache
+ PHP 버전이 8.x인 경우, fastcgi_pass 경로를 /var/run/php/php8.x-fpm.sock로 수정합니다.
7. db를 만들어주자
sudo mysql -u root -p
// 비번은 설정안했으므로 그냥 엔터
아래 내용 한줄씩 쳐주기
CREATE DATABASE laravel;
CREATE USER 'laravel'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON laravel.* TO 'laravel'@'localhost';
FLUSH PRIVILEGES;
EXIT;
8. env 파일을 설정해주자
nano /var/www/html/your-laravel-project/.env
아래 env내용 USERNAME이랑 PASSWORD 본인에 맞게 수정
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=your_password
9. migrate해서 테이블 만들어주기
cd /var/www/html/your-laravel-project
sudo php artisan migrate
sudo systemctl status mysql
sudo systemctl start mysql
sudo tail -f /var/log/mysql/error.log
// 만약 권한 얘기 나오면 아래 내용 한번 더 실행
sudo mysql -u root -p
CREATE DATABASE laravel;
CREATE USER 'laravel'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON laravel.* TO 'laravel'@'localhost';
FLUSH PRIVILEGES;
EXIT;
뭔가 안되면 아래코드를 한번 더 실행해서 table 정상적으로 만들어졌는지 보자,,,
sudo composer install
sudo php artisan key:generate
sudo php artisan migrate
10. 그럼 내 public ipv4로 접근하면 사이트가 뜬다! 짜잔~~
참고로 apache로 하지마세여 route가 설정이 안되어서 계속 htaccess 건들다가 머리터져서 nginx로 왔습니다
'백엔드 > PHP' 카테고리의 다른 글
라라벨에서 sentry 사용해보기 (0) | 2024.05.24 |
---|---|
[PHP] CURLOPT_TIMEOUT 과 CURLOPT_CONNECTTIMEOUT 의 차이점 (0) | 2024.05.15 |
[라라벨] cookie 메서드 (0) | 2024.02.14 |
php PSR이란? (0) | 2024.01.12 |
윈도우 laravel 로컬 개발환경 세팅하기 (2) (0) | 2023.08.14 |