Google 도메인 용 DDclient DyDNS 구성

OS/Linux 2019.01.23 00:30 Posted by 파란크리스마스

출처

DDclient 설치

$ sudo apt-get update
$ sudo apt-get install ddclient

DDclient 설정

$ sudo vi /etc/ddclient.conf

ddclient.conf 내용

# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf

ssl=yes
#protocol=dyndns2
protocol=googledomains
use=web
server=domains.google.com
login=XXXXXXXXXXXXXXXXXXXXXXX
password='XXXXXXXXXXXXXXXXXXXXXXX'
www.XXXXXXXX.biz
daemon=100

DDclient 데몬 설정

$ sudo vi /etc/default/ddclient

ddclient 내용

run_daemon="true"
daemon_interval="300"

DDclient 서비스 등록

$ sudo systemctl enable ddclient
ddclient.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ddclient
$ sudo systemctl start ddclient
$ sudo systemctl status ddclient
● ddclient.service - LSB: Update dynamic domain name service entries
   Loaded: loaded (/etc/init.d/ddclient; generated)
   Active: active (running) since Wed 2019-01-23 00:28:19 KST; 11min ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/ddclient.service
           └─1219 ddclient - sleeping for 250 seconds
 
 1월 23 00:28:19 bluesanta-desktop systemd[1]: Starting LSB: Update dynamic domain name service entries...
 1월 23 00:28:19 bluesanta-desktop systemd[1]: Started LSB: Update dynamic domain name service entries.

Ubuntu 18.04 : MariaDB 10.3.12 컴파일, 설치

Database 2019.01.22 15:53 Posted by 파란크리스마스

출처

리눅스 정보 조회

출처 : 리눅스 종류 확인, 리눅스 버전 확인 - 제타위키

$ cat /etc/*-release | uniq
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"
NAME="Ubuntu"
VERSION="18.04.1 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.1 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

리눅스 비트 확인

출처 : 리눅스 32비트 64비트 확인 - 제타위키

$ getconf LONG_BIT
64

관련패키지 설치

$ sudo apt-get update
$ sudo apt-get install gcc g++ libncurses5-dev libxml2-dev openssl libssl-dev curl libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev libsasl2-dev autoconf libncurses5-dev

MySQL 계정 만들기

$ sudo groupadd mysql
$ sudo useradd -g mysql -s /bin/bash -m mysql

cmake 설치

$ sudo apt-get install cmake

mariadb 소스 다운로드, 압축해제, 컴파일, 설치

$ wget https://downloads.mariadb.org/interstitial/mariadb-10.3.12/source/mariadb-10.3.12.tar.gz
$ tar xvf mariadb-10.3.12.tar.gz
$ cd mariadb-10.3.12/
$ sudo cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mariadb103 \
-DMYSQL_DATADIR=/usr/local/mariadb103/data \
-DMYSQL_UNIX_ADDR=/usr/local/mariadb103/mysql.sock \
-DSYSCONFDIR=/usr/local/mariadb103 \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_USER=mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DDOWNLOAD_BOOST=0 -DWITH_BOOST=./boost
$ sudo make
$ sudo make install

환경설정

$ sudo vi /usr/local/mariadb103/my.cnf

[mysqld]
# port=3306
# basedir=/usr/local/mysql57
# datadir=/usr/local/mysql57/data
# pid-file=/usr/local/mysql57/mysqld.pid
# log_error=/usr/local/mysql57/mysql_error.log
# lc-messages-dir=/usr/local/mysql57/share

init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8
character-set-server=utf8
collation-server=utf8_general_ci
# table_cache=1024
max_connections=2048
max_user_connections=500
max_connect_errors=10000
wait_timeout=300
query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 5M
slow_query_log
long_query_time=3
max_allowed_packet=16M
sort_buffer_size = 2M
# skip-innodb
skip-name-resolve
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

[mysql]
default-character-set=utf8

[client]
default-character-set=utf8

mariadb 설치 디렉토리 mysql 계정으로 권한 수정

$ sudo chown -R mysql:mysql /usr/local/mariadb103

mariadb 데이터베이스 초기화 (mysql 계정으로 실행)

$ cd /usr/local/mariadb103
$ scripts/mysql_install_db --no-defaults --user=mysql --datadir=/usr/local/mariadb103/data --basedir=/usr/local/mariadb103 -v
Installing MariaDB/MySQL system tables in '/usr/local/mariadb103/data' ...
OK
 
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
 
 
PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:
 
'/usr/local/mariadb103/bin/mysqladmin' -u root password 'new-password'
'/usr/local/mariadb103/bin/mysqladmin' -u root -h bluesanta-desktop password 'new-password'
 
Alternatively you can run:
'/usr/local/mariadb103/bin/mysql_secure_installation'
 
which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.
 
See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.
 
You can start the MariaDB daemon with:
cd '/usr/local/mariadb103' ; /usr/local/mariadb103/bin/mysqld_safe --datadir='/usr/local/mariadb103/data'
 
You can test the MariaDB daemon with mysql-test-run.pl
cd '/usr/local/mariadb103/mysql-test' ; perl mysql-test-run.pl
 
Please report any problems at http://mariadb.org/jira
 
The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/

root 암호 초기화

$ bin/mysqld_safe --skip-grant-tables &
[1] 11396
mysql@bluesanta-desktop:/usr/local/mariadb103$ 190122 23:11:49 mysqld_safe Logging to '/usr/local/mariadb103/data/bluesanta-desktop.err'.
190122 23:11:49 mysqld_safe Starting mysqld daemon with databases from /usr/local/mariadb103/data

mysql@bluesanta-desktop:/usr/local/mariadb103$ bin/mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.3.12-MariaDB-log Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> update user set authentication_string = password('sqldba') where user = 'root';
Query OK, 4 rows affected (0.001 sec)
Rows matched: 4  Changed: 4  Warnings: 0

MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.000 sec)

MariaDB [mysql]> quit
Bye

mariadb 서비스 등록

서비스 mariadb 파일 복사

$ sudo cp /usr/local/mariadb103/support-files/mysql.server /etc/init.d/mariadb

mariadb 수정

$ sudo vi /etc/init.d/mariadb

mariadb파일을 열어서 basedir에 mariadb가 설치된 디렉토리와 데이터 디렉토리(datadir)를 설정한다.

basedir=/usr/local/mariadb103
datadir=/usr/local/mariadb103/data

  # Try to find basedir in /etc/my.cnf
  conf=/usr/local/mariadb103/my.cnf

mariadb 서비스 등록

$ sudo update-rc.d mariadb defaults

mariadb 서비스 실행

$ sudo systemctl start mariadb.service
$ sudo systemctl status mariadb.service
● mariadb.service - LSB: start and stop MariaDB
   Loaded: loaded (/etc/init.d/mariadb; generated)
   Active: active (running) since Tue 2019-01-22 22:59:51 KST; 11s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 10984 ExecStart=/etc/init.d/mariadb start (code=exited, status=0/SUCCESS)
    Tasks: 32 (limit: 4915)
   CGroup: /system.slice/mariadb.service
           ├─11058 /bin/sh /usr/local/mariadb103/bin/mysqld_safe --datadir=/usr/local/mariadb103/data --pid-file=/us
           └─11191 /usr/local/mariadb103/bin/mysqld --basedir=/usr/local/mariadb103 --datadir=/usr/local/mariadb103/
 
 1월 22 22:59:50 bluesanta-desktop systemd[1]: Starting LSB: start and stop MariaDB...
 1월 22 22:59:50 bluesanta-desktop mariadb[10984]: Starting MariaDB
 1월 22 22:59:50 bluesanta-desktop mariadb[10984]: .190122 22:59:50 mysqld_safe Logging to '/usr/local/mariadb103/da
 1월 22 22:59:50 bluesanta-desktop mariadb[10984]: 190122 22:59:50 mysqld_safe Starting mysqld daemon with databases
 1월 22 22:59:51 bluesanta-desktop mariadb[10984]:  *
 1월 22 22:59:51 bluesanta-desktop systemd[1]: Started LSB: start and stop MariaDB.

mariadb 서비스 종료

$ sudo systemctl stop mariadb.service

사용자 추가

mysql> create user 'user1'@'%' identified by 'userpw';
mysql> grant all privileges on *.* to 'user1'@'%' with grant option;
mysql> flush privileges;

DB 종속적 사용자 추가

create user 'terecal'@'%' identified by '****';
GRANT ALL privileges ON terecal_db.* TO 'terecal'@'%';
flush privileges;

micro:bit - L298N 이용 RC카 만들기(라디오통신)

OS/micro:bit 2019.01.05 23:54 Posted by 파란크리스마스

본 체험 제품은 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다.


출처

L298N DC모터 드라이버 스테핑모터

아두이노나 라즈베리파이를 이용해서 RC카를 만들때 사용했던 L298N 모터 드라이버를 micro:bit로 RC카를 만들어 보았습니다.
L298N 모터 드라이버를 저는 좋아하는데, 좌우 모터를 각각 앞뒤로 회전 시킬 수 있고, 좌우 각각 모터의 회전 속도도 정할 수 있으며,
최대의 장점으로는 가격이 저렴하고, 관련 자료가 많아 구현이 어렵지 않습니다.

무선 송수신 방식

무선 송수신 방식은 처음에는 BLE를 이용해서 핸드폰으로 구현 하려고 했는데,C언어로 구현할때는 간단하던 것이
블럭코딩에서 BLE방식으로 문자열 주고 받는 예제를 찾을 수 없어서, 라이브러리를 만들까 햇지만, 작업량이 너무 많아져서 BLE방식은 포기하고 라디오 송수신 방식을 이용했습니다.

전면 LED 화면 끄기

확장 보드를 사용하면서 주의 해야 될 점은 전면 LED 화면을 끄지 않으면, LED 핀과 충돌하여 정상적으로 동작하지 않는 다는 점인데,
C 언어를 사용할때는 기본적으로 껴져 있는데, 블럭코딩에서는 기본적으로 활성화 되어 있으므로, LED를 사용하지 않는 다면 LED 화면을 비활성화 시켜두는 것이 오동작을 막을 수가 있습니다.

LED를 사용해야 한다면 LED 제어 핀번호와 충돌이 발생하지 않는지 확인 해보고 구현해야 됩니다.

RC카 송신기

송신기(RC카 컨트롤러)는 지니어스 엣지보드와 호환 되는 조이스틱을 이용했습니다.

RC카 수신기

실행 영상


마이크로비트 지니어스키트 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
아이씨뱅큐 공식 카페 : http://cafe.naver.com/icbanq
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
나도메이커 유튜브 채널 : https://www.youtube.com/user/ICbanQ

micro:bit - 초음파 거리센서(HC-SR04) 확장 라이브러리

OS/micro:bit 2018.12.08 17:13 Posted by 파란크리스마스

본 체험 제품은 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다.


출처 : Steve136/microbit-ultrasonic: Example usage of a HC-SR04 Ultrasonic Sensor and the BBC Micro:Bit.
HCSR04 - Ultrasound Ranging Sensor module | Mbed

micro:bit - 초음파 거리센서(HC-SR04) 확장 라이브러리

micro:bit의 기본 함수로 구현하기 힘든 부분들은 확장 라이브러리로 제공이 되는데, 
초음파 거리센서(HC-SR04)를 단순하게 사용할 수 있도록 확장 라이브러리를 직접 만들어 보았습니다.

라이브러리의 사용은 제한이 없지만, 다른곳에 글을 올리는 경우 출처만 남겨주세요.

구현이 필요한 확장 라이브러리가 있으시면 댓글 남겨주시면 시간날때 만들어서 공개하겠습니다.

micro:bit - 초음파 거리센서(HC-SR04) 확장 라이브러리 사용하기

확장 라이브러리를 추가하기 위해서, [고급] 메뉴를 선택하여 [고급] 메뉴를 확장

확장된 메뉴에서 [확장] 메뉴를 선택하여 라이브러리 추가 화면으로 이동

검색창에 초음파 센서 Github 주소(https://github.com/bluexmas/pxt-ultrasonic-microbit)를 삽입하고, 검색(돋보기) 버튼 선택

검색된 초음파 센서 라이브러리 선택 (아이콘 작업을 했는데 아이콘이 나오지 않는데 이유를 알수가 없네요)

초음파 센서 라이브러리 함수 확인 ( 초기화 함수, 거리값을 가져오는 함수)

초음파 센서 함수 설정 - 첫번째 파라미터는 Trig핀, 두번째 파라미터는 Echo핀 설정

거리측정 값을 담을 변수 생성을 위해서 변수 메뉴에서 [변수 만들기...] 선택

변수 이름을 설정하고, [확인] 버튼 선택

거리 변수에 초음파 센서로 받은 거리값을 담고, LED 화면에서 거비 변수값을 출력

실행

OLED 거리값 출력 해보기

실행 결과


마이크로비트 지니어스키트 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
아이씨뱅큐 공식 카페 : http://cafe.naver.com/icbanq
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
나도메이커 유튜브 채널 : https://www.youtube.com/user/ICbanQ

본 체험 제품은 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다.


OLED를 이용하여 온,습도,토양수분,기울기 센서의 값 표시하기

초기화

OLED 초기화, 변수 초기화

기울기 센서값 가져오기

습도센서 값 가져오기

아나로그 입력 값 가져오기

온도센서 값 가져오기

아나로그 입력 값을 가져와서 온도 계산

OLED 출력

완성된 코드

실행 결과


마이크로비트 지니어스키트 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
아이씨뱅큐 공식 카페 : http://cafe.naver.com/icbanq
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
나도메이커 유튜브 채널 : https://www.youtube.com/user/ICbanQ

micro:bit 지니어스키트 : OLED에 글씨 써보기

OS/micro:bit 2018.11.24 21:53 Posted by 파란크리스마스

 본 체험 제품은 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다.

지니어스키트의 OLED를 이용해서 문자열 출력 예제를 만들어 보았습니다.

OLED를 사용하기 위해서 마이크로비트의 확장 라이브러리를 추가 하는 방법과 변수 사하는 방법을 배워보겠습니다.

OLED 확장 라이브러리 추가

[고급] -> [확장] 메뉴 선택

검색창에 oled-ssd1306 을 입력하고 [돋보기] 아이콘 선택하여 검색후, 검색된 목록에서 [oled-ssd1306]을 선택

추가된 [OLED] 메뉴 확인

OLED 확장 라이브러리 사용

초기화, 문자열 출력

[시작하면 실행] 블럭에 반듯이 OLED를 초기화해야 하고,, 예제로 문자열을 출력해보았습니다.

문자열 출력 예제 실행 결과

버튼를 이용하여 OLED에 글씨 써보기

간단하게 더하기 하는 예제를 만들어 보았습니다. 왼쪽(A) 버튼을 누르면 좌변의 값을 1증가하고, 오른쪽(B) 버튼을 누르면 우변의 값을 1증가해서 더해진 값을 OLED에 출력하는 예제입니다.

변수 만들기

[변수] 메뉴에서 [변수 만듥기] 메뉴 선택  

변수 이름을 입력하고 [확인] 버튼 선택

[변수] 메뉴를 선택하면 만들어진 변수 확인

완성된 코드

실행 결과


마이크로비트 지니어스키트 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
아이씨뱅큐 공식 카페 : http://cafe.naver.com/icbanq
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
나도메이커 유튜브 채널 : https://www.youtube.com/user/ICbanQ

micro:bit 지니어스키트 : 개봉기

OS/micro:bit 2018.11.18 22:09 Posted by 파란크리스마스

본 체험 제품은 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다.

마이크로비트에 관심이 많아서 여러가지 확장하려고 알아 보던중에 지니어스키트를 알게 되었는데,
이번 체험단에 당선되어서 지니어스키트를 얻게 되었습니다.

확장보드와 확장보드를 통해 각종 센서로 부터 입력 받은 값을 여러가지 아웃풋으로 보여 줄수 있고,
확장보드와 연결도 간단한 클립형태로 연결할 수 있어서 초등학생도 어렵지 않게 사용할 수 있도록 구성되어 있습니다. 


마이크로비트 지니어스키트 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
아이씨뱅큐 공식 카페 : http://cafe.naver.com/icbanq
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
나도메이커 유튜브 채널 : https://www.youtube.com/user/ICbanQ

무상체험단 모집(마이크로비트 지니어스키트)

OS/micro:bit 2018.10.31 01:22 Posted by 파란크리스마스


안녕하세요 ! :D
요즘 가장 핫한 오픈소스하드웨어는? 바로!
마이크로비트 라고 할 수 있죠!
마이크로비트를 더욱 더 다양하게 활용해볼 수 있는 <지니어스키트> 가 드디어 체험단을 진행하게 되었습니다.

이번에는 이전과 조금 다른 체험단 신청 방법으로 진행 될 예정인데요!

아래 순서로 진행해주시면 됩니다.

1. 나도메이커 카페 가입 : https://cafe.naver.com/icbanq
2. 마이크로비트 카페 가입 : https://cafe.naver.com/bbcmicro
3. 지금 보고 계시는 게시글을 SNS 에 스크랩 !
4. 체험단 신청서 작성!
5. 유튜브 '나도메이커' 채널 구독 시 당첨 확률 UPUP!!
체험단 신청하러 가기 ▶ https://goo.gl/Y1ByVP
유튜브 구독 하러 가기 ▶ https://goo.gl/tJ9Znc


출처

언어 설정

메뉴 [기본 설정] > [Raspberry Pi Configuration] 선택

탭 [Localisation] 선택

버튼 [Set Locale...] 선택하고, 팝업 창[Locale] 에서 Language, Character Set 설정

버튼 [Set Timezone...] 선택하고, 팝업 창[Timezone] 에서 Area, Location 설정

버튼 [Set Keyboard...] 선택하고, 팝업 창[Keyboard] 에서 Model, Layout, Variant 설정

버튼 [Set WiFi Country Code...] 선택하고, 팝업 창[WiFi Country Code] 에서 Country 설정

한글 입력기(uim) 설치

$ sudo apt-get install uim uim-byeoru fonts-unfonts-core

uim로 입력기 설정

$ im-config -n uim

입력기 설정 확인

$ cat .xinputrc 
## im-config(8) generated on Sat, 20 Oct 2018 21:14:47 +0900
run_im uim
## im-config signature: 7e7926db202ba349880ee57ac6ef0013  -

입력기 설정 후 재부팅

$ sudo shutdown -r now

uim 입력기 설정

메뉴 [기본 설정] > [Raspberry Pi Configuration] 선택

[디폴트 입력기 지정]에서 ]디폴트 입력기]를 [벼루]로 설정

[Display behavior]에서 [Display]를 Never로 설정

[전체] 켜기, [전체] 끄기를 한영전환키 설정과 충돌이 생기지 않도록 비워두고 적용

벼루 키 설정 1

Ubuntu 18.04 : Tomcat 설치

OS/Linux 2018.10.08 03:11 Posted by 파란크리스마스

출처

Tomcat 8.5 다운로드 및 압축해제

$ wget http://apache.tt.co.kr/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz
$ tar xvf apache-tomcat-8.5.34.tar.gz
$ sudo mv apache-tomcat-8.5.34 /usr/local/

jdk 설치

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer

서비스 파일 작성

$ sudo vi /etc/systemd/system/tomcat.service

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-8-oracle
Environment=CATALINA_PID=/usr/local/apache-tomcat-8.5.34/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/local/apache-tomcat-8.5.34
Environment=CATALINA_BASE=/usr/local/apache-tomcat-8.5.34
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/usr/local/apache-tomcat-8.5.34/bin/startup.sh
ExecStop=/usr/local/apache-tomcat-8.5.34/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

Tomcat 8.5 서비스 등록

$ sudo systemctl daemon-reload
$ sudo systemctl enable tomcat      (재부팅시 자동실행)
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /etc/systemd/system/tomcat.service.

Tomcat 8.5 서비스 실행

$ sudo systemctl start tomcat

Tomcat 8.5 서비스 실행 정보 확인

$ systemctl status tomcat.service
● tomcat.service - Apache Tomcat Web Application Container
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-10-04 07:13:23 KST; 17s ago
  Process: 5797 ExecStart=/usr/local/apache-tomcat-8.5.34/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 5805 (java)
    Tasks: 48 (limit: 4915)
   CGroup: /system.slice/tomcat.service
           └─5805 /usr/lib/jvm/java-8-oracle/bin/java -Djava.util.logging.config.file=/usr/local/apache-to
 
10월 04 07:13:23 bluesanta-ubuntu systemd[1]: Starting Apache Tomcat Web Application Container...
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using CATALINA_BASE:   /usr/local/apache-tomcat-8.5.34
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using CATALINA_HOME:   /usr/local/apache-tomcat-8.5.34
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.34
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using JRE_HOME:        /usr/lib/jvm/java-8-oracle
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using CLASSPATH:       /usr/local/apache-tomcat-8.5.34
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using CATALINA_PID:    /usr/local/apache-tomcat-8.5.34
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Tomcat started.
10월 04 07:13:23 bluesanta-ubuntu systemd[1]: Started Apache Tomcat Web Application Container.

Tomcat 8.5 서비스 종료

$ sudo systemctl stop tomcat

Ubuntu 18.04 : svn 설치

OS/Linux 2018.10.08 03:11 Posted by 파란크리스마스

출처

svn 설치

# apt-get install -y subversion

svn 환경파일(/conf/svnserve.conf) 수정

# vi /bluesanta/Repositories/conf/svnserve.conf

[general]
#인증되지않은(즉 계정이 없는) 사용자에 대해 접근을 거부한다.
anon-access = none
#인증된 사용자에 대해 쓰기 권한을 준다.
auth-access = write
#인증된 사용자에 대한 계정 정보(아이디/패스) 정보가 기록된 파일명을 의미한다.(기본값 passwd) 
password-db = passwd
#인증된 사용자에 대해 저장소에 대한 권한 설정이 기록된 파일명(기본값)
#authz-db = authz
#현재 파일에 해당되는 저장소의 영역에 대해 설정
#realm = bluesanta_proj

사용자 관리(/conf/passwd) 파일

# vi passwd

[users]
bluesanta = {password}

사용자 관리(/conf/authz) 파일

# vi authz

[/android_library]
bluesanta = rw

svn 시작

# svnserve -d -r /bluesanta/Repositories

svn 종료

# killall svnserve

svn 포트 개발(3690)

# firewall-cmd --permanent --zone=public --add-port=3690/tcp
# firewall-cmd --reload

svn editor 설정

# SVN_EDITOR=/usr/bin/vim
# export SVN_EDITOR

svn 기본 디렉토리 만들기

$ svn mkdir svn://localhost/work2

svn 데몬 자동실행

$ sudo vi /etc/rc.local

# Subversion
svnserve -d -r /bluesanta/Repositories

서비스 등록

$ vi svnserve

#! /bin/sh
### BEGIN INIT INFO
# Provides:          svnserve
# Required-Start:    $local_fs $syslog $remote_fs
# Required-Stop:     $local_fs $syslog $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start svnserve
### END INIT INFO

# Author: Michal Wojciechowski <odyniec@odyniec.net>

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="svnserve"
NAME=svnserve
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-d -r /bluesanta/Repositories"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

[ -x "$DAEMON" ] || exit 0

[ -r /etc/default/$NAME ] && . /etc/default/$NAME

. /lib/init/vars.sh

. /lib/lsb/init-functions

do_start()
{
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
                $DAEMON_ARGS \
                || return 2
}

do_stop()
{
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
        RETVAL="$?"
        [ "$RETVAL" = 2 ] && return 2
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
        [ "$?" = 2 ] && return 2
        rm -f $PIDFILE
        return "$RETVAL"
}

case "$1" in
  start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  restart|force-reload)
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
          0|1)
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 3
        ;;
esac

exit 0

svnserve 파일 복사

$ sudo cp svnserve /etc/init.d
$ sudo chmod u+x /etc/init.d/svnserve 

서비스 등록

$ sudo update-rc.d svnserve defaults

서비스 실행

$ sudo service svnserve start

서비스 실행 정보 확인

$ sudo service svnserve status
● svnserve.service - LSB: Start svnserve
   Loaded: loaded (/etc/init.d/svnserve; generated)
   Active: active (running) since Wed 2018-10-03 21:37:05 KST; 11s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2338 ExecStop=/etc/init.d/svnserve stop (code=exited, status=0/SUCCESS)
  Process: 2380 ExecStart=/etc/init.d/svnserve start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/svnserve.service
           └─2387 /usr/bin/svnserve -d -r /bluesanta/Repositories

10월 03 21:37:05 bluesanta-ubuntu systemd[1]: Starting LSB: Start svnserve...
10월 03 21:37:05 bluesanta-ubuntu svnserve[2386]: DIGEST-MD5 common mech free
10월 03 21:37:05 bluesanta-ubuntu systemd[1]: Started LSB: Start svnserve.

Ubuntu 18.04 : MySQL 5.7.23 컴파일, 설치

Database 2018.10.08 03:09 Posted by 파란크리스마스

출처

Ubuntu server에 mysql 5.5.x 설치하기 -pupustory@- - Tistory
[Linux/CentOS] Mysql을 컴파일해서 설치해보자 - AT BLOG

리눅스 정보 조회

출처 : 리눅스 종류 확인, 리눅스 버전 확인 - 제타위키

$ cat /etc/*-release | uniq
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
NAME="Ubuntu"
VERSION="14.04.3 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.3 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

리눅스 비트 확인

출처 : 리눅스 32비트 64비트 확인 - 제타위키

$ getconf LONG_BIT
64

관련패키지 설치

$ sudo apt-get update
$ sudo apt-get install gcc g++ libncurses5-dev libxml2-dev openssl libssl-dev curl libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev libsasl2-dev autoconf libncurses5-dev

MySQL 계정 만들기

$ sudo groupadd mysql
$ sudo useradd -g mysql -s /bin/bash -m mysql

cmake 설치

$ sudo apt-get install cmake

MySQL 소스 다운로드, 압축해제, 컴파일, 설치

$ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.23.tar.gz
$ tar xvf mysql-boost-5.7.23.tar.gz
$ cd mysql-5.7.23
$ sudo cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 \
-DMYSQL_DATADIR=/usr/local/mysql57/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql57/mysql.sock \
-DSYSCONFDIR=/usr/local/mysql57 \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_USER=mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DDOWNLOAD_BOOST=0 -DWITH_BOOST=./boost
$ sudo make
$ sudo make install

환경설정

$ sudo vi /usr/local/mysql57/my.cnf

[mysqld]
# port=3306
# basedir=/usr/local/mysql57
# datadir=/usr/local/mysql57/data
# pid-file=/usr/local/mysql57/mysqld.pid
# log_error=/usr/local/mysql57/mysql_error.log
# lc-messages-dir=/usr/local/mysql57/share

init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8
character-set-server=utf8
collation-server=utf8_general_ci
# table_cache=1024
max_connections=2048
max_user_connections=500
max_connect_errors=10000
wait_timeout=300
query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 5M
slow_query_log
long_query_time=3
max_allowed_packet=16M
sort_buffer_size = 2M
# skip-innodb
skip-name-resolve
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

[mysql]
default-character-set=utf8

[client]
default-character-set=utf8

MySQL 설치 디렉토리 mysql 계정으로 권한 수정

$ sudo chown -R mysql:mysql /usr/local/mysql57

MySQL 데이터베이스 초기화 (mysql 계정으로 실행)

$ cd /usr/local/mysql57
$ bin/mysql_install_db --no-defaults --user=mysql --datadir=/usr/local/mysql57/data --basedir=/usr/local/mysql57 -v
2018-10-03 15:26:47 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2018-10-03 15:26:47 [NOTE]    Creating data directory /usr/local/mysql57/data
2018-10-03 15:26:47 [NOTE]    Generating random password to /home/mysql/.mysql_secret...done.
2018-10-03 15:26:47 [NOTE]    Executing /usr/local/mysql57/bin/mysqld --no-defaults --bootstrap --datadir=/usr/local/mysql57/data --lc-messages-dir=/usr/local/mysql57/share --lc-messages=en_US --basedir=/usr/local/mysql57
2018-10-03 15:26:48 [NOTE]    Creating system tables...done.
2018-10-03 15:26:48 [NOTE]    Filling system tables with data...done.
2018-10-03 15:26:49 [NOTE]    Filling help table with data...done.
2018-10-03 15:26:49 [NOTE]    Creating user for internal session service...done.
2018-10-03 15:26:49 [NOTE]    Creating default user root@localhost
2018-10-03 15:26:49 [NOTE]    Creating default proxy root@localhost
2018-10-03 15:26:49 [NOTE]    Creating sys schema
2018-10-03 15:26:49 [NOTE]    done.
2018-10-03 15:26:51 [WARNING] The bootstrap log isn't empty:
2018-10-03 15:26:51 [WARNING] 2018-10-03T06:26:47.586650Z 0 [Warning] --bootstrap is deprecated. Please consider using --initialize instead

2018-10-03 15:26:51 [NOTE]    Generating SSL Certificates

MySQL 서비스 등록

서비스 mysqld 파일 복사

$ sudo cp /usr/local/mysql57/support-files/mysql.server /etc/init.d/mysqld57

mysqld 수정

$ sudo vi /etc/init.d/mysqld57

mysqld파일을 열어서 basedir에 mysql이 설치된 디렉토리와 데이터 디렉토리(datadir)를 설정한다.

basedir=/usr/local/mysql57
datadir=/usr/local/mysql57/data

mysqld 서비스 등록

$ sudo update-rc.d mysqld57 defaults

mysqld 서비스 실행

$ sudo systemctl start mysqld57.service
$ sudo systemctl status mysqld57.service
● mysqld57.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/init.d/mysqld57; generated)
   Active: active (running) since Wed 2018-10-03 15:37:07 KST; 6min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1042 ExecStart=/etc/init.d/mysqld57 start (code=exited, status=0/SUCCESS)
    Tasks: 28 (limit: 4915)
   CGroup: /system.slice/mysqld57.service
           ├─1071 /bin/sh /usr/local/mysql57/bin/mysqld_safe --datadir=/usr/local/mysql57/data --pid-file=/usr/local/mysql57/data/bluesa
           └─1469 /usr/local/mysql57/bin/mysqld --basedir=/usr/local/mysql57 --datadir=/usr/local/mysql57/data --plugin-dir=/usr/local/m

10월 03 15:37:06 bluesanta-ubuntu systemd[1]: Starting LSB: start and stop MySQL...
10월 03 15:37:06 bluesanta-ubuntu mysqld57[1042]: Starting MySQL
10월 03 15:37:07 bluesanta-ubuntu mysqld57[1042]: . *
10월 03 15:37:07 bluesanta-ubuntu systemd[1]: Started LSB: start and stop MySQL.
$ sudo systemctl stop mysqld57.service

root 암호 초기화

$ bin/mysqld_safe --skip-grant-tables &
[1] 21756
mysql@bluesanta-ubuntu:/usr/local/mysql57$ 2018-10-03T06:32:29.844112Z mysqld_safe Logging to '/usr/local/mysql57/data/bluesanta-ubuntu.err'.
2018-10-03T06:32:29.873395Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql57/data

mysql@bluesanta-ubuntu:/usr/local/mysql57$ bin/mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.23-log Source distribution

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update user set authentication_string = password('sqldba') where user = 'root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye

ERROR 1820 (HY000) 오류 해결

mysql> select 1;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> SET PASSWORD = PASSWORD('sql');
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql$gt; select 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)

mysql>

사용자 추가

mysql> create user 'user1'@'%' identified by 'userpw';
mysql> grant all privileges on *.* to 'user1'@'%' with grant option;
mysql> flush privileges;

사용자 추가

create user 'terecal'@'%' identified by '****';
GRANT ALL privileges ON terecal_db.* TO 'terecal'@'%';
flush privileges;