달력

42024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

웹 접속 보안은 SSL이 최곱니다. SSL 인증서는 보통 무료로 받기 어려운 점이 있었는데, LetsEncrypt 는 무료로 굉장히 쉽게 발급받고 갱신할 수 있도록 해줍니다. 바로 적용하러 갑시다.


 170505 h5ai에 SSL 적용 시 스트리밍에 문제가 생기네요. 첫 영상은 부드럽게 켜지는데 두 번째부턴 잘 안 되는 문제입니다. 스트리밍에 대한 SSL 설정 관련 문제인 것 같은데, 알아보고 해결책을 찾으면 업데이트하도록 하겠습니다.




1. Certbot 설치

 리눅스 패키지용 LetsEncrypt는 Certbot입니다. 저장소를 추가하고, 설치합니다.

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update && sudo apt-get install certbot


2. Nginx 설정 변경

 SSL 인증서를 얻기 위해 Nginx 설정을 변경해줘야 합니다. 인증서를 얻을 때 도메인을 적는데, Certbot에서 해당 도메인에 해당하는 서버 내 디렉토리에 특정 파일을 만들고 외부에서 접근해 봄으로써 유효한 주소인 지 판단하는 거라고 합니다. Nginx에서 적절한 설정을 넣어주지 않으면 해당 작업이 불가능하니, SSL 접속이 필요한 각 사이트 설정 파일마다 추가해줍니다. 

sudo vi /etc/nginx/sites-available/wordpress

 server 블록이 끝나기 전 아래 내용을 추가해줍니다.

location ~ /.well-known {
    allow all;
}
nginx

 참고로 이전 포스팅에서 nas 페이지 접근 제어를 위해 .htpasswd를 적용하셨던 분들은, 꼭 설정 파일에서 해당 부분 앞에 주석(#) 표시를 해주세요.

 그리고 Nginx 를 다시 로드합니다.

sudo service nginx reload


3. SSL 인증서 얻기

 Certbot을 통해 SSL 인증서를 얻기 위해선 다음 명령어가 필요합니다.

sudo certbot certonly --webroot -w {디렉토리} -d {도메인}

 해당 코드를 기반으로 수정하시면 됩니다. 디렉토리에 해당하는 도메인을 적어주셔야 합니다.

 이메일과 약관 동의를 묻고, 다 대답했다면 아래 느낌으로 완료됐다고 합니다.

:~$ sudo certbot certonly --webroot -w /var/www/html/wordpress -d blog.awesometic.kro.kr
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for blog.awesometic.kro.kr
Using the webroot path /var/www/html/wordpress for all unmatched domains.
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0001_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0001_csr-certbot.pem

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/blog.awesometic.kro.kr/fullchain.pem. Your
   cert will expire on 2017-07-31. To obtain a new or tweaked version
   of this certificate in the future, simply run certbot again. To
   non-interactively renew *all* of your certificates, run "certbot
   renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Bash

 잘 봐둡시다.


4. Diffie-Hellman 키 생성

 더욱 좋은 보안을 위해선 해당 키를 생성해 사용하는 것이 좋다고 합니다.

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

 조금 기다리시면 /etc/ssl/certs/dhparam.pem 이란 파일이 생성됩니다.


5. SSL을 위한 Nginx 설정

5.1 강력한 SSL 설정을 위한 snippet 생성

 먼저 /etc/nginx/snippets/ssl-params.conf 를 생성해줍시다.

sudo vi /etc/nginx/snippets/ssl-params.conf

 다음 내용을 넣은 뒤 저장합니다.

# from https://cipherli.st/
# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# Disable preloading HSTS for now.  You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

ssl_dhparam /etc/ssl/certs/dhparam.pem;
Xxx

 그리고 SSL을 적용할 사이트에 대한 snippet을 만들어 줍시다. 

 ssl-blog.awesometic.kro.kr.conf 란 이름으로 만들겠습니다.

sudo vi /etc/nginx/snippets/ssl-blog.awesometic.kro.kr.conf

 다음 내용이 들어갑니다.

ssl_certificate /etc/letsencrypt/live/blog.awesometic.kro.kr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.awesometic.kro.kr/privkey.pem;
Xxx

 blog.awesometic.kro.kr 부분에 원하는 주소를 넣으시면 됩니다.


5.2 Nginx 설정 파일 수정

 그리고 해당 웹 사이트 설정 파일을 수정해줍시다.

sudo vi /etc/nginx/sites-available/wordpress

 전 다음과 같이 되겠습니다. 여러가지 시행착오를 거친 설정 파일입니다. 수정하기 전 기존 파일 내용과 비교하면서, 참고해 수정해주세요. default_server는 안 해주셔도 됩니다. 해당 사이트가 제 Nginx에 대한 기본 사이트라는 걸 설정합니다.

server {
    # 80번 포트(일반 HTTP)로 접속 시에도 SSL인 443포트로 이동시켜 줍니다.
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name blog.awesometic.kro.kr;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;
    # blog.awesometic.kro.kr 부분을 자신의 도메인에 맞게 수정하세요
    include snippets/ssl-blog.awesometic.kro.kr.conf;
    include snippets/ssl-params.conf;

    root /var/www/html/wordpress;

    server_name blog.awesometic.kro.kr;

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt { log_not_found off; access_log off; allow all; }
    location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
        expires max;
        log_not_found off;
    }

	location / {
		index index.php;
        try_files $uri $uri/ /index.php$is_args$args;
	}

    location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
            return 404;
        }
 
        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /.well-known {
        allow all;
    }
}
nginx

 Nginx를 다시 로드합니다.

sudo nginx reload

 SSL이 적용된 사이트로 접속한 결과입니다. 워드프레스의 경우 블로그 주소와 사이트 주소에 http:// 대신 https:// 로 바꾸어 주세요.


6. 인증서 자동 갱신

 cron을 이용해 자동으로 갱신해줄 수 있습니다. Let's Encrypt 인증서는 3개월만 유지되고, 만료 30일 이내에 갱신할 수 있습니다.

sudo crontab -e

 처음 crontab을 열었으니 무슨 에디터를 사용할 건지 묻습니다. 편한 걸로 설정해줍니다.

 그리고 아래 명령어를 넣어줍시다.

0 4 1 * * /bin/bash -l -c certbot renew --no-self-upgrade

 매월 1일 새벽 4시에 certbot renew --no-self-upgrade 명령어를 실행할 겁니다.


(옵션) SSL 보고서, 최종 등급 확인

https://www.ssllabs.com/ssltest/analyze.html?d={SSL 적용한 자신의 사이트}




 워드프레스 사이트에 대해서만 진행했는데, NAS나 다른 사이트들도 비슷하게 진행하시면 됩니다.


참고 사이트:
a. https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04
b. https://certbot.eff.org/all-instructions/
c. http://riseshia.github.io/2016/10/16/certbot-let-s-encrypt.html






출처 : http://awesometic.tistory.com/19?category=964086

Posted by 타카스 류지
|

 외부에서 접속할 때, 매번 자신의 아이피와 포트로 접속하는 건 굉장히 불편한 일입니다. 도메인을 얻어 사용합시다.

 전 내도메인.한국 으로부터 무료 도메인으로 kro.kr 을 받아 사용 중입니다. 




1. 가입 및 도메인 얻기

 먼저 내도메인.한국 에 접속해 가입합시다. 그리고, 도메인 등록 메뉴를 통해 간편하게 등록합시다.

 도메인이 등록되셨으면, 새로 등록한 도메인에 대한 관리 페이지로 가세요.

 그리고 DNS 부분에 밑의 스크린샷처럼 원하는 이름과 외부 IP를 넣어 설정해 A 도메인을 얻어줍시다. 도메인 체계에 관해선 구글 검색을..


2. Nginx 설정

 Nginx에서 서버 이름, 즉 도메인을 통해 각기 다른 페이지를 보여주려 합니다. 가상 호스트 방법도 있지만, h5ai는 지원하지 않아요. 전문 분야가 아니라 자세히는 모르지만, 지금의 용도에선 이 방법이 제일 낫다고 생각합니다.

 Nginx에서 설정한 파일들을 수정해야 합니다. 여기선 워드프레스에 대해서만 sub.awesometic.kro.kr로 접속하도록 하겠습니다.

sudo vi /etc/nginx/sites-available/wordpress

 다시 listen을 기본 포트인 80으로 돌려주고, server_name 부분을 수정하면 됩니다. 아래를 참고해 수정해주세요.

server {
    listen       80;
    server_name  sub.awesometic.kro.kr; # {서브도메인}.{도메인}.kro.kr
    root   /var/www/html/wordpress;

    location / {
        index  index.php index.html;
    }

    location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
            return 404;
        }

        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}
nginx


 워드프레스 블로그의 경우, 설치할 때 수정하셨던 워드프레스 주소와 사이트 주소를 해당 도메인에 맞게 다시 변경해 줘야만 합니다. Nginx 설정 파일의 server_name 에 해당하는 주소로 입력해주세요.

 임시로 제가 만든 워드프레스 블로그를 sub.awesometic.kro.kr 로 접속한 화면입니다.




참고사이트:
본문 내 링크




출처 : http://awesometic.tistory.com/19?category=964086

Posted by 타카스 류지
|

 Wordpress 는 무료 웹 사이트, 블로그를 만드는데 좋은 프로그램입니다. 전세계 수많은 사용자들로 이루어진 커뮤니티는 물론이고, 다양한 플러그인을 통해 간단한 동작 만으로도 알찬 웹 사이트/블로그를 만들 수 있어요.

 여기선 워드프레스를 올리는 것, 웹에서 다루기에 무리가 없는 수준까지만 하겠습니다.

 Apache나 Nginx 등 웹 서버와 PHP, MySQL(MariaDB)가 필요합니다. 이 포스트 시리즈의 처음부터 따라오신 분은 그대로 진행하시면 돼요



 

0. MariaDB에 워드프레스에서 사용할 DB 추가

 워드프레스의 각종 데이터는 데이터베이스를 이용합니다. 따라서 서버에 워드프레스를 위한 데이터베이스를 마련해 줘야 합니다.

sudo mysql -u root

 MariaDB 커맨드로 넘어오면 DB를 추가해 줍니다.

create database wordpress;

 이후 워드프레스 설정 시 root 계정 정보를 넣으면 됩니다만..


(옵션, 추천) 사용자 추가

 새로운 사용자를 추가하는 게 여러가지 이유로 더 낫습니다.

 추가한 뒤 wordpress 데이터베이스에 대한 모든 권한을 부여하겠습니다.

 참고: http://link2me.tistory.com/431

 계정을 생성한 후 localhost(오드로이드 내)에선 {비밀번호} 로 로그인 가능하게끔 하겠습니다.

create user {계정이름};
create user {계정이름}@localhost identified by '{비밀번호}';

 앞서 만든 wordpress DB에 관해 모든 권한을 부여하겠습니다.

grant all privileges on wordpress.* to {계정이름}@localhost identified by '{비밀번호}';
flush privileges;

 완료 스크린샷입니다. 기본 문자열 인코딩 설정(UTF8MB4)도 중요한데, 이건 MariaDB 설치할 때 기본값을 설정해줬으니 신경 안 쓰셔도 됩니다.

워드프레스 설정 시 새로 만든 계정 정보를 사용하겠습니다.



1. 워드프레스 설치

1.1 최신 버전 다운로드 및 압축 풀기

wget https://ko.wordpress.org/wordpress-4.7.4-ko_KR.zip

 그리고 원하는 장소에 압축을 풀어줍니다. 전 nas 옆인 /var/www/html 에 압축을 풀겠습니다. wordpress 디렉토리가 생길 겁니다.

sudo unzip -d /var/www/html wordpress-4.7.4-ko_KR.zip

 다운로드한 파일은 지워줍시다.

rm wordpress-4.7.4-ko_KR.zip


1.2 wp-config-sample.php 파일 수정

 워드프레스에서 사용할 DB 정보와 계정 정보를 입력해줘야 합니다.

sudo vi /var/www/html/wordpress/wp-config-sample.php

 열고 아래 DB_NAME, DB_USER, DB_PASSWORD에 해당하는 부분에 좀 전에 만든 새로운 DB, 계정 정보를 입력해줍니다.

 그리고 바로 아래 워드프레스 내 다양한 키를 입력할 수 있는데, 이를 입력해주면 저장되는 다양한 쿠키값에 대해 보안성을 높여줍니다. 워드프레스는 로그인 정보 관리에 PHP 세션을 이용하지 않고 사용자의 쿠키로 저장하기 때문에 필요한 작업이라네요.

 참고: https://blogvault.net/everything-about-wordpress-security-keys/

 아무튼, 

https://api.wordpress.org/secret-key/1.1/salt/

 로 접속하면 이상한 define 값들이 많이 뜨는데, 그대로 복사해

여기에 있던 define들을 지우고 붙여넣으시면 됩니다.

 그리고 wp-config.php 란 이름으로 복사해줍시다.

cd /var/www/html/wordpress
sudo cp wp-config-sample.php wp-config.php

 설치는 이것으로 완료입니다. 이제 Nginx에서 접근할 수 있도록 해줘야 합니다. 


1.3 웹 서버에서 접근할 수 있도록 권한 변경

 워드프레스는 웹 관리자 페이지에서 플러그인을 추가, 삭제합니다. 게시글을 올릴 때 첨부 파일도 저장하겠죠. 이런 다양한 행동들은 웹 서버를 통해 이루어지니 필요한 디렉토리에 대해 웹 서버에서 접근할 수 있도록 소유권을 바꿔줘야 하고, 권한도 새로 부여해야 합니다.

 매우 중요한 과정입니다. 꼭 해주세요.

 참고: https://gist.github.com/Adirael/3383404

 /* Github Gist */

#!/bin/bash
#
# This script configures WordPress file permissions based on recommendations
# from http://codex.wordpress.org/Hardening_WordPress#File_permissions
#
# Author: Michael Conigliaro <mike [at] conigliaro [dot] org>
#
WP_OWNER=www-data # <-- wordpress owner
WP_GROUP=www-data # <-- wordpress group
WP_ROOT=$1 # <-- wordpress root directory
WS_GROUP=www-data # <-- webserver group
# reset to safe defaults
find ${WP_ROOT} -exec chown ${WP_OWNER}:${WP_GROUP} {} \;
find ${WP_ROOT} -type d -exec chmod 755 {} \;
find ${WP_ROOT} -type f -exec chmod 644 {} \;
# allow wordpress to manage wp-config.php (but prevent world access)
chgrp ${WS_GROUP} ${WP_ROOT}/wp-config.php
chmod 660 ${WP_ROOT}/wp-config.php
# allow wordpress to manage wp-content
find ${WP_ROOT}/wp-content -exec chgrp ${WS_GROUP} {} \;
find ${WP_ROOT}/wp-content -type d -exec chmod 775 {} \;
find ${WP_ROOT}/wp-content -type f -exec chmod 664 {} \;

 /* Github Gist */

 다운받아 실행합시다.

wget https://gist.github.com/Adirael/3383404/archive/2ce9e58cb48a3a85f4c8b667ebd3a42cdcda848b.zip

 압축을 풀면,

unzip 2ce2ce9e58cb48a3a85f4c8b667ebd3a42cdcda848b.zip

 이상한 디렉토리 3383~ 이 생기는데, 그 곳에 저 코드가 담긴 파일이 있습니다.

 실행 권한을 줘서 실행해줍시다.

chmod +x 3383404-2ce9e58cb48a3a85f4c8b667ebd3a42cdcda848b/fix-wordpress-permissions.sh
sudo ./3383404-2ce9e58cb48a3a85f4c8b667ebd3a42cdcda848b/fix-wordpress-permissions.sh /var/www/html/wordpress

 뒤의 /var/www/html/wordpress 는 워드프레스 설치 경로입니다.

 아래와 같이 바뀌면 됩니다.

제대로 되었으면 남은 파일들은 삭제해줍시다.

rm -rf 2ce9e58cb48a3a85f4c8b667ebd3a42cdcda848b.zip 3383404-2ce9e58cb48a3a85f4c8b667ebd3a42cdcda848b/


2. Nginx 설정 변경

 NAS에 접속하기 위해 3000번 포트를 준 것 처럼, 워드프레스로 접속하기 위해 새로운 포트를 할당해 줘야 합니다. NAS 설정 시 진행한 것과 동일하게 진행합니다.

 먼저 nginx/sites-available/default 설정 파일을 복사합니다. wordpress 란 이름으로 복사하겠습니다.

cd /etc/nginx
sudo cp sites-available/default sites-available/wordpress

 파일을 열어 listen 부분에 새로운 포트를 할당해줍니다. 전 4000으로 하겠습니다.

sudo vi sites-available/wordpress

 아래와 같이 변경하겠습니다.

server {
    listen       4000;
    server_name  localhost;
    root   /var/www/html/wordpress;

    location / {
        index  index.php index.html;
    }

    location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
            return 404;
        }

        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}
nginx

 생성한 파일을 적용해 사용하기 위해 nginx/sites-enabled에 소프트 링크를 생성합니다.

sudo ln -s /etc/nginx/sites-available/wordpress sites-enabled/wordpress

 Nginx를 다시 로드합니다.

sudo service nginx reload


3. 접속 및 초기 설정

 먼저 아래 주소로 접근해줍니다.

 외부에서 접속하시려면 4000번 포트에 대한 포트포워딩/방화벽설정을 해주시는 걸 잊지 마세요.

http://{오드로이드IP}:4000/wp-admin/index.php

 간단히 정보를 입력한 후 설치하기를 누르면, (비밀번호는 꼭 새로 설정해 주세요. 기존에 쓰시던 게 자동으로 입력되는 것이 아닙니다)

 즐거운 시간을!

 로그인하면 아래와 같은 화면이 뜰 겁니다.

 마지막으로 설정-일반에 들어가 워드프레스 주소와 사이트 주소를 외부 아이피로 제대로 바꿔줍시다. 

 두 곳 다 http://{외부IP}:{포트} 로 바꿔주시면 됩니다.


4. 테마 추가를 위한 FTP 계정 정보 입력

4.1 vsftpd 설치

 워드프레스에서 테마를 새로 설치하려면 서버에 대한 FTP 계정이 필요하다, 계정 정보를 달라는 알림이 뜹니다. 

 하지만 저흰 FTP 프로그램이 설치되어 있지 않으니 새로 설치해줍시다.

sudo apt-get install vsftpd

 서비스가 켜져있는지 확인해줍니다.

sudo service vsftpd start

 그리고 FTP 기본 포트인 21번 포트에 대해 방화벽/포트포워딩 설정을 해주세요.

 마지막으로 테마 설치 시 입력하는 FTP 계정 정보에 기존 오드로이드 내의 내 사용자 정보를 입력하시면 됩니다.

 이렇게요, 외부IP는 공유기를 통해 받은 사설 아이피(192.168.~) 이 아닌 실제로 외부에서 보여지는 IP를 말합니다.

 예시로 하나 설치해봤는데 잘 되네요


170505

 젯팩 플러그인 연결 시 이런 에러가 뜨는데, 간단히 터미널에서

sudo apt-get install php-xml

 하시면 됩니다.




 워드프레스 설치가 다 되었습니다. 나머지 추가적인 부분에 관해선 워드프레스 커뮤니티 등등을 통해 꾸며가세요.

 이제 도메인, SSL 관련 작업만 남았네요!


참고사이트:
본문 내 링크



마지막 업데이트: 2017. 07. 10




출처 : http://awesometic.tistory.com/19?category=964086


Posted by 타카스 류지
|

 h5ai 는 modern HTTP web server index 입니다. 그렇게 써있는데, 감이 안 오시는 분들은 간단하게 파일을 웹에서 내컴퓨터에서 보듯 볼 수 있다고 생각하시면 됩니다. 사실 서버 차원에서 기본적인 웹 디렉토리 리스팅 서비스가 지원되지만, 보기도 나쁘고 보안도 취약해 웹 디렉토리 리스팅을 위해선 h5ai 를 사용하는 것이 더 좋다고 봅니다. h5ai의 보안이 뛰어난 것은 아니지만요.. :)

 또한 h5ai는 간단한 문서, pdf, 이미지, 동영상, 소스 코드 뷰어를 지원합니다. 아주 괜찮은 친구에요.

데모 사이트: https://larsjung.de/h5ai/demo/

 h5ai 를 위해선 Nginx, Apache 등 웹 서버와 PHP가 설치되어 있어야 합니다. Apache 권장이지만, 전 Nginx를 사용하겠습니다.




1. h5ai 설치

1.1 h5ai 다운로드 및 압축 해제

 h5ai 는 업데이트를 위한 저장소가 제공되지 않습니다. 사이트에서 받아 설치해야 합니다.

wget https://release.larsjung.de/h5ai/h5ai-0.29.0.zip

 그리고 전 압축을 편의상 /var/www/html/nas 에 풀겠습니다.

sudo mkdir /var/www/html/nas
sudo unzip -d /var/www/html/nas h5ai-0.29.0.zip

 압축을 풀었으니 지우겠습니다.

rm h5ai-0.29.0.zip


1.2 Nginx 설정

 Nginx에서 h5ai를 제대로 작동시키기 위한 작업이 필요합니다. _h5ai/public/index.php 를 index 페이지로 사용하게끔 설정해야 해요. 여기선 새로운 포트를 둬 해당 NAS 페이지로 접근하게끔 하겠습니다.

 먼저 기존 sites-available 설정 파일을 복사합니다. nas란 이름으로 복사하겠습니다

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/nas

 그리고 복사한 파일의 내용에서 listen과 root 부분을 바꿔줍시다. 전 h5ai 페이지에 접속하기 위해 3000번 포트를 사용하며 default_server 키워드를 지우겠습니다. default_server 키워드는 포트 하나만 갖고 있어야 합니다. root와 index 파일의 경로까지 수정해줍니다.

 다음과 같이 하겠습니다.

server {
    listen       3000;
    server_name  localhost;
    root   /var/www/html/nas;

    location / {
        index  index.html /_h5ai/public/index.php;
    }

    location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
            return 404;
        }

        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}
nginx

 해당 파일에 대한 소프트 링크 파일을 /etc/nginx/sites-enabled/nas 파일로 만들어줍시다.

sudo ln -s /etc/nginx/sties-available/nas /etc/nginx/sites-enabled/nas

 마지막으로 Nginx를 reload 해줍시다.

sudo service nginx reload

 접속해봅시다.

http://{오드로이드IP}:3000/

 외부에서도 접속하려면 방화벽 및 공유기의 포트 포워딩 설정을 꼭 확인해주세요. 1편부터 따라오신 분들이라면 방화벽이 설치되어 있지 않으니 공유기의 포트 포워딩 설정만 알아보시면 됩니다. 


1.3 설치 확인

 잘 뜨지만, 여러 기능이 잘 작동하는가 상태를 확인하려면 _h5ai/public/index.php 에 직접 접근해보면 됩니다.

http://{오드로이드IP}:3000/_h5ai/public/index.php

 로그인하라는데, 간단히 엔터치면 됩니다. 비밀번호 및 기능 설정은 조금 이따 하겠습니다.

 빨갛게 no 라고 뜨는 게 별로 맘에 들지 않네요. PHP arch 는 파일 크기 측정, PHP를 이용한 압축 및 다운로드 시 지원하는 단일 파일 크기에 영향을 끼칩니다. 오드로이드 XU4의 AP가 32bit라 어쩔 수 없이 2기가 미만의 파일만 파일 크기가 표시되고, 총 용량이 2기가 미만이어야 압축되어 다운로드 할 수 있습니다. 나머지 캐시 및 썸네일 관련해선 하나씩 잡아가겠습니다. 사용하기에 꼭 필요한 작업은 아닙니다.


2. no 잡기

2.1 Public Cache dirextory, Private Cache directory

 간단합니다. 캐싱을 위한 디렉토리에 대한 권한이 없다는 뜻입니다. sudo 로 압축을 풀었으니 소유권이 root 겠죠. Nginx의 소유권과 같은 www-data로 바꿔줍시다.

sudo chown -R www-data:nogroup /var/www/html/nas/_h5ai


2.2 Image thumbs

여러 그래픽을 다루는 GD 라이브러리를 PHP와 연동시키기 위한 PHP-GD 라이브러리가 없어서 그렇습니다. apt-get 으로 설치해줍니다.

sudo apt-get install php-gd


2.3 Movie thumbs

 ffmpeg 등 오디오/비디오 코덱 라이브러리가 없어서 그렇습니다. apt-get 으로 설치해줍니다. 

sudo apt-get install ffmpeg


2.4 PDF thumbs

 여러 형식의 이미지 파일을 다루거나 변환하기 위한 ImageMagick 프로그램/라이브러리가 없어서 그렇습니다. PHP와 연동하기 위해 PHP-imagick과 함께 apt-get 으로 설치해줍니다. 

sudo apt-get install imagemagick php-imagick


2.5 상태 확인


3. 소프트 링크를 이용한 파일 보이기

 직접 h5ai 경로(/var/www/html/nas)에 파일을 넣지 않고도 소프트 링크를 활용해 파일을 보이게 할 수 있습니다.

 전 외장하드의 파일들을 전부 보이게 하겠습니다.

 제 외장하드 마운트 지점은 /media/externalHdd/ext1, ../ext2 입니다. 제 경우는 다음과 같습니다.

sudo ln -s /media/externalHdd/ext1/ /var/www/html/nas/3.0TB
sudo ln -s /media/externalHdd/ext2/ /var/www/html/nas/1.5TB

 그러면 아래 화면과 같이 뜰 것입니다.


4. 마무리 설정

4.1 옵션 변경

 _h5ai/private/conf/options.json 을 통해 여러 h5ai의 옵션을 변경할 수 있습니다.

sudo vi /var/www/html/nas/_h5ai/private/conf/options.json

 상태 페이지 접근 패스워드, 다운로드 기능 활성화, 미리보기 할 확장자 등 여러 가지 옵션이 제공되니 사용하시면서 입맛대로 바꾸세요


4.2 PHP-JSON 설치

4번째에.. 우분투 서버에선 PHP JSON 지원을 위해 추가 패키지를 설치해야 할 것이라 합니다. 당장 눈에 띄게 안 되는 기능은 없지만, 제작자가 설치하라 하니까 설치합시다.

sudo apt-get install php-json


(옵션) 접속 시 로그인 설정하기

 주소만 안다고 아무나 접근해서 파일을 가져가면 안 되겠죠? .htpasswd를 이용해 접근 제어를 해봅시다.

 먼저 암호화된 패스워드를 얻기 위해 apache2-utils 를 설치하겠습니다.

sudo apt-get install apache2-utils

 그리고 아래 명령어를 통해 /etc/nginx/.htpasswd 파일을 생성합니다.

sudo htpasswd -c /etc/nginx/.htpasswd {사용자이름}

 잘 생성됐나 확인합니다.

cat /etc/nginx/.htpasswd

 됐을 겁니다. 그리고 이제 해당 파일을 적용시킬 페이지 설정 파일을 수정해야 합니다. NAS 접근 페이지니, nginx/sites-available/nas 를 수정합니다.

sudo vi /etc/nginx/sites-available/nas

 root 밑에 블록 안에 아래 두 문장을 추가합니다.

auth_basic "{로그인 프롬프트에 나올 말}";
auth_basic_user_file /etc/nginx/.htpasswd;
nginx

 마지막으로 Nginx를 다시 로드해줍니다.

sudo service nginx reload

 확인해봅니다. 접속 시 아래 프롬프트와 유사하게 나오면 정상입니다.

 로그인 해 접속해봅니다.

 안전하지 않은 연결을 통해 전송된다고 하는데, 이 부분에 관해선 추후 도메인 + SSL 적용으로 해결하겠습니다. 다른 일들에 치여 서버 구축의 진도가 느리네요.. 




 h5ai 설치를 마쳤습니다. 다 좋지만, txt 등 문서 프리뷰에선 한글이 항상 깨져 나오네요. 코드를 분석해 고쳐보려 했지만 코드에선 UTF-8만 사용하니 깨질 이유가 없는데.. CSS의 설정이나 뭐 다른 문제가 있는 것 같습니다. 해결법을 아시는 분이나 짐작이 가는 게 있으시다면 댓글로 알려주세요 :)

 

참고 사이트:
a. 본문 내 링크
b. https://www.digitalocean.com/community/tutorials/how-to-set-up-basic-http-authentication-with-nginx-on-ubuntu-14-04




출처 : http://awesometic.tistory.com/19?category=964086

Posted by 타카스 류지
|

 PHP로 동적 페이지 구현과, Nginx로 웹 서버를 열 준비를 해봅시다. 그리고 DBMS로는 무료인 MariaDB를 사용합니다. 이 조합은 APM(Apache-PHP-MySQL) 조합과 같이 웹 서비스를 위한 기반으로 많이 사용됩니다.

 해당 작업은 HTTP 웹 서버 인덱스를 모던하게 해주는 h5ai와 개인 블로그, 사이트를 구축하기 위한 Wordpress 등을 사용하기 위해 꼭 필요합니다.

 아래 설정은 https://blog.lael.be/post/2600 블로그 포스트를 참고했습니다. 해당 포스트는 설명이 너무 잘 나와 있네요.




1. PHP 설치

1.1 저장소 추가 및 설치

 PHP 7 버전에 대한 업데이트를 제공하는 저장소를 추가해줍시다.

sudo add-apt-repository ppa:ondrej/php

 그리고 fetch 후 php7.1-fpm 을 설치해줍니다.

sudo apt-get update && sudo apt-get install php7.1-fpm


1.2 설정

 기본 시간대를 설정해줘야 합니다. 

sudo vi /etc/php/7.1/fpm/php.ini

 두 파일에서 timezone 부분을 찾아

date.timezone = Asia/Seoul
Bash

 로 바꿔 저장합니다.


2. Nginx 설치

 웹 서버로 Nginx를 사용할 것입니다. Apache가 더 좋으신 분들은 그걸 사용하세요. 여기선 Nginx를 기준으로 진행하겠습니다.

2.1 저장소 추가 및 설치

 오드로이드 우분투 기본 저장소에서도 받으실 수 있지만, 최신 Nginx를 항상 유지하기 위해 저장소를 추가해 줍시다.

sudo add-apt-repository ppa:nginx/stable

 그리고 fetch 후 설치합니다.

sudo apt-get update && sudo apt-get install nginx


2.2 PHP-FPM과 연결 설정

 기본 페이지에서 PHP 확장자에 대한 요청을 PHP-FPM(FastCGI Process Manager)으로 전달하기 위한 설정입니다.

sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.backup
sudo vi /etc/nginx/sites-available/default

 아래 내용으로 바꿔줍시다.

server {
    listen       80 default_server;
    server_name  localhost;
    root   /var/www/html;
 
    location / {
        index  index.php index.html;
    }
 
    location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
            return 404;
        }
 
        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}
nginx

 fastcgi_params 설정파일을 백업한 후 열어 다음과 같이 변경해줍니다.

sudo mv /etc/nginx/fastcgi_params /etc/nginx/fastcgi_params.backup
sudo vi /etc/nginx/fastcgi_params

fastcgi_param   QUERY_STRING            $query_string;
fastcgi_param   REQUEST_METHOD          $request_method;
fastcgi_param   CONTENT_TYPE            $content_type;
fastcgi_param   CONTENT_LENGTH          $content_length;
 
fastcgi_param   SCRIPT_FILENAME         $document_root$fastcgi_script_name;
fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
fastcgi_param   PATH_INFO               $fastcgi_path_info;
fastcgi_param   PATH_TRANSLATED         $document_root$fastcgi_path_info;
fastcgi_param   REQUEST_URI             $request_uri;
fastcgi_param   DOCUMENT_URI            $document_uri;
fastcgi_param   DOCUMENT_ROOT           $document_root;
fastcgi_param   SERVER_PROTOCOL         $server_protocol;
 
fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;
 
fastcgi_param   REMOTE_ADDR             $remote_addr;
fastcgi_param   REMOTE_PORT             $remote_port;
fastcgi_param   SERVER_ADDR             $server_addr;
fastcgi_param   SERVER_PORT             $server_port;
fastcgi_param   SERVER_NAME             $server_name;
 
fastcgi_param   HTTPS                   $https;
 
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param   REDIRECT_STATUS         200;
Bash

 그리고 nginx 서비스를 재시작해줍니다.

sudo service nginx restart

 마지막으로 확인을 위해, 다음 파일을 하나 생성해줍니다.

sudo vi /var/www/html/index.php

 내용은

<?php phpinfo();
PHP

 그리고

http://{오드로이드IP}/index.php

 로 확인해봅시다. 아래와 같은 화면이 나오면 정상입니다.



3. MariaDB 설치

3.1 설치

 MariaDB는 ARM 기반 프로세서를 위한 패키지를 제공하지 않습니다. 따라서 오드로이드 기본 우분투 저장소로부터 받아옵시다.

sudo apt-get install mariadb-server mariadb-client

 그리고 PHP와 연동하기 위해 다음 패키지를 추가 설치 해줍니다.

sudo apt-get install php-mysql


3.2 설정

 기본 언어셋을 범용(UTF-8)으로 설정해줘야 합니다.

 다음 설정파일을 연 후, 

sudo vi /etc/mysql/conf.d/mysql.cnf

 있던 [mysql]을 지우고 아래와 같이 변경합니다.

# MariaDB-specific config file.
# Read by /etc/mysql/my.cnf
 
[client]
# Default is Latin1, if you need UTF-8 set this (also in server section)
default-character-set = utf8mb4
 
[mysqld]
#
# * Character sets
#
# Default is Latin1, if you need UTF-8 set all this (also in client section)
#
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci
Bash

 그리고 서비스를 재시작합니다.

sudo service mysql restart 




참고사이트:
본문 내 링크





출처 : http://awesometic.tistory.com/19?category=964086

Posted by 타카스 류지
|

 Plex Media Server는 개인 모바일 기기 등 외부에서 자신의 동영상과 음악을 쉽고 빠르고 간편하게 관리, 스트리밍할 수 있게 해줍니다. 게다가 트랜스코딩을 지원해 원본이 고화질이라도 화질을 낮춰 스트리밍할 수 있어 데이터 또한 아낄 수 있어요.

 돈을 내면 여러 사용자가 내 서버에 접속해 스트리밍이 가능하다던가 하지만, 무료로도 여러 기기에서 볼 수 있습니다. 전 제 스마트폰, 태블릿, 노트북에서 접속해서 봅니다. 하지만.. 1분단위로 끊기므로, 노트북이 아닌 모바일 OS에서 제대로 활용하시려면 활성화 코드를 구매해야 합니다. 6천원 정도 합니다.

 설치하러 갑시다.




1. Plex Media Server 설치

1.1 저장소 추가 및 설치

 Plex Media Server는 armhf(ARM 프로세서)에 대한 패키지를 제공하지 않습니다. 따라서 비공식적인 루트로 받아야 하는데, 나름 굉장히 잘 업데이트 해주는 곳이 있습니다. dev2day 저장소 입니다.

참고: https://www.dev2day.de/typo3/projects/plex-media-server/

 이 곳의 저장소를 가져옵시다.

wget -O - https://dev2day.de/pms/dev2day-pms.gpg.key | sudo apt-key add -
sudo echo "deb https://dev2day.de/pms/ jessie main" >> /etc/apt/sources.list.d/pms.list

 그리고 fetch 후 설치합니다.

sudo apt-get update && sudo apt-get install plexmediaserver-installer


1.2 국내 메타 데이터 설정

 Plex Media Server는 해외 서비스입니다. 국내 예능이나 영화, 음악에 대해 데이터가 아주 없는 건 아니지만, 기본적으로 해외 서비스니 국내 방송, 음악 정보에 대해선 약합니다. 그리고 나중에 보시면 설명이 영어로 떠요. 이걸 방지하기 위해 hojel 님이 만드신 설정 파일로 국내 메타 데이터를 설정해 줍시다. 영화, 드라마는 다음 무비에서 받고, 음악은 네이버 뮤직에서 받습니다.

참고: https://forums.plex.tv/discussion/75675

 먼저 메타 데이터 설정을 위한 파일을 받습니다.

wget https://github.com/hojel/DaumMovie.bundle/archive/master.zip
wget https://github.com/hojel/NaverMusic.bundle/archive/master.zip

 압축을 /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins 에 풀어 줍니다.

 전 두 개를 한 번에 다운로드 했기 때문에, DaumMovie.bundle은 master.zip, NaverMusic.bundle은 master.zip.1 파일로 저장됐습니다. 정확히 따라오신다면 저와 같을 겁니다.

sudo unzip master.zip -d /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Plug-ins/
sudo unzip master.zip.1 -d /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Plug-ins/

 그리고 확인해보시면

ll /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Plug-ins/

 DaumMovie.bundle-master, NaverMusic.bundle-master 처럼 뒤에 "-master"가 붙어 있습니다. PMS에서 인식을 못할테니, 뒤의 -master를 지워줍시다.

 이름 변경의 용이성을 위해 먼저 이동합니다.

cd /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Plug-ins/

 그리고 각각의 이름을 변경해줍니다.

sudo mv DaumMovie.bundle-master DaumMovie.bundle
sudo mv NaverMusic.bundle-master NaverMusic.bundle

 마지막으로 소유권을 적절히 설정해줍니다.

sudo chown -R plex:nogroup DaumMovie.bundle
sudo chown -R plex:nogroup NaverMusic.bundle


2. Plex Media Server 설정

2.1 접속

 정상적으로 설치가 되었다면, 32400 포트를 통해 접속할 수 있습니다. 뒤에 manage 를 꼭 붙여주세요.

http://{오드로이드IP}:32400/manage

 회원제인데, 회원 가입을 해야 사용하실 수 있습니다. 한글이며 간단하니 회원가입 진행해 주시구요,

 로그인을 하시면 서버를 찾았다고 합니다.


2.2 설정

 설정 페이지로 오시면 다음과 같은 페이지가 뜹니다. 서버의 이름을 적절히 설정해줍니다.

 그리고 미디어 라이브러리를 설정합니다. 찾아보기를 누르셨을 때 일전에 autofs로 자동 마운팅한 외장하드가 뜨면 정상입니다. 적절히 설정 후 완료하세요. 그러면 자동으로 미디어 목록을 PMS로 가져올 겁니다.

 중요한 건 이 부분입니다.

 "외부에서 완전히 접근 가능" 이라는 말이 떠야 합니다. 안 뜬다면, 오드로이드 우분투의 방화벽 규칙과 공유기 사용 시 공유기의 포트포워딩 설정을 확인해주세요. 내부 오드로이드 IP에 대한 32400 포트가 외부에서 접근이 가능해야 합니다.

 그리고, TV 드라마나 예능, 영화를 미디어로 설정하셨다면 다음 무비 에이전트로 바꿉시다.

 대시보드의 왼쪽, 라이브러리에서 자신이 추가한 TV 드라마, 예능, 영화 등등에 마우스를 올리면, 옵션 아이콘이 있습니다.

 여기서 편집을 누릅니다. 그리고 고급을 눌러, 에이전트를 바꿔줍니다.

 아래와 같이 하시면 됩니다.

 다른 새로 추가할 라이브러리에 대해서도 동일하게 적용하시면 됩니다.

 음악에 대한 라이브러리라면 Naver Music을 선택하시면 됩니다.


(옵션) 안드로이드 기기에서 접속

 마켓에서 Plex for Android 를 받아 설치하시면 됩니다. 그리고 만들어둔 ID로 로그인만 하시면 자동으로 연결됩니다. 모바일에서 데이터를 아끼고 싶으시다면 설정을 통해 데이터 사용 시 화질을 조절하셔야 합니다. 그럼 자동으로 트랜스코딩해 스트리밍되므로 데이터를 아끼실 수 있습니다.

 활성화 코드를 구매하시지 않으시면 1분단위로 끊깁니다. 필요에 따라 구매하셔서 사용하실 수 있고, 만약 태블릿에도 보고 싶거나 스마트폰이 바뀌는 경우 새로운 기기에서 Plex에 로그인할 때 "이미 활성화 코드를 구매했다, 활성해달라 요청" 뭐 이런 거 누르면 간단하게 해결해주더라구요. 정확한 말은 기억이 나지 않네요 ㅎㅎ




참고 사이트:
본문 내 링크




출처 : http://awesometic.tistory.com/19?category=964086


Posted by 타카스 류지
|

연결한 외장하드는 Samba로 관리하는 게 가장 편하더군요




1. Samba 설정

(옵션) Samba 패키지 설치

sudo apt-get install samba

이미 설치되어 있다고 하네요. 하지만 혹시 모르니 한 번 타이핑 해줍시다.


1.1. Samba 계정 추가

Samba 로 공유하는 디렉토리에 접근하기 위해선, 따로 계정을 추가해 줘야 합니다. 편의상 기존 오드로이드 접속 계정(root가 아닌)과 같은 이름으로 추가해줍니다.

sudo smbpasswd -a {계정이름}


1.2 Samba 설정

sudo vi /etc/samba/smb.conf

 파일을 열고, 마지막에 다음 형식으로 추가해줍니다. 제 경우엔,

[ODROID NAS - 3.0TB]
comment = Awesometic's NAS
path = /media/externalHdd/ext1
valid users = awesometic
writable = yes
create mask = 0755
directory mask = 0755

[ODROID NAS - 1.5TB]
comment = Awesometic's NAS
path = /media/externalHdd/ext2
valid users = awesometic
writable = yes
create mask = 0755
directory mask = 0755
Xxx

 와 같이 추가해줬습니다. 참고하시고 자신의 시스템에 맞게 적절히 수정해서 적용하세요.


1.3 Samba 재시작

sudo service smbd restart


1.4 내 컴퓨터에 등록

 네트워크 위치에 ODROID(hostname)가 뜰테니 그리로 찾아가거나, 경로에 \\{오드로이드IP주소}\ 를 입력해 찾아갈 수도 있지만,

 역시 내 컴퓨터에 연결해 마치 자신의 하드 디스크인냥 사용하는 게 제일 편합니다.

 완료 스크린샷입니다.


(옵션) 삼바 설정을 통한 성능 최적화

매월 해외에서 출간되는 오드로이드 매거진 4월호를 보시면, 성능 최적화를 위한 삼바 설정이 포함되어 있습니다.

캐시 등 기능 활성화를 위해 적용하시려면 smb.conf에 아래 설정을 추가해주세요.

write cache size 부터가 추가되는 설정입니다.

[ODROID NAS - 3.0TB]
comment = Awesometic's NAS
path = /media/externalHdd/ext1
valid users = awesometic
writable = yes
create mask = 0755
directory mask = 0755
write cache size = 524288
getwd cache = yes
use sendfile = yes
min receivefile size = 16384
socket options = TCP_NODELAY IPTOS_LOWDELAY
Xxx




마지막 업데이트: 170626



출처 : http://awesometic.tistory.com/19?category=964086


Posted by 타카스 류지
|

NAS 용도인데, 외장하드는 꼭 달아야죠.

 하지만 주의하실 점은, 유전원 USB 3.0 허브가 아닌 무전원 USB 허브거나 USB 허브 없이 바로 오드로이드에 외장 하드를 꼽으실 경우.. 파워가 부족해 작동하지 않습니다.

 하드커널에선 기존 오드로이드용 5V 4A 전원 어댑터가 아닌 NAS 용도를 위한 5V 6A 어댑터를 팔기도 하지만, 전 유전원 허브를 추천드립니다.

 그리고 외장하드의 부팅 시 자동 마운트를 위해 /etc/fstab를 수정하지만, 이런 수정은 외장하드를 뺀 후 모르고 fstab 파일을 수정하지 않은 채 재부팅하면 모니터와 키보드를 들고와야 하기 때문에 autofs라는 패키지를 사용하겠습니다.


 참고로 전 USB 3.0 유전원 허브에 외장하드 두 개를 달았습니다.




0. USB 외장하드를 오드로이드에 꼽기


1. 외장하드 마운트

1.1 autofs 패키지 설치

sudo apt-get install autofs


1.2 autofs 설정

 제 설정은 다음과 같습니다.

a. sudo vi /etc/auto.master

...
#/misc  /etc/auto.misc 이 부분을 주석화하시고, 밑에 다음 줄을 추가해주세요.
/media/externalHdd /etc/auto.ext --timeout 20
...

 /media/externalHdd 란 디렉토리를 미리 만들고, 이 곳을 /etc/auto.master 파일에서 /etc/auto.ext 를 위한 마운트 포인트로 설정합니다.


b. sudo vi /etc/auto.ext

먼저 각 파티션별 UUID는 다음과 같이 확인하실 수 있습니다.

:~$ ls -al /dev/disk/by-uuid/
합계 0
drwxr-xr-x 2 root root 140  6월 24 22:24 .
drwxr-xr-x 7 root root 140  6월 24 22:09 ..
lrwxrwxrwx 1 root root  15  6월 24 22:09 52AA-6867 -> ../../mmcblk1p1
lrwxrwxrwx 1 root root  10  6월 24 22:21 68045157-025c-49c3-9fb7-11ac24960aaa -> ../../sda1
lrwxrwxrwx 1 root root  10  6월 24 22:21 9278f893-5104-4efa-9579-efc23bf51df4 -> ../../sdb1
lrwxrwxrwx 1 root root  10  6월 24 22:24 ba4fbfe1-0423-456a-b7dc-9eca0a6d3219 -> ../../sdc1
lrwxrwxrwx 1 root root  15  6월 24 22:09 e139ce78-9841-40fe-8823-96a304a09859 -> ../../mmcblk1p2
:~$ 
Bash


ext1 -fstype=ext4,rw,noatime,data=journal,commit=1 :/dev/disk/by-uuid/68045157-025c-49c3-9fb7-11ac24960aaa
ext2 -fstype=ext4,rw,noatime,data=journal,commit=1 :/dev/disk/by-uuid/9278f893-5104-4efa-9579-efc23bf51df4

 /media/externalHdd/ext1 이란 디렉토리에 UUID가 68045157~ 인 외장 하드가 마운트됩니다. 파일 시스템이 ext4 형식일 경우 옵션이고, NTFS 등 다른 거라면 구글에 검색해주세요 :)

 ext1, ext2 동일한 방법으로 적용합니다.


1.3 autofs 데몬 재시작

sudo service autofs restart

 바로 ls -al 명령어로 마운트 지점을 확인하려 하면 아무 것도 안 뜰 겁니다. 제 경우로 예를 들면,

ls -al /media/externalHdd

 를 해도 아무 디렉토리가 없다고 뜹니다. 하지만

ls -al /media/externalHdd/ext1

 을 하면 ext1 이 생기고, 이건 ext2도 마찬가지입니다. 이렇듯, 한 번 접근을 해줘야 디렉토리가 보여집니다.


1.4 권한 바꾸기

 root 권한일 경우 Samba로 접근할 때 문제가 될 수 있습니다.

 autofs로 마운팅된 디렉토리들의 권한을 바꿔줍시다.

 제 경우,

sudo chown -R awesometic:awesometic /media/externalHdd




참고 사이트

a. http://tgharold.blogspot.com/2013/08/auto-mounted-external-usb-drives-with.html
b. https://forum.odroid.com/viewtopic.php?t=25424

마지막 업데이트: 170624



출처 : http://awesometic.tistory.com/19?category=964086


Posted by 타카스 류지
|

 Webmin 은 웹 기반 유닉스 시스템 관리자 인터페이스입니다. OpenMediaVault 등 NAS를 위한 운영체제에는 기본적으로 딸려 있는데, 우린 그런 걸 사용하지 않을 것이기 때문에 사용자 관리, 패키지 업데이트 같은 웹 기반 관리는 불가능하죠. 하지만 Webmin을 통해서는 할 수 있습니다.

 설치하러 갑시다.




1. 패키지 설치

1.1 PPA 등록

 apt 명령어로 설치, 업데이트하기 위해서 PPA를 등록해줍니다.

echo "deb http://download.webmin.com/download/repository sarge contrib" | sudo tee /etc/apt/sources.list.d/webmin.list

 그리고 저장소 인증을 위해 GPG 키를 설치합니다.

wget http://www.webmin.com/jcameron-key.asc
sudo apt-key add jcameron-key.asc
rm jcameron-key.asc


1.2 설치

 새로운 저장소를 등록했으니 fetch를 위해 update합니다.

sudo apt-get update

 그리고 설치

sudo apt-get install apt-transport-https
sudo apt-get install webmin

 설치한 Webmin을 실행시켜줍니다.

sudo systemctl enable webmin
sudo systemctl start webmin


1.3 설치 확인

 설치가 정상적으로 완료되었으면, 

https://{오드로이드IP}:10000/

 으로 접속이 가능합니다.

 사이트가 안전하지 않다, 뭐라뭐라 할텐데 일단 그냥 사이트로 이동하시면 됩니다. 어차피 우리 서버니까요.


 원랜 크롬 유저지만... 북마크나 확장프로그램등 없이 깔끔함을 위해 엣지로 스크린샷 찍어봤습니다.




참고 사이트

a. https://forum.odroid.com/viewtopic.php?t=25424



출처 : http://awesometic.tistory.com/19?category=964086


Posted by 타카스 류지
|

오드로이드 XU4에서 리눅스 커널 4.9 버전을 공식 지원받기 시작했습니다.

 4.9는 LTS 버전으로, 하드커널 블로그에 따르면 2019년 초까지 지원받는다 하네요.

 기존 3.10도 LTS지만, 이젠 legacy니까 mainline 커널로 이사해 봅시다.


 커널만 따로 컴파일하여 올리는 방법도 있지만, 어차피 이것 저것 해보느라 더러워진 제 오드로이드 XU4에 새로이 하나씩 설정하려고 해요.

 설정하면서, 제가 제 오드로이드 XU4를 NAS 및 개인 클라우드 서버로서 설정하는 방법을 포스팅해보려 합니다.

 독자가 어느 정도 오드로이드와 리눅스 시스템에 지식이 있다고 생각하며 작성하겠습니다.


 주의할 점은! 안정화된 버전이 아니고 한창 디버깅중이라 모든 기능이 정상 작동하진 않을 것입니다. 자주 커널 업데이트를 확인하시길 권장드립니다.


 170521

 새로운 우분투 이미지가 나왔습니다.

https://forum.odroid.com/viewtopic.php?f=146&t=26007&sid=eea1bad8d0fad3f89626f12f5e66a39b

http://odroid.com/dokuwiki/doku.php?id=en:xu3_release_linux_ubuntu_k49

 제가 포스트에서 다룬 건 아주 초기 버전의 커널이었는데, 어느 정도 디버깅이 진행 된 커널로 새로운 이미지가 공개됐네요. GUI가 제외됐을 것으로 추정되는 미니멀 버전도 있으니 필요에 따라 선택하시면 될 것 같습니다 :)




0. 들어가기 앞서..

 먼저, 제 오드로이드 XU4의 목적은 크게 다음과 같습니다.


 NAS

 오드로이드 XU4는 USB 3.0을 지원하기 때문에 USB 3.0 외장 하드만 연결하면 쓸 만한 NAS가 됩니다. 그래서 전 0.5TB, 1.5TB, 3.0TB 외장 하드 총 세 개를 유전원 USB 허브를 통해 사용하고 있어요. 굉장히 좋습니다.
 SAMBA로 제 윈도우 컴퓨터로부터 파일을 업로드 및 다운로드 하고, 외부에선 h5ai를 이용해 간단한 파일 확인, 미디어 스트리밍 및 다운로드를 지원하고 있습니다.


 Plex Media Server - 동영상 스트리밍 서버

 스마트폰이나 태블릿으로 동영상을 따로 넣지 않아도 볼 수 있으면서, 외부에선 저화질로 트랜스코딩해 볼 수 있도록.. 모든 걸 다 해주는 애가 plex media server 입니다.


 Wordpress - 개인 웹 사이트

 아직 제대로 꾸미진 못하고 있지만, 개인 wordpress 웹 사이트를 하나 운영하는 것도 재밌을 것 같아 구축은 해두고 있습니다. 굳이 남들을 위한 포스팅이 아니더라도 개인 사이트를 활용할 방법은 많으니까요!


 개인 공부용 클라우드 서버

 서버와 연동하는 서비스 개발에 흥미가 많습니다. 안드로이드 앱과 웹을 주로 개발하는데, 이런 서버 하나 있으면 도움이 많이 되더라구요. DBMS와도 연동할 수 있구요. 대체로 Node.js 나 CodeIgniter로 소켓, 웹 서버를 열어 포트포워딩 해 사용합니다.


 그리고 웹 사이트나 NAS는 외부에서 접속하기 쉽도록 내도메인.한국 에서 kro.kr 도메인을 얻어 사용하고 있습니다. 또한, LetsEncrypt로 SSL 인증서를 발급받아 SSL로 웹 사이트를 엽니다.

 크롬에서 "안전함" 을 띄워 놓으면 뭔가 마음의 안정이 되기도 하고, 보안의 이유도 있는데, 특히나 NAS같은 경우 제 개인 서버인데 외부에서 사용하다 ID, PW가 쉽게 노출되면.. 어휴

 마지막으로 전 오드로이드는 클라우드 서버로만 사용하기 때문에, GUI, 데스크탑 환경은 최대한 배제합니다.

 따라서 이번 포스팅은 위에서 나열한 모든 걸 간단히 정리합니다.

 처음부터요.




1. 우분투 16.04(리눅스 커널 4.9 버전 포함) 설치

1.1 다운받기

 http://dn.odroid.com/5422/ODROID-XU3/Ubuntu/trial_4.9/ubuntu-16.04.2-mate-odroid-xu4-20170222.img.xz

 하드커널에서 오드로이드 XU3, XU4를 위한 커널 4.9버전이 포함된 우분투 16.04.2 Mate를 배포해주기 시작했습니다. 받아서 압축을 풀어주세요.


1.2 Win32DiskImager 다운받아 설치

 https://sourceforge.net/projects/win32diskimager/

 Win32DiskImager를 이용해 부팅 디스크(SD카드나 eMMC)에 위에서 다운 받은 운영체제 이미지를 올리기 위함입니다. 받아서 설치해주세요.


1.3 Win32DiskImager를 이용해 부팅 디스크에 이미지 쓰기

 Win32DiskImager를 실행해, Image File 에서 폴더 아이콘 클릭 후 받아 둔 우분투 이미지를 선택합니다. 그리고 오른쪽 Device에서 부팅 디스크에 맞는 알파뱃을 고르세요. 이상한 거 고르면 다 날아가니까 주의하세요.

 모두 맞게 설정하셨다면 하단에 Write를 누릅시다.


1.4 오드로이드 XU4에 부팅 디스크로 부팅하기

 SD카드면 옆면의 SD카드 슬롯에, eMMC면 아랫면에 eMMC 슬롯에 꼽고, 부트 모드 스위치를 알맞게 똑딱 하신 후 전원을 넣습니다. 물론 인터넷 랜선도 연결돼 있어야 합니다.



2. SSH 접속하기

(추천) Xshell 설치

 http://www.netsarang.co.kr/xshell_download.html

 개인적으론 SSH 접속 프로그램으로 Xshell을 좋아합니다. PuTTY나 심지어 이젠 윈도우 10의 배쉬에서도 SSH 접속이 가능하지만, Xshell이 로그인 정보 저장, 화면 분할, 폰트 변경 등 편하더라구요.


2.1 오드로이드 XU4에 접속

 오드로이드에 할당된 IP 주소를 이용해 SSH 접속합니다. 기본 로그인 정보는 root / odroid 또는 odroid / odroid 입니다.


2.2 데스크탑 환경(GUI) 비활성화 및 삭제

 https://askubuntu.com/questions/823479/how-to-remove-gui-on-ubuntu-server-16-04

 서버로만 사용하기 때문에, GUI 환경이 필요 없습니다. 따라서 아래 명령어로 제거해줍니다.

sudo systemctl disable lightdm.service

 GUI와 관련된 x11 또는 qt 관련 파일들과 그들의 의존성 패키지들을 전부 제거해줍니다.

sudo apt-get purge libx11.* libqt.* && apt-get autoremove


2.3 cups 삭제

 2.2 를 진행하시면 다음부터 apt 명령어 작업을 하실 때 뭔가 의존성 문제를 계속 뿜습니다. cups 관련 패키지들이 없다는 말인데, 프린터 관련 패키지인 cups 자체를 지워줍니다.

sudo apt-get purge cups* && apt-get autoremove


2.4 Chromium, Firefox, Kodi 삭제

 이번에 하드커널에서 배포한 우분투 이미지엔 Chromium과 Kodi, GStreamer 가 기본 설치되어 있습니다. Firefox는 우분투의 원래 기본 설치 패키지이구요.

 Kodi는 개인적으로 안 쓰니 삭제하고, Chromium과 Firefox 또한 GUI가 아니기 때문에 필요 없습니다.

 GStreamer는 설명에 보면 비디오 인코딩/디코딩을 위해 존재한다고 합니다. 간단히 찾아보니 Plex Media Server 사용 시 트랜스코딩할 때 ffmpeg 대신 사용할 수 있다는 것 같네요. 아직은 사용할 줄 모르지만 훗날을 위해 남겨둬 보겠습니다.

sudo apt-get purge chromium* firefox* kodi* && sudo apt-get autoremove


2.5 재부팅

 많이 제거해줬으니 한 번 재부팅 해줍니다.

sudo reboot


2.6 패키지 업그레이드

 이제 살아남은 기본 패키지들을 업그레이드 해줍니다.

sudo apt-get update && sudo apt-get dist-upgrade -y

 커널 업데이트가 포함되어 있으니 재부팅 해줍니다.

sudo reboot

 재부팅 후 기존 커널 관련 파일들을 autoremove로 지워줍니다.

sudo apt-get autoremove


2.7 vim 설치

 앞으로 vi를 이용한 설정 파일 수정이 많기 때문에, vim를 설치하겠습니다.

sudo apt-get install vim


2.8 한글 설정

 터미널에서 정상적으로 한글을 출력하기 위해 기본 문자셋을 한글로 바꿔주는 작업입니다.

 한글 패키지를 다운 받습니다.

sudo apt-get install language-pack-ko-base

 로케일을 한글로 업데이트 시켜줍니다.

sudo update-locale LANG=ko_KR.UTF-8

 환경변수도 설정해줍니다.

sudo vi /etc/environment

 마지막에 다음 두 줄 추가

LANG="ko_KR.UTF-8"
LANGUAGE="ko_KR:ko:en_US:en"

 마지막으로 시간대를 서울로 바꿔주기 위해 ~/.profile 마지막에 추가합니다.

vi ~/.profile
TZ='Asia/Seoul'; export TZ

 새로운 사용자에게도 적용하기 위해, /etc/skel/.profile 에도 추가합니다

sudo vi /etc/skel/.profile
TZ='Asia/Seoul'; export TZ

 추가로 기본 시간대를 바꿔줍니다.

dpkg-reconfigure tzdata

 Asia/Seoul 로 설정해주시면 됩니다.

 재부팅 해줍니다.

sudo reboot


3. 사용자 추가

3.1 기존 계정 삭제

 기본 계정 중 odroid란 계정이 있습니다. 과감히 지워줍시다.

sudo deluser -remove-all-files odroid

 원래 이러면 홈디렉토리를 포함하여 삭제해주는데 이상하게 남아있네요. 제거해줍니다.

sudo rm -rf /home/odroid

 170502 과감히 지우려 했는데, 커널 업데이트할 때 사용자 odroid가 없다고 뭐라 하네요. 남겨놔야 하는 것 같습니다. 


3.2 사용자 계정 추가

 자신만의 계정을 추가해줍니다.

sudo adduser {계정이름}

 실행 시 묻는 질문들에 적절히 대답해 줍니다.


3.3 추가한 계정에 sudo 권한 부여

 이젠 SSH로 root 접속을 불가능하게 할 것입니다. 따라서, 추가한 계정에 sudo 권한을 부여해줍니다.

sudo usermod -G sudo awesometic


4. root 로그인 설정

4.1 root 패스워드 변경

 root 계정의 패스워드가 아직도 odroid입니다. 어렵게 바꿔줍시다.

sudo passwd


4.2 SSH로 root 로그인 방지

 SSH에 root로 로그인할 수 없도록 해주는 과정입니다.

sudo vi /etc/ssh/sshd_config

 내용 중 

 PermitRootLogin yes 를 찾아 yes를 no 로 바꿔 저장합니다.

 그리고 sshd 서비스를 재시작해줍니다.

sudo service sshd restart




 우분투 설치 및 기본 설정을 마쳤습니다.

 이제 개인 클라우드 서버를 위한 작업들을 진행하겠습니다.



출처 : http://awesometic.tistory.com/19?category=964086


Posted by 타카스 류지
|

160626 조만간 ODROID XU4 용 Ubuntu 16.04 LTS Server 가 지원될 예정이라고 함!

160720

 - Ubuntu 16.04 LTS 로 업데이트

 - 커널도 이미 3.10.96이고, root 파티션도 확장되어 있어 내 용도에는 odroid-utility 가 굳이 필요 없었음

170122

 - 최초 패키지 업데이트시 프롬프트 관련 추가

 - tzselect 관련 업데이트





1. OS 설치 (여기선 Ubuntu 16.04 LTS Minimal)

http://odroid.in/?directory=.%2Fubuntu_16.04lts%2F


// 여기부턴 오드로이드에 SSH 접속 후 진행

2. root 패스워드 변경

# passwd


// # reboot

 

4. 패키지 업데이트 

# apt-get update; apt-get upgrade -y

# apt-get autoremove

패키지 업데이트 시 묻는 프롬프트들은 전부 그냥 엔터 쳐서 default로 설정


5. 한글 설정 (해당 설정을 하지 않으면 한글이 전부 깨져서 표기됨)

# apt-get install -y language-pack-ko-base

# apt-get install ttf-unfonts-core

# update-locale LANG=ko_KR.UTF-8

5-1. 환경변수 추가 작업

# vi /etc/environment

끝에 다음 내용 추가

LANG="ko_KR.UTF-8"

LANGUAGE="ko_KR:ko:en_US:en"


6. 시간대 설정 (Asia, South Korea 를 선택해 최종적으로 Asia/Seoul 로 설정)

# tzselect


// # reboot


7. root 외 계정 추가

# adduser {계정이름}



출처 : http://awesometic.tistory.com/19?category=964086


Posted by 타카스 류지
|