ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [aws-ec2-linux2] node설치하기
    AWS/EC2 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
Designed by Tistory.