[RAILS] Fehler beim Bereitstellen von EC2 mit CircleCI

Einführung

Einführung von CircleCI in einer persönlichen App, Beim Versuch, auf EC2 bereitzustellen, sind einige Fehler aufgetreten, daher werde ich die Lösung beschreiben.

Umgebung

config.yml

version: 2
 
jobs:
    #Job bauen:Erstellen und testen Sie einen Docker-Container auf CircleCI
    build:
        docker:
            - image: alpine
        steps:
            - checkout
            - run:
                name: Echo Test
                command: echo "CircleCI Test"
    #Job bereitstellen:SSH in EC2 und führen Sie die Bereitstellung durch
    deploy:
        machine:
            image: circleci/classic:edge
        steps:
            - checkout
            #Rufen Sie den in CircleCI registrierten privaten Schlüssel auf
            - add_ssh_keys:
            #SSH unter Verwendung von in CircleCI registrierten Umgebungsvariablen
            - run: ssh ${USER_NAME}@${HOST_NAME} 'cd /var/www/myapp && git pull origin master'
 
workflows:
    version: 2
    # build_and_Job bereitstellen:Job rief zuerst an
    build_and_deploy:
        #Rufen Sie Build- und Deployment-Jobs auf
        jobs:
            - build
            - deploy:
                requires:
                    #Führen Sie den Build-Job vor dem Bereitstellungsjob aus!
                    - build
                #Führen Sie den Bereitstellungsjob nur aus, wenn er an den Hauptzweig gesendet wird
                filters:
                    branches:
                        only: master

Probleme und Lösungen, die aufgetreten sind

① Fehler, weil der Port nicht geöffnet ist

ssh: connect to host ************* port 22: Connection timed out

【Lösung】 Bearbeiten Sie den Eingang der EC2-Sicherheitsgruppe wie folgt. Hinweis) Aus Sicherheitsgründen ist es vorzuziehen, einen Zwischenserver zu verwenden.

Portbereich Quelle
22 Meine IP xxx.xxx〜

Portbereich Quelle
22 Benutzerdefiniert 0.0.0.0/0

② Fehler aufgrund einer Nichtübereinstimmung des privaten Schlüssels

(1) Führen Sie den folgenden Befehl auf EC2 aus, um einen PEM-Schlüssel zu erstellen (nennen Sie ihn z. B. circleci-key, da er möglicherweise mit anderen Schlüsseln in Konflikt steht).

ssh-keygen -m pem

(2) Führen Sie den folgenden Befehl auf EC2 aus und kopieren Sie den in (1) erstellten öffentlichen Schlüssel (key name.pub) in autorisierte_Tasten.

cat ~/.ssh/circleci-key.pub >> authorized_keys

③ Führen Sie den folgenden Befehl auf EC2 aus, um den in ① erstellten privaten Schlüssel anzuzeigen

cat ~/.ssh/circleci-key

④ Setzen Sie den angezeigten privaten Schlüssel auf den SSH-Schlüssel von CircleCI (Zu diesem Zeitpunkt enthalten Sie ----- BEGIN RSA PRIVATE KEY ----- und ----- END RSA PRIVATE KEY -----)

Schließlich

In meinem Fall wurde dadurch der Fehler behoben. Versuch es bitte.

Referenz

[Verwendung von CircleCI](https://suwaru.tokyo/%E3%80%90%E4%BD%BF%E3%81%84%E6%96%B9%E3%80%91circleci%E3%81%A8 % E3% 81% AF% EF% BC% 9Fec2% E3% 81% ABssh% E3% 81% 97% E3% 81% A6% E3% 83% 87% E3% 83% 97% E3% 83% AD% E3 % 82% A4% E8% 87% AA% E5% 8B% 95% E5% 8C% 96 /)

Recommended Posts

Fehler beim Bereitstellen von EC2 mit CircleCI
Fehler beim Bereitstellen von EC2
Fehler beim Bereitstellen von Docker auf Schienen mit Notizen
DB-Fehler bei der Bereitstellung mit Heroku
EC2 auf Docker-Compose
Fehler beim Installieren der Ruby-Ausführungsumgebung auf der EC2-Instanz
Release: Durchführen der Bereitstellung gibt Fehlercode 400
Rezept für die Bereitstellung von Rails-Apps unter AWS EC2
Möglichkeit bei der Bereitstellung auf EC2, aber im Fehlerprotokoll wird nichts angezeigt
Festplattenerweiterung beim Booten von CentOS 8.2 von aarch64 mit EC2
Starten Sie EC2 Rails
Stellen Sie RAILS auf EC2 bereit
Fehler bei der Bundle-Installation
1002 Fehler bei Tomcat + WebSocket
Fehlerbehebung bei Heroku
Zeigt einen detaillierten Fehler in Logger an, wenn Java auf dem Server ausgeführt wird
Fügen Sie Oracle Java 8 in CircleCI 2 ein
Fehler beim Spielen mit Java
Installieren Sie Docker auf AWS EC2
Fehler bei der Verwendung von Schienen Capybara
SpringBoot + Mybatis-Fehler beim Booten
Fehler beim Einführen der SNS-Authentifizierung