처음 AWS에 배포하는 방법 ⑥(EC2 서버에 App을 복제하고 업로드)
마지막까지 기사
처음 AWS에서 배포하는 방법 ①(인스턴스 생성)
처음 AWS에서 배포하는 방법 ②(Elastic IP 생성 및 연결)
처음 AWS에 배포하는 방법 ③(AWS 보안 그룹 설정)
처음 AWS에서 배포하는 방법 ④(EC2 인스턴트에 SSH 로그인)
처음 AWS에서 배포하는 방법 ⑤(EC2 환경 구축, Ruby, MySQL)
EC2 인스턴스(서버)를 만들고 공용 IP를 Elastic IP로 고정합니다.
일반 사용자가 액세스할 수 있도록 보안 그룹 설정 추가(입구 만들기)
ID와 PW를 사용하여 EC2에 로그인하여 환경을 구축했습니다.
자세하게 설명하면, 이런 곳입니다.
이번에는 WEB App을 EC2 인스턴스에 업로드하겠습니다.
웹 앱을 EC2에 복제
현재 단계
EC2 서버에 응용 프로그램 코드를 복제하려고하면 permission denied와 오류가 발생합니다.
원인
Github에서 보고 이 권한이 없는 EC2 인스턴스를 거부합니다.
대책
EC2 인스턴스의 SSH 공개 키를 Github에 등록합니다.
SSH 키를 Github에 등록하면 Github이 인증하고 복제를 허용합니다.
작업
EC2 서버의 SSH 키 쌍 만들기
현재 단계
EC2 서버에 응용 프로그램 코드를 복제하려고하면 permission denied와 오류가 발생합니다.
원인
Github에서 보고 이 권한이 없는 EC2 인스턴스를 거부합니다.
대책
EC2 인스턴스의 SSH 공개 키를 Github에 등록합니다.
SSH 키를 Github에 등록하면 Github이 인증하고 복제를 허용합니다.
작업
EC2 서버의 SSH 키 쌍 만들기
[ec2-user@ip-172-31-23-189 ~]$ ssh-keygen -t rsa -b 4096
3. 다음이 표시되므로 엔터를 누릅니다.
Enter file in which to save the key (/home/ec2-user/.ssh/id_rsa):
4. 추가 엔터를 누른다(2회)
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
이것으로 아래와 같은 표시를 할 수 있으면, 성공하고 있습니다.
Your identification has been saved in /home/ec2-user/.ssh/id_rsa.
Your public key has been saved in /home/ec2-user/.ssh/id_rsa.pub.
The key fingerprint is:
3a:8c:1d:d1:a9:22:c7:6e:6b:43:22:31:0f:ca:63:fa ec2-user@ip-172-31-23-189
The key's randomart image is:
+--[ RSA 4096]----+
| + |
| . . = |
| = . o . |
| * o . o |
|= * S |
|.* + . |
| * + |
| .E+ . |
| .o |
+-----------------+
5. SSH 공개 키를 표시하고 값을 복사하기 위해 다음 명령을 구현
[ec2-user@ip-172-31-23-189 ~]$ cat ~/.ssh/id_rsa.pub
6.cat에서 표시한 공개키(긴 텍스트)를 복사
복사한 공개 키를 Github에 액세스하여 등록
htps : // 기주 b. 코 m/세친 gs/케 ys 방문
2. 화면 오른쪽 상단의 녹색 "NEW SSH KEY"를 클릭
3. 타이틀을 기입한다(뭐든지 가능)
4. 공개키(ssh-rsa에서)를 붙여넣기
오류 "Key is invalid. You must supply a key in OpenSSH public key format"이 표시되면,
붙여 넣은 코드에 "ssh-rsa"가 포함되어 있는지 확인하십시오.
5. "Add SSH KEY"를 클릭하여 저장.
6. Github PW 입력
7. 완료
8. 등록되어 있는지 확인
[ec2-user@ip-172-31-23-189 ~]$ ssh -T [email protected]
아래와 같은 표시가 나왔을 경우: 「 yes 」를 선택
The authenticity of host 'github.com (IP ADDRESS)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
이때
Warning: Permanently added the RSA host key for IP address '52.111.11.11' to the list of known hosts.
라고 표시되면 EC2로 다시 들어갑시다. 업데이트되었으므로 오류없이 넣습니다.
성공하면 아래와 같은 표시가 됩니다.
또는 다음이 표시되는 경우 : 'yes'를 선택
The authenticity of host 'github.com (IP ADDRESS)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?
성공하면 아래와 같은 표시가 나온다
[ec2-user@ip-172-31-23-189 ~]$ ssh -T [email protected]
Hi <Githubユーザー名>! You've successfully authenticated, but GitHub does not provide shell access.
참고: GitHub 공식
App 측에서 Unicorn 설치
EC2가 Git을 복제하기 전에 준비로 Unicorn을 설치하십시오.
Gemfile에 gem'unicorn' 추가
Gemfile.
group :production do
gem 'unicorn', '5.4.1'
end
bundle install로 설치
$ bundle install
config/unicorn.rb 만들기
추가한 unicorn.rb에 다음을 기술
unicorn.rb
app_path = File.expand_path('../../', __FILE__)
#アプリケーションサーバの性能を決定する
worker_processes 1
#アプリケーションの設置されているディレクトリを指定
working_directory app_path
#Unicornの起動に必要なファイルの設置場所を指定
pid "#{app_path}/tmp/pids/unicorn.pid"
#ポート番号を指定
listen 3000
#エラーのログを記録するファイルを指定
stderr_path "#{app_path}/log/unicorn.stderr.log"
#通常のログを記録するファイルを指定
stdout_path "#{app_path}/log/unicorn.stdout.log"
#Railsアプリケーションの応答を待つ上限時間を設定
timeout 60
#以下は応用的な設定なので説明は割愛
preload_app true
GC.respond_to?(:copy_on_write_friendly=) && GC.copy_on_write_friendly = true
check_client_connection false
run_once = true
before_fork do |server, worker|
defined?(ActiveRecord::Base) &&
ActiveRecord::Base.connection.disconnect!
if run_once
run_once = false # prevent from firing again
end
old_pid = "#{server.config[:pid]}.oldbin"
if File.exist?(old_pid) && server.pid != old_pid
begin
sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
Process.kill(sig, File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH => e
logger.error e
end
end
end
after_fork do |_server, _worker|
defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection
end
production.rb를 열고 아래 설명을 주석 처리합니다.
config/environments/production.rb
config.assets.js_compressor = :uglifier
config/environments/production.rb
#config.assets.js_compressor = :uglifier
응용 프로그램을 저장할 디렉터리 만들기
디렉토리 만들기
#/var/wwwディレクトリを作成(後述するCapistranoの初期値がwwwなので、ディレクトリをwwwに設定しています)
[ec2-user@ip-172-31-23-189 ~]$ sudo mkdir /var/www/
작성한 디렉토리를 chown 명령으로 권한 설정
#作成したwwwディレクトリの権限をec2-userに変更
[ec2-user@ip-172-31-23-189 ~]$ sudo chown ec2-user /var/www/
만든 디렉토리로 마이그레이션
[ec2-user@ip-172-31-23-189 ~]$ cd /var/www/
git clone으로 앱을 EC2에 다운로드
Github에서 Git clone을 위한 리포지토리 URL 가져오기
git clone으로 만든 디렉토리에 앱 복제
[ec2-user@ip-172-31-23-189 www]$ git clone リポジトリURL
Github 계정 이름과 PW를 입력하고,
다운로드가 시작됨
remote: Enumerating objects: 298, done.
remote: Counting objects: 100% (298/298), done.
remote: Compressing objects: 100% (190/190), done.
remote: Total 298 (delta 109), reused 274 (delta 86), pack-reused 0
Receiving objects: 100% (298/298), 58.53 KiB | 365.00 KiB/s, done.
Resolving deltas: 100% (109/109), done.
완료
이제 EC2에 앱이 복제되었습니다.
다음 번에는 EC2에 gem 설치 및 설정 변경
다음 기사는 여기
처음 AWS에 배포하는 방법 ⑦(EC2 서버에 앱을 복제하고 업로드)
Reference
이 문제에 관하여(처음 AWS에 배포하는 방법 ⑥(EC2 서버에 App을 복제하고 업로드)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gyu_outputs/items/acd67707e195bb792c8a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(처음 AWS에 배포하는 방법 ⑥(EC2 서버에 App을 복제하고 업로드)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gyu_outputs/items/acd67707e195bb792c8a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)