1) 로컬 서버에서 클라우드 서버로
컴퓨터를 켜놓지 않아도 접근할 수 있는 웹 서비스를 런칭하기 위해 클라이언트의 요청에 항상 응답해줄 수 있는 서버에 프로젝트를 실행
언제나 요청에 응답하려면,
1) 컴퓨터가 항상 켜져있고 프로그램이 실행되어 있어야하고,
2) 모두가 접근할 수 있는 공개 주소인 공개 IP 주소(Public IP Address)로 나의 웹 서비스에 접근할 수 있도록 해야한다.
2) 컴퓨터 구매하기
클라이언트의 요청에 언제나 응답하기위해 내 컴퓨터를 계속 켜놓을 수 없으니 대신 계속 켜놓을 컴퓨터를 구매해야한다. 컴퓨터 = 서버
컴퓨터(=서버)를 직접 사지 않고 AWS(Amazon Web Service)라는 클라우드 서비스에서 컴퓨터를 빌리면 된다.
이런 데이터센터의 컴퓨터 한 대를 빌려서 배포한다.
3) 업로드하기
마지막으로 내가 만든 코딩 파일들을 업로드하고 실행시켜두면 끝
- 터미널 준비하기 -
mkdir deploy # diploy라는 폴더 생성
cp app.py deploy/application.py # app.py라는 파일을 deploy 폴더에 application.py라는 이름으로 바꿔서 복제
cp -r templates deploy/templates # templates라는 폴더를 deploy 폴더 안에 통째로 복제
pip freeze > deploy/requirements.txt # 내가 pip 명령어로 설치한 패키지들의 목록을 deploy 폴더 안에 requirements.txt 파일에 기록
cd deploy # 현재 위치를 deploy폴더로 이동
### 폴더 안에 venv가 있으면 안됨.
- application.py에서 세팅하기(몇몇 수정하기) -
app = Flask(__name__) → application = app = Flask(__name__)
app.run('0.0.0.0', port=5000, debug=True) → app.run()
## 들여쓰기 조심
- 패키지 설치하기 -
pip install awsebcli # 내 컴퓨터 터미널에서 배포
- 보안 자격증명 -
eb init
- 초기 설정 -
eb create myweb
- 코드 수정 & 업데이트 -
eb deploy myweb
현재 오류 때문인지 배포가 안된다. 검색을 해봤지만 잘 나오지 않는 듯해서 내일 도움을 받아 자세히 알아봐야겠다..
터미널에서는
2023-08-17 05:30:12 ERROR Instance deployment failed to install application dependencies. The deployment failed.
2023-08-17 05:30:12 ERROR Instance deployment failed. For details, see 'eb-engine.log'.2023-08-17 05:30:14 ERROR [Instance: i-01eb5d006755f7398] Command failed on instance. Return code: 1 Output: Engine execution has encountered an error..
2023-08-17 05:30:14 INFO Command execution completed on all instances. Summary: [Successful: 0, Failed: 1].
2023-08-17 05:31:17 ERROR Create environment operation is complete, but with errors. For more information, see troubleshooting documentation.
ERROR: ServiceError - Create environment operation is complete, but with errors. For more information, see troubleshooting documentation.
이런 오류가 났고
ed log로 오류 기록을 보니
2023/08/17 05:30:12.619993 [ERROR] An error occurred during execution of command [app-deploy] - [InstallDependency]. Stop running the command. Error: fail to install dependencies with
requirements.txt file with error Command /bin/sh -c /var/app/venv/staging-LQM1lest/bin/pip install -r requirements.txt failed with error exit status 1. Stderr:ERROR: Could not find a version that satisfies the requirement pywin32==306 (from versions: none)
ERROR: No matching distribution found for pywin32==306
이런 오류가 발생했다. requirements.txt에 있는 pywin32==306이라는 것이 설치가 안되어있다는 것인데.. 알아서 생성된 requirements.txt가 날 배신하다니 그래서 그냥 requirements.txt에
beautifulsoup4==4.12.0
bs4==0.0.1
certifi==2022.12.7
charset-normalizer==3.1.0
click==8.1.3
colorama==0.4.6
dnspython==2.3.0
Flask==2.2.3
idna==3.4
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.2
pymongo==4.3.3
requests==2.28.2
soupsieve==2.4
urllib3==1.26.15
Werkzeug==2.2.3
이 목록만 넣고 다시 eb init을 했다. 근데 또 오류가 났다.
Cannot setup CodeCommit because there is no Source Control setup, continuing with initialization
이것은 이전에 init을 했던 상태로 또 해서 나는 오류였다.
eb init --interactive
으로 다시 자격증명을 하고 eb create myweb
으로 초기 설정을 하니까 배포가 되었다.
http://myweb.eba-bjp2jgb6.ap-northeast-2.elasticbeanstalk.com/
다른 것도 만들어서 배포해봐야징
→ deploy 폴더에서 변경할 코드를 적고 저장
→ 터미널에서 eb deploy 환경이름 을 입력하고 엔터
→ 조금 기다리면 적용됨.