먼저 생성할 프로젝트 폴더를 엽니다.
해당 폴더의 경로에서
$ npm init
을 사용하면 package.json파일이 생성이됩니다.
해당 패키지에서 사용할 라이브러리를 지정해주는 설정파일이라고 생각하시면됩니다.
$ npm install -i express-generator
익스프레스를 사용할 것이므로, express의 구조를 자동으로 설정해주는 generator을 설치해줍니다.
설치가 완료되면, express명령어로 구조를 설정합니다.
$ express -ejs
저는 ejs템플릿엔진을 사용할 것이므로, 해당옵션을 지정해줍니다.
완료가 되면 bin, public, routes, views폴더가 자동으로 생성이 되는데 module설치는 되지않은 상태입니다.
$ npm install
package.json파일에 있는 의존성들을 찾아 설치해주는 명령어입니다. 라이브러리를 담은 node_module폴더를 생성합니다.
기본적인 폴더구조 및 라이브러리 설치가 완료되었으므로,
$ npm start
로컬 서버를 구동시켜주면 테스트프로젝트 생성 및 서버테스트가 마무리 됩니다.
Google Cloud Platform은 구글에서 제공하는 클라우드 플랫폼서비스입니다.
사용자는 크게 두가지를 이용할 수 있는데, App engine과 Compute Engine입니다.
App engine은 코드만 추가하면 자동으로 도메인연결로 진행이됩니다. 사용해본 결과 방법은 매우 간단하지만, 코드를 수정할 때 마다 다시 수정사항을 구글 클라우드에 반영해야하므로, 시간이 오래걸린다는 점이 있습니다. GCP 앱엔진으로 nodejs 배포하기
해당 링크에서 vm: true로 되어있는데, env: flex로 변경하시면 됩니다.
engine은 node 버전에 맞게 작성하시면 됩니다.
Compute Engine은 VM을 제공받아, 해당 VM에서 서버를 구동시키면, 외부IP로 배포가 됩니다.외부 IP와 도메인네임을 연결하면 도메인네임으로 접속가능
VM에서 해당 프로젝트서버를 구동시켜야하기 때문에 개발환경에 대해 세팅해줘야 합니다.
예를 들어 현재 진행하고 있는 프로젝트는 nodejs, express, mysql을 사용하고 있는데, 이를 구동시키기 위한 패키지들을 설치하고, VM에서 코딩하거나, 로컬(내컴퓨터)에서 작성한 코드를 git에서 pull한 다음에 코드에서 사용했던 데이터베이스에 대한 계정설정, DB, 테이블 구성까지 완료해야합니다. 즉, 로컬과 동일한 환경을 세팅해주어야하는 과정이 필요합니다.
GCP페이지에서 가상머신을 만듭니다.
만들기를 누르면 다음과 같은 창이 나옵니다.
먼저, 리전, 영역을 지역에 맞게 설정합니다.
머신 유형은 과금이 적도록 낮은 사양으로 준비합니다. f1-micro로 설정했습니다.
부팅디스크는 우분투 LTS로 설정했습니다.
Id, API엑세스는 모든 cloud API에 대한 전체 액세서 허용을 해주고, HTTP, HTTPS트래픽 허용을 체크합니다.
만들기를 누르면 VM인스턴스가 생성이 되고 SSH로 접속할 수 있습니다.
이제 가상머신에 접속해 개발환경세팅을 진행하고, 서버를 구동시키면 외부에서 접속이 가능합니다.
해당 버튼을 눌러 SSH에 접속합니다.
다음 링크에 설치방법이 자세하게 설명되어있습니다.
서버 구동까지의 일련의 순서는 다음과 같습니다.
SSH내에서 서버를 구동하기 위한 기초 세팅인 6번까지 따라하셨으면, 이제 작성한 코드를 clone받습니다.
clone한 코드를 바로 실행하는 것이 아니라 hostname을 추가해줘야합니다. 이는 아래 참고에 작성했습니다.
그리고 프로젝트의 루트경로에서 사용할 라이브러리를 다운받고, start를 해줍니다.
$ sudo npm i
$ sudo npm start
에러가 없다면 로컬(SSH)에서 구동이 완료되었고, 외부 IP에서 접속할 수 있습니다.(http로)
해당 내용은 debian운영체제로 했을 때 발생했던 오류들입니다. ubuntu로 진행하니 해결되었습니다. 참고용입니다.
$ killall mysqld
$ service mysqld stop; mysqld_safe --skip-grant-tables &
$ mysql -u root
$ create user '계정명'@'호스트네임' identified by '비밀번호';
create 계정생성이 안되는 에러
my.cnf파일 내용변경 (해결x)
flush privileges; //한 후 실행하니 해결
VM내 사용할 포트가 열렸는지 확인하고 열린상태가 아니라면 open해야합니다.
$ iptables -L
$ iptables -I INPUT -p tcp --dport '포트번호' -j ACCEPT
코드 내 포트번호를 process.env.PORT로도 설정해주어야합니다.
코드 내 hostname을 GCP내장IP로 선언하고, listen할 때 인자로 받아야합니다.
서버 구동을 진행하고, 외부 IP로 접속할 때 SSL 인증발급전이기 때문에 http로 접속해야합니다..!
mysql 설치오류 no installation candidate