나처럼 윈도우10을 사용하면서 우분투(리눅스) 환경도 함께 사용하는 경우(WSL), 

우분투가 윈도우 위에서 돌아가는 듯 보이지만 엄연히 별개의 운영체제가 분리되어 동작하는 중이었다. (당시 이에 관한 이해가 부족)


가령, Node.js를 설치하는 방법도 윈도우에서는 https://nodejs.org/에서 인스톨러 파일(.exe 등)을 다운받아 설치한다고 대부분의 교재에서 확인할 수 있고,

우분투 등 리눅스에서는 npm 등 패키지 매니저를 이용해 설치하는 것이 선호되는 방법이다.


Node.js를 설치하면 윈도우의 기본 경로는 보통

C:\Program Files\nodejs

다.

 

윈도우에서 설치된 우분투 리눅스의 npm으로 설치한 경로는 내 경우엔

/usr/bin

이다.

 

따라서 윈도우용과 우분투용을 별개로 생각하고 설치해줘야 한다는 것이다.

 

MySQL의 경우에도 저번 글에 언급했지만, 각각 설치를 해주었는데 둘 다 기본 포트가 3306으로 설정되기 때문에, 먼저 설치한 것이 선점하면 나머지 하나가 켜지지 않는 문제가 생겼다.

 

설치 과정에서 포트를 변경해주는 것이 가장 편하고, 이미 설정했다면 설정 파일을 수정해서 변경해주면 된다.

(하나를 끄고, 사용하는 방법도 있지만 매번 켜고 끄는 것이 번거롭기 때문에 포트를 변경해주는 것이 나을 것이다.)

 

 

각설하고,

 

Node.js 실습 과정에서 난 처음부터 우분투 환경에서 실습을 진행하였다.

저번 글처럼 MySQL의 포트를 변경했는데, 윈도우는 그대로 3306을 사용하기로 하고, 우분투의 것을 3307로 변경했다.

데이터베이스 실습을 하면서 예제 데이터를 우분투의 MySQL에 만들어두었다.

 

Sequelize를 사용하는데 MySQL의 포트를 지정해주지 않았더니 기본 포트인 3306을 인식해서 윈도우용을 잡아 데이터가 나오지 않았다. (윈도우 MySQL에는 예제 데이터를 넣지 않았다.)

 

따라서, 포트를 변경하려면 Sequelize의 config/config.json 파일을 수정해야 한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
{
  "development": {
    "username""root",
    "password""1234",
    "database""nodejs",
    "host""127.0.0.1",
    "port"3307,
    "dialect""mysql",
    "operatorsAliases"false
  },
  ...
}

port만 추가해주니 잘 된다.

 

끝.

'개인 공부 > Node.js' 카테고리의 다른 글

윈도우10 WSL에서 bcrypt 설치 오류 해결 방법  (0) 2018.12.26

Node.js 실습을 하면서 윈도우10에 개발자 설정을 하고, 윈도우 스토어에 있는 우분투를 깔았었다.


CMD에서 bash 사용 가능하도록 설정을 해서 Visual Studio Code에서 실습을 진행하면서 터미널 창에서 bash를 사용했다.


데이터베이스 실습에 들어가서, MySQL을 설치하는 과정에서 윈도우 버전을 먼저 설치해서 실습하고,

그 다음 리눅스 버전을 모두 설치했는데 실행 오류가 났다.



# /etc/init.d/mysql start

 * Starting MySQL database server mysqld                                                                                No directory, logging in with HOME=/

                                                                                                                 [fail]

# mysql

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)



오류 로그를 확인해 보았다.


# cat /var/log/mysql/error.log



오류 메시지 중 이런 내용을 발견했다.


2018-12-10T10:25:00.951106Z 0 [ERROR] Do you already have another mysqld server running on port: 3306 ?



MySQL 기본 포트인 3306 포트가 충돌이 나서 실행이 안 되는 것 같았다.

포트 변경은 my.cnf에서 port 부분을 변경하면 된다고 한다.


문제는 my.cnf의 경로인데, 처음에는 /etc/mysql/my.cnf 파일이 있길래 열어봤는데 아무 내용이 없다.


윈도우에서 설치한 우분투의 MySQL 설정 파일 경로는 /etc/mysql/mysql.conf.d/mysqld.cnf 이다.


[mysqld] 아래의 port를 3307로 변경하고, 저장.



# /etc/init.d/mysql restart

 * Stopping MySQL database server mysqld                                                                         [ OK ]

 * Starting MySQL database server mysqld                                                                                No directory, logging in with HOME=/

                                                                                                               [ OK ]


아까와 다르게 OK가 뜨며 정상적으로 데몬이 켜진다.



끝!

'개인 공부 > 리눅스' 카테고리의 다른 글

윈도우10에서 설치한 우분투 rebooting 방법  (0) 2018.12.13

* 코드 첫 줄 등에 JSP 코드가 들어가있으면(<%@ ... %> 등) 아래의 HTML이나 자바 코드 등을 바로 해석하지 않고 서버로 요청을 보낸다.


* JSP : HTML + Java Code


* JSP 코드의 위치는 어디든 상관없다.


* 변수명은 형을 알려주도록 정해주는 방법이 있다.

  - 헝가리안 표기법

  - String sName, Integer iScore, aName(배열 변수) 등

  - i, j, k, l, m, n은 정수형 제어변수라고 예전부터 사용해왔다.

  - 하지만 지금은 MS도 공식 가이드라인에서 사용하지 말 것을 권고하고 있다.


* Cookie

  - 서버에서 생성, 클라이언트에 저장

  - 4kb에 300개까지의 정보를 담는다.

  - 관련 메소드 : set, get

* 요즘은 서블릿(Servlet) 기반으로 작업하는 경우는 드물다.


* JSP는 자바만 알면 쉽게 이해할 수 있는 언어이다.

    - 자바를 많이 공부하자.


* 우리나라 개발자가 알아야 할 기술

  -> Web App

    - Java / C# 기반

    - JSP / ASP(.Net)

    - JavaScript

    - JQuery, Ajax(자바스크립트 라이브러리)

    - HTML5, CSS

    - Mobile : iOS, Android - 요즘은 하이브리드앱도 많이 개발하는 추세

    - 프레임워크

      : Spring MVC(MVC2 패턴) - 요즘은 대부분 MVC2 패턴으로 설계

    - 가장 어려운 부분 중 하나가 환경 설정

      : 처음 이해하는데 개발자를 지치게 하지만, 적응하면 매우 편함

    - XML, JSON

      : 데이터를 전달하는 방식. Parse로 해석

  -> 순수 App

    - Java

  -> IoT

    - C / C++ / Python

    - Sensor Network

    - 아두이노

    - 라즈베리파이

  -> 빅데이터

    - Database

      : DBMS같은 정형화된 데이터가 아닌, 비정형 데이터를 분석, 처리

    - R / Python

    - Hadoop, Spotfire


* 반복문의 종류와 용도

    - for : 시작과 끝이 명확할 때(for-each문의 등장으로 DB select에서도 많이 사용)

    - while : 한 번도 수행하지 않을 수 있다. - DB에서 select할 때

    - do : 최소 한 번은 무조건 수행 - 메뉴 만들 때(최근에는 거의 사용하지 않음)


* 조건문

    - if : 뎁스가 3 이상 넘어가면 if를 잘 쓰지 않고 switch-case를 사용한다.(처리 속도 문제)

    - switch(case) : 조건이 많을 때 사용.


* 이클립스 로딩 속도 빠르게 하기

    - eclipse 디렉토리에서 eclipse.ini 파일을 수정한다.

    - Xms 부분을 수정한다. (256m -> 512m 또는 1024m)

    - 컴퓨터의 메모리 용량이 크면(16G 이상) Xmx도 늘려준다.


* GET / POST의 한글 처리 방식이 약간 다르다.

    - GET은 요청정보 헤더의 URI에 포함되어 전달된다.

    - POST는 요청정보 몸체에 포함되어 전달된다. 몸체에서 setCharacterEncoding() 메소드로 몸체의 데이터들을 인코딩 해주어야 한다.


* 요즘은 URL보다 URI라는 용어를 더 많이 쓴다.

    - URL : Uniform Resource Locator(통합 자원 위치자)

    - URI : Uniform Resource Identifier(통합 자원 식별자)

    - URI는 URL을 포함하는 개념이다.


* Servlet

    - Servlet(Interface) <- Generic Servlet(Abstract Class) <- HttpServlet

* MVC 패턴

  - Model(.java), View(JSP), Controller(Servlet 역할)

  - Request, Response


* 전자정부 프레임워크는 Spring 기반


* 추상 클래스

  - abstract

  - 반드시 재정의(오버라이딩)해서 사용해야 한다.


* 클래스

  - Object Class : 통상적인 클래스

  - Class Instance : 클래스명이 타입이 된다.


* 메모리 영역

  - stack 영역 : class(모양만 가지고 있다), data가 저장되는 곳.

  - heap 영역 : 객체, stack의 데이터를 공유해서 사용. 개비지 컬렉션.


* EJB(Enterprise Java Beans)

  - 메소드에는 관심이 없다.

  - 능력은 굉장히 많다. (다 사용하지는 않는다.)

  - 너무 무겁다.

  - 가볍게 만든 것이 Spring Framework


* Spring

  - EJB의 경량화 버전이라고 이해하면 된다.

  - VO 개념

  - Java EE가 무겁기 때문에 Java SDK + STC(Syntactic Tail Calls) 하면 가볍다.


* 프로젝트 시작하기

  - New - Dynamic Web Project 선택

  - Project명은 소문자로 시작

  - Generate web.xml deployment descriptor 체크하기(default라고 생각하고 체크하자.)

  - 서버에 배포(Deploy) 할 때는 WebContent의 내용만 한다.

  - 서블릿을 생성하려면 New - Servlet 선택

  - 패키지명은 도메인 거꾸로(ciec.co.kr이면 kr 빼고 co.ciec.xxxx)

  - URL Mapping : .jsp 파일을 감싸서 해당 파일이 무엇인지 감춰준다.


* Get / Post 방식

  - form 태그에 속성으로 지정


* 보안 가이드를 준수하자.

  - 자료실 - 기술안내서 가이드

+ Recent posts