웹서비스 런칭

장현웅·2023년 8월 16일
0

개념

1) 로컬 서버에서 클라우드 서버로

  • 로컬 개발 환경 : 우리는 컴퓨터가 한 개니까 서버와 클라이언트를 하나의 컴퓨터에서 동작

  • 컴퓨터를 켜놓지 않아도 접근할 수 있는 웹 서비스를 런칭하기 위해 클라이언트의 요청에 항상 응답해줄 수 있는 서버에 프로젝트를 실행

  • 언제나 요청에 응답하려면,
    1) 컴퓨터가 항상 켜져있고 프로그램이 실행되어 있어야하고,
    2) 모두가 접근할 수 있는 공개 주소인 공개 IP 주소(Public IP Address)로 나의 웹 서비스에 접근할 수 있도록 해야한다.

2) 컴퓨터 구매하기

클라이언트의 요청에 언제나 응답하기위해 내 컴퓨터를 계속 켜놓을 수 없으니 대신 계속 켜놓을 컴퓨터를 구매해야한다. 컴퓨터 = 서버

컴퓨터(=서버)를 직접 사지 않고 AWS(Amazon Web Service)라는 클라우드 서비스에서 컴퓨터를 빌리면 된다.

이런 데이터센터의 컴퓨터 한 대를 빌려서 배포한다.

3) 업로드하기

마지막으로 내가 만든 코딩 파일들을 업로드하고 실행시켜두면 끝

AWS Elastic Beanstalk

  1. AWS에서 제공하는 쉬운 배포서비스
  2. 코드를 압축하여 업로드하고, AWS의 다양한 서비스를 알아서 연결해줌
  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/

다른 것도 만들어서 배포해봐야징

  1. 코드 수정 후 업데이트

→ deploy 폴더에서 변경할 코드를 적고 저장
→ 터미널에서 eb deploy 환경이름 을 입력하고 엔터
→ 조금 기다리면 적용됨.

0개의 댓글