AWS/EC2

[aws-ec2-linux2] node설치하기

Dev갱이 2021. 7. 8. 08:53
728x90

apt-get은 우분투 명령어임.

aws-linux에서는 yum을 사용.

 

sudo yum update

리눅스 처음 시작하자마자 업데이트해주고

sudo yum install -y gcc-c++ make 
curl -sL https://rpm.nodesource.com/setup_16.x | sudo -E bash - 
//최신버전 릴리즈
$ sudo yum install -y gcc-c++ make 
$ curl -sL https://rpm.nodesource.com/setup_14.x | sudo -E bash - 
//안정적인 버전 릴리즈

둘중에 나는 안정적인 버전 릴리즈를 통해 설치함.

 

위에 명령어를 실행시키고 나면
sudo yum install -y nodejs 를 입력하라는 메세지가 나온다

$ sudo yum install -y nodejs
node -v
명령어를 통해 노드 설치 확인

 

home/app/TravelAlbum이라는 폴더를 만들고

mkdir TravelAlbum
cd TravelAlbum

 

express-generator expree를 전역으로 설치

sudo npm install -g express-generator

//꼭 sudo 명령어를 사용할것!!

express --version
명령어로 설치 확인

 

cd TravelAlbum폴더로 이동후

express server
실행하면 `server`라는 폴더를 가지는 express 프로젝트 생성

 

cd server 
server폴더 이동후에
npm install

프로젝트 셋팅시키기

 

 

----vue를 설치하자

(x) sudo npm install vue-cli -g (x)

vue-cli를 전역으로 설치한다.

인터넷보고 저렇게 설치 했더니 vue가 2.9버전이 깔린다...;;

나는Vue3버전을 설치하고 싶다.
 sudo npm install -g @vue/cli
 vue create client
https://simplevue.gitbook.io/intro/01.-vue-cli
위사이트 참고함

 

 

파일zila에 인스턴스 연결할려고 하니까 계속 이런 오류가 뜸

FATAL ERROR: No supported authentication methods available (server sent: publickey,gssapi-keyex,gssapi-with-mic)

.pem파일을 다른 인스턴스꺼 쓰고 있어서 저런 에러뜸 .... 해결함.

 

지금까지 만든걸 종합하면 

앞으로 만들 폴더구성

TravelAlbum
	--server
    	node.js - express.js로 서버단 구성
        
	--clinet
    	vue.js - vue로 프론트단 구성

이렇게 되있을거고 이제 express와 vue를 연동해보자

vue.config.js파일을 만들어서

module.exports = { 
    devServer: { //① api 요청이 있을때 어디에서 처리할지를 설정
      proxy: { 
        '/api': { 
          target: 'http://localhost:3000/api',
          changeOrigin: true, 
          pathRewrite: { 
            '^/api': ''
          } 
        } 
      } 
    },
    outputDir: '../server/public',  //② 배포 파일의 위치를 지정
  }

이렇게 추가한후에,

npm run build

//이렇게 하면 server/public에 build파일이 생기는듯?

server쪽으로가서 npm start해보면 vue가 3000포트로 실행된다!.

server] $ npm start

서버명:3000으로 접속하면 vue페이지가 보임!

 

--- mysql을 설치한다.

https://techviewleo.com/how-to-install-mysql-8-on-amazon-linux-2/

이글을 참고해서 aws ec2 linux2에 mysql8버전을 설치해본다!!!

쭉 따라하다가 임시비밀번호를 log에서 찾고 그걸로 접속 한다음에 루트 비밀번호 바꾸는 과정에서

sudo grep 'temporary password' /var/log/mysqld.log

비밀번호가 뭐라뭐라 나올거고 그게 root@localhost: BEw-U?DV,7eO

뒤에 BEw-U?DV,7eO이게 비밀번호고

$ sudo mysql_secure_installation -p'BEw-U?DV,7eO'
하면 새 비밀번호 입력하라고 나옴

위에 임시비밀번호처럼 어렵게 해야 됨 ㅠ

heidisql에서 접속할려고하니

 

//에러발생
Host is not allowed to connect to this MYSQL server

mysql8에서 보안이 더 빡세져서 그런것 같다.

리눅스에서 mysql에 접속한다음에 use mysql을하고

 

select host, user from user;하면 접속하는 host가 로컬만 허용되게끔 되어있다. 이걸 꼭 접속할려는 pc에서도 허용되게 해주자.

grant all privileges on *.* to 'root또는 원하는계정'@'본인IP';
//변경사항 적용
flush privileges;
권한 줄려니까
ERROR 1410 (42000): You are not allowed to create a user with GRANT
이딴오류 발생
mysql> create user 'admin'@'%' IDENTIFIED BY 'admin';
mysql> grant all privileges ON *.* TO 'admin'@'%' with grant option;


//이유 자체가 완전 처음 만들어진 root계정에 외부접속을 허용해주게 못하는것 같다 mysql8에서
//그래서 새로 admin이라는 계정을 만들어서 거기에 루트 권한을 주고 외부접속 허용하게 만들어서
// 개발 끝나고 

mysql> revoke all on *.* from admin@'%';
mysql> flush privileges;

이렇게 해줘서 권한 외부접속 막아야겠다.

그런다음 ssh말고 그냥 일반접속으로 aws ec2 아이피주소 넣고 admin 비밀번호 쳐서 접속하면 성공!

 

 

 

vscode를 ec2에 ssh로 연결할때

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

이런오류가 뜨는데 이거 해결할려면

chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys

이렇게 주면 됨

https://medium.com/@christyjacob4/using-vscode-remotely-on-an-ec2-instance-7822c4032cff

 

 

 

728x90