ddps-lab / architect-cloud

Kubernetes , AWS Serveless
6 stars 4 forks source link

Fix geoinfo api #42

Closed mumat0103 closed 4 months ago

mumat0103 commented 4 months ago

ip와 지리적 정보를 받아오는 api를 수정하였습니다. 기존에 사용하던 api 콜 구조가 잘못되어 api 서버 측에서 요청을 차단한 것으로 판단됩니다. 다른 방법으로 api를 호출하여 정보 출력할 수 있게 수정하였습니다. 2024_code 브랜치에서 Pull 받고 확인해주시고 안되면 알려주시기 바랍니다.

red0sena commented 4 months ago

저같은경우 아래와 같이 Internal Server Error가 발생하였습니다.

image

ubuntu 22.04에서 아래와 같은 usercode로 실행하였습니다.

#!/bin/bash -xe
apt update -y
apt install nodejs unzip wget npm mysql-server awscli tree nmap -y
cd /home/ubuntu
git clone -b 2024_code --single-branch https://github.com/ddps-lab/architect-cloud.git
# git clone https://github.com/ddps-lab/architect-cloud.git
cd /home/ubuntu/architect-cloud/2024
chown ubuntu -R monolithic_code/
cd monolithic_code
npm install
mysql -u root -e "CREATE USER 'nodeapp' IDENTIFIED WITH mysql_native_password BY 'coffee'";
mysql -u root -e "GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'nodeapp'@'%' WITH GRANT OPTION;"
mysql -u root -e "CREATE DATABASE COFFEE;"
mysql -u root -e "USE COFFEE; CREATE TABLE suppliers(id INT NOT NULL AUTO_INCREMENT,name VARCHAR(255) NOT NULL,address VARCHAR(255) NOT NULL,city VARCHAR(255) NOT NULL,state VARCHAR(255) NOT NULL,email VARCHAR(255) NOT NULL,phone VARCHAR(100) NOT NULL,PRIMARY KEY ( id ));"

sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/mysql.conf.d/mysqld.cnf
systemctl enable mysql
service mysql restart
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
export APP_DB_HOST=$(curl http://169.254.169.254/latest/meta-data/local-ipv4 -H "X-aws-ec2-metadata-token: $TOKEN")
export APP_DB_USER=nodeapp
export APP_DB_PASSWORD=coffee
export APP_DB_NAME=COFFEE
export APP_PORT=80

node index.js &
kh3654po commented 4 months ago

저는 동작하긴합니다만 나라이름, 리전이름, 타임존 등이 출력되지않습니다. 또한 변경한 이유가 퍼블릭 ip를 보여주기위함인가요? private ip가 출력되기에 여쭤봅니다.

image
kh3654po commented 4 months ago

@red0sena 경환님 저는 아래 명령어에서 awscli를 설치시 "E: Package 'awscli' has no installation candidate" 에러가 발생하여 코드를 수정했었습니다. 생성한 인스턴스에 접속하고 로그를 보고 설치가 잘됐는지 확인해 보실래요? apt install nodejs unzip wget npm mysql-server awscli tree nmap -y

apt install nodejs unzip wget npm mysql-client tree nmap -y sudo snap install aws-cli --classic

red0sena commented 4 months ago
image

@mumat0103 정상작동합니다.

red0sena commented 4 months ago

@kh3654po 정상 작동하는것 보니 awscli문제는 아닌듯 합니다.

mumat0103 commented 4 months ago

저는 동작하긴합니다만 나라이름, 리전이름, 타임존 등이 출력되지않습니다. 또한 변경한 이유가 퍼블릭 ip를 보여주기위함인가요? private ip가 출력되기에 여쭤봅니다.

@kh3654po 서버가 외부로 라우팅 될 때 사용되는 ip와 ip의 지리적 정보를 가져오기 위함입니다.

mumat0103 commented 4 months ago

생각해보니 443포트는 api 서버에 접근하기 위한 포트 지정이라 교수님이 말씀하신대로 incoming 포트를 열어줄 필요는 없습니다.