Set ppa and install latest npm and nodejs on Linux(Ubuntu)


Environment and Prerequisite

  • Linux(Ubuntu 16.04 or 14.04)


What is PPA?

PPA

PPA is acronym of Personal Package Archive. It is a third party software package repository. There are many packages which are not included in Ubuntu official apt-get.

ppa-homepage


Install npm and nodejs using PPA

Set PPA

First, we need to specify repository(PPA repository). Now 9.x is the latest version of nodejs so I set to 9.x. You can check latest version on https://github.com/nodejs/Release#release-schedule

$ curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -


Install nodejs

Install nodejs

$ sudo apt-get install nodejs


Install build-essential

Above nodejs include npm but we need to install build-essential for using better npm.

$ sudo apt-get install build-essential


Reference

Jekyll과 Github Page에서 플러그인을 통해서 sitemap.xml과 feed.xml을 생성해보자


환경 및 선수조건

  • Ruby
  • Gem
  • Jekyll


설치하기 전에


sitemap.xml 생성하기

gem을 이용해 jekyll-sitemap 설치

쉘에서 아래 명령어를 통해 jekyll-sitemap를 설치합니다.

$ gem install jekyll-sitemap


Gemfile에 jekyll-sitemap 추가

Gemfilejekyll-sitemap를 추가합니다.

Gemfile

...
gem 'jekyll-sitemap'
...


_config.yml 수정

_config.yml 파일에서 pluginsjekyll-sitemap을 추가합니다.

_config.yml

...
plugins:
    - jekyll-sitemap
...


sitemap.xml 파일 확인

이제 아래처럼 로컬이나 블로그에서 도메인 뒤에 /sitemap.xml를 추가함을 통해 설정된것을 확인할 수 있습니다.

// 도메인은 각자에게 맞은 도메인으로 변경해서 테스트
http://domain/sitemap.xml



feed.xml 생성하기

gem을 이용해 jekyll-feed 설치

쉘에서 아래 명령어를 통해 jekyll-feed를 설치합니다.

$ gem install jekyll-feed


Gemfile에 jekyll-feed 추가

Gemfilejekyll-feed를 추가합니다.

Gemfile

...
gem 'jekyll-feed'
...


_config.yml 수정

_config.yml 파일에서 pluginsjekyll-feed을 추가합니다.

_config.yml

...
plugins:
    - jekyll-feed
...


feed.xml 파일 확인

이제 아래처럼 로컬이나 블로그에서 도메인 뒤에 /feed.xml를 추가함을 통해 설정된것을 확인할 수 있습니다.

// 도메인은 각자에게 맞은 도메인으로 변경해서 테스트
http://domain/feed.xml


참고자료

Linux(Ubuntu)에 ppa를 설정하고 최신 npm과 nodejs를 설치해보자


환경 및 선수조건

  • Linux(Ubuntu 16.04 or 14.04)


PPA란?

PPA

오늘 사용할 PPAPersonal Package Archive의 줄임말로 우분투 공식 저장소에(apt-get을 초기에 받아오는 저장소) 없는 패키지들이 있는 저장소입니다.

ppa-homepage


PPA를 통한 npm 및 nodejs 설치

PPA 설정

우선 저장소를 명시를 해줘야합니다. 현재 9.x가 가장 최신 버전이기 때문에 9.x로 설정하였으며 https://github.com/nodejs/Release#release-schedule에서 확인 가능합니다.

$ curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -


nodejs 설치

다음 아래 명령어를 통해서 nodejs를 설치합니다.

$ sudo apt-get install nodejs


build-essential 설치

위에서 설치한 nodejs에 npm이 포함되어 있지만 몇개의 npm을 실행하기 위해서는 build-essential을 설치하셔야 합니다.

$ sudo apt-get install build-essential


참고자료

Linux(Ubuntu)에서 apt-get 패키지를 다운로드하는 서버를 변경해보자


환경 및 선수조건

  • Linux(Ubuntu 16.04)


sources.list

파일 경로 및 열기

파일은 /etc/apt/에 위치

$ cd /etc/apt/
$ vim sources.list


기본 설정

기본적으로 지역을 한국으로 설정하시고 한국어로 언어를 설정하시면 /etc/apt/sources.list에 빨간색으로 http://kr.archive.ubuntu.com/ubuntu/로 나와있을겁니다.

source-list


문제 혹은 에러

간혹 아래 나와 있는 문제들처럼 설치할 수 없다고 오류가 뜰 때가 있는데 저장소에서 해당패키지에 대한 정보를 가지고 있지 않거나 일시적으로 서버가 작동하지 않을 수도 있다.

  • E: 아카이브를 받을 수 없습니다. 아마도 apt-get update를 실행해야 하거나 --fix-missing 옵션을 줘서 실행해야 할 것입니다.
  • E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

위와 같은 상황일 때 apt-get의 패키지 서버를 다른 주소로 해서 다시 실행하면 제대로 설치되는 경우도 있다.


apt-get 서버 변경

  • http://kr.archive.ubuntu.com/ubuntu/ -> http://ftp.daumkakao.com/ubuntu/로 변경

파일 편집기 vim에서 파일(/etc/apt/sources.list)을 열고 아래와 같은 명령어로 문자열을 치환해줍니다.

:%s/kr.archive.ubuntu.com/ftp.daumkakao.com


동작 확인

apt-get를 통해서 제대로 동작하는지 확인

$ sudo apt-get update; sudo apt-get upgrade -y;


참고자료

이전 포스팅에서 버전만 Ubuntu 16.04로 바뀐 포스트입니다.

환경

  • Ubuntu 16.04
  • Nginx (version : 1.4.6)(apt-get을 통한 설치)
  • 도메인


읽기 전에!


사전 준비사항

  • Nginx에 대한 간단한 사용법(conf파일을 통해 서버블록 생성 가능)
  • HTTPS와 인증서에 대한 개념
  • 도메인도 하나 필요합니다. 여기에서는 example.com이라는 도메인이 있다고 가정하고 진행하겠습니다.


1. certbot 설치

apt-get에 certbot저장소를 추가해줍니다.

$ sudo add-apt-repository ppa:certbot/certbot

패키치 목록을 업데이트해주고 certbot을 설치합니다.

$ sudo apt-get update
$ sudo apt-get install python-certbot-nginx

간혹 업데이트와 업그레이드가 되지 않는 경우가 있는데 그러면 dk아래처럼 저장소를 다시 설정해줍니다. 업데이트가 자주 바뀌며 지원되는게 달라지기 때문에 certbot 최신 버전을 설치하시길 추천드립니다.

$ sudo add-apt-repository ppa:certbot/certbot


2. Nginx 세팅

Certbot이 자동으로 SSL을 세팅해주기 때문에 /etc/nginx/sites-available로 이동하셔서 원하시는 .conf파일에 server blockserver_name을 설정해주면 됩니다.

$ sudo vim /etc/nginx/sites-available/[your conf file name]

아래는 제 예시입니다. undang_backend_nginx.conf에 블록들이 있기 때문에 아래처럼 되었습니다.

$ sudo vim /etc/nginx/sites-available/undang_backend_nginx.conf

위와 같은 블록말고 default에 설정하고 싶으시면 아래처럼 default를 열어주시면 됩니다.

$ sudo vim /etc/nginx/sites-available/default

이제 서버 블록 파일 안에 server블록에서 server_name 옆에 설정하고자 하는 도메인 이름으로 변경해주시면 됩니다. 저는 아래와 같습니다.

...
# configuration of the server
server {

    listen      80;
    listen [::]:80;
    # Put your domain next to server_name
    server_name undang.twpower.me;
    charset     utf-8;

    # max upload size
    client_max_body_size 75M;   # adjust to taste

...

}

위와 같은 설정을 하시고 꼭 방금 설정한 .conf파일에 대한 symlink를 생성해서 /etc/nginx/sites-enabled에 추가해야합니다. 이미 되어 있다면 상관이 없으며 아래 예시를 첨부합니다.

$ sudo ln -s /etc/nginx/sites-available/[config file name] /etc/nginx/sites-enabled/

설정이 완료 되었다면 저장하고 아래 명령어를 통해서 재시작합니다.

$ sudo nginx -t
$ sudo service nginx reload


3. ufw 설정

만약 ufw를 사용하고 있다면 HTTPS 트래픽을 허용하도록 설정을 해줘야합니다.

아래 명령어를 사용하면

$ sudo ufw status

다음처럼 나오는데

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

아래의 명령어를 통해서 nginx관련 모든 트래픽들을 ALLOW 해야합니다.

$ sudo ufw allow 'Nginx Full'

# 만약 위에 결과에서 Nginx HTTP가 있다면 아래 명령어도 실행해줘야 합니다.
$ sudo ufw delete allow 'Nginx HTTP'

결과는 아래와 같습니다. Nginx Full로 되어 있어야합니다.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)


4. SSL 인증 획득하기

다음 아래 명령어를 사용하면 nginx plugin을 통해서 가능합니다. 도메인을 추가적으로 더 하고 싶다면(위에 server_name에도 물론 설정이 되어있어야겠죠?) -d 옵션을 주고 더 주가하면 됩니다.

$ sudo certbot --nginx -d example.com -d www.example.com

제 예시는 아래와 같습니다.

$ sudo certbot --nginx -d undang.twpower.me

그러면 아래와 같이 1과 2를 선택하는 화면이 나오는데 저와 같은 경우는 모든 경우를 https로 하고 싶어서 redirect를 허용하는 2번을 하였습니다.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

번호를 선택해주면 아래처럼 진행되며 key들도 자동으로 생성해줍니다. success


4. 인증서 자동갱신 설정 확인

설정한 certbot은 90일 동안만 유효하기 때문에 갱신을 해줘야합니다. 매번 해주기 귀찮으나 설치한 certbot은 자동으로 갱신을 이틀 단위로 해줍니다.

해당하는 갱신이 제대로 되는지는 아래 명령어를 통해서 확인 가능하며 에러가 나타나지 않으면 renewal이 정상적으로 작동 할겁니다.

$ sudo certbot renew --dry-run

Ubuntu의 경우 /etc/cron.d/에 보면 certbot이 생성되어있습니다.


5. SSL 적용 확인 및 평가

본인의 서버에 SSL이 적용이 잘 되었는지 평가할 수 있는 여러 사이트가 있는데 들어가서 본인의 서버 도메인을 입력하면 됩니다.

https://www.ssllabs.com/ssltest/

ssl-test


참고자료