IT관련 지식들 2020. 4. 24. 17:11

먼저 Visual Studio Code를 다운받아 설치한다.

 

이후 파이썬을 사용하기 위해서 아래 블로그를 참조했다.

 

https://evols-atirev.tistory.com/31

 

Visual Studio Code Python 사용법

Visual Studio Code 상에서 파이썬 코드를 실행시키고 디버깅하는 방법에 대한 글이다. 우선 파이썬과 Vscode를 설치해준다. Vscode의 설치는 https://evols-atirev.tistory.com/4를 참고해서 설치해준다. Python..

evols-atirev.tistory.com

1. Visual Stdio Code 실행

 

2. open folder선택. 작업을 진행할 폴더를 선택한다.

3. 작업을 진행할 폴더에 새로 파일을 입력한다. (여기서는 helloWorld.py)

- 만약, Visual Studio Code에 Python이 설치되거나 연결되지 않았으면 설치하라는 메시지가 나온다.

- 안내 메시지에 따라 설치하면 된다.

4. 디버깅을 위해 run(F5)를 동작한다.

- launch.json파일을 자동으로 생성해준다.

- 위에 링크된 블로그에서 미리 작성한 코드가 있어 "작업폴더\.vscode"에 task.json과 setting.json 파일을 복사해 넣었다.

4-1. tasks.json

-아래와 같이 작성한다.

{

    // See https://go.microsoft.com/fwlink/?LinkId=733558

    // for the documentation about the tasks.json format

    "version""2.0.0",

    "tasks": [

        {

            "label""python3",

            "type""shell",

            "command":"python",

            "args":["${file}"],

            "group":{

                "kind":"build",

                "isDefault":true

            },

            "presentation":{

                "echo":true,

                "reveal":"always",

                "focus":false,

                "panel":"shared",

                "showReuseMessage":true,

                "clear":true

            }

        }

    ]

}

4-2. setting.json

- 파이썬 실행파일이 설치된 위치를 찾아서 넣어준다.

{

    "python.pythonPath""E:\\Microsoft Visual Studio\\Shared\\Python37_64\\python.exe"

}

 

5. run(F5)를 다시 동작한다.

- Debug Configuration으로 Python File을 선택한다.

- 밑에 콘솔창에서 결과를 볼 수 있다.

posted by 동글동글82
:
IT관련 지식들 2019. 11. 21. 14:42

git push를 하다가 같은 에러가 계속나서 찾아봤다.

 

git.exe push --progress "origin" master:master 
Enumerating objects: 366, done. 
Counting objects: 100% (366/366), done. 
Delta compression using up to 8 threads 
Compressing objects: 100% (361/361), done. 
Writing objects: 100% (364/364), 1.82 MiB | 7.53 MiB/s, done. 
Total 364 (delta 223), reused 0 (delta 0) 
remote: error: Cannot update the ref 'refs/heads/master': unable to append to logs/refs/heads/master: 허가 거부 
To 221.132.85.22:/home/npdgit/gitrepository/emulatorServer 
! [remote rejected] master -> master (failed to update ref) 
error: failed to push some refs to 'khkwon@221.132.85.22:/home/npdgit/gitrepository/emulatorServer' 

git did not exit cleanly (exit code 1) 
에러가 발생했습니다!! (4109 ms @ 2019-11-21 오후 1:35:38)

인터넷에 있는 많은 방법을 사용했지만 해결되지 않았고, 다시 읽어보니 보인 문장이 "허가 거부".

 

다른 사람이 쓰도록 테스트하던 도중 첫 update를 내가 해서 master파일이 내 이름으로 생성된 것이였다.

 

chown 명령어로 권한을 변경해주니 정상동작한다.

posted by 동글동글82
:
IT관련 지식들 2019. 9. 27. 11:00

C/C++로 제작한 모듈을 java에서 불러 쓸 일이 생겨서 어떻게 해야하는지 정리했다.

만약, 불러올 수 있는 동적라이브러리가 있다면 2~5를 생략해도 된다. 단, 메서드 혹은 API를 알고 있어야한다.

 

1. HelloJni.java 파일 생성

  - 라이브러리를 load하는 클래스

class HelloJni{
static { System.loadLibrary("hellojni");}
  native void printHello();
  native void addintiger(int var1, int var2);
  native int sumIntiger(int[] intData);
  native byte sumByte(byte[] byteData);
  native void printString(String str);
  native void getByteData(byte[] getByte);
  native int setByteArray(byte[] ptData);
  native byte[] makeByteArray(int len);
  native byte[] makeNsetBArray(int len);
}

 

2. java컴파일 HelloJni.class 파일 생성

$javac HelloJni.java

==> HelloJni.class파일 생성.

 

3. HelloJni.h C/C++ 헤더파일 생성.

$javah -jni HelloJni

==> HelloJni.h 파일 생성. 자동으로 만들어지니 참고만 할 것.

/* DO NOT EDIT THIS FILE - it is machine generated */
#include 
/* Header for class HelloJni */
#ifndef _Included_HelloJni
#define _Included_HelloJni
#ifdef __cplusplus
extern "C" {
#endif
/* * Class:     HelloJni * Method:    printHello * Signature: ()V */
JNIEXPORT void JNICALL Java_HelloJni_printHello  (JNIEnv *, jobject);
/* * Class:     HelloJni * Method:    addintiger * Signature: (II)V */
JNIEXPORT void JNICALL Java_HelloJni_addintiger  (JNIEnv *, jobject, jint, jint);
/* * Class:     HelloJni * Method:    sumIntiger * Signature: ([I)I */
JNIEXPORT jint JNICALL Java_HelloJni_sumIntiger  (JNIEnv *, jobject, jintArray);
/* * Class:     HelloJni * Method:    sumByte * Signature: ([B)B */
JNIEXPORT jbyte JNICALL Java_HelloJni_sumByte  (JNIEnv *, jobject, jbyteArray);
/* * Class:     HelloJni * Method:    printString * Signature: (Ljava/lang/String;)V */
JNIEXPORT void JNICALL Java_HelloJni_printString  (JNIEnv *, jobject, jstring);
/* * Class:     HelloJni * Method:    getByteData * Signature: ([B)V */
JNIEXPORT void JNICALL Java_HelloJni_getByteData  (JNIEnv *, jobject, jbyteArray);
/* * Class:     HelloJni * Method:    setByteArray * Signature: ([B)I */
JNIEXPORT jint JNICALL Java_HelloJni_setByteArray  (JNIEnv *, jobject, jbyteArray);
/* * Class:     HelloJni * Method:    makeByteArray * Signature: (I)[B */
JNIEXPORT jbyteArray JNICALL Java_HelloJni_makeByteArray  (JNIEnv *, jobject, jint);
/* * Class:     HelloJni * Method:    makeNsetBArray * Signature: (I)[B */
JNIEXPORT jbyteArray JNICALL Java_HelloJni_makeNsetBArray  (JNIEnv *, jobject, jint);
#ifdef __cplusplus
}
#endif
#endif

 

  3.1 Class를 찾을 수 없다고 나올 때.

    - classpath를 설정하라는 조언과 package의 전체 이름을 입력하라는 조언 둘다 안됨.

 

 

    - src 폴더로 내려가서 package이름으로 실행하니 성공.

  3.2 헤더를 생성하는 경로에 따라 함수이름이 달라짐.

 

4. 생성된 헤더파일에 맞춰 C/C++ 파일 생성.

==> 헤더파일의 메서드/API만 복사하여 내용을 채워넣음.

==> Falinux 포럼의 JNI 배열관련 글을 참고.

http://forum.falinux.com/zbxe/index.php?document_srl=570993&mid=lecture_tip

#include "HelloJni.h"

#include <stdio.h>
#include <jni.h>
#include <stdlib.h>
#ifdef __cplusplus
extern "C" {
#endif

JNIEXPORT void JNICALL Java_HelloJni_printHello(JNIEnv *env, jobject jobj)

{  printf("Test Jni process\n"); }

JNIEXPORT void JNICALL Java_HelloJni_addintiger(JNIEnv *env, jobject jobj, jint var1, jint var2)
{ printf("%d + %d = %d\n",var1,var2,var1+var2); }

JNIEXPORT jint JNICALL Java_HelloJni_sumIntiger(JNIEnv *env, jobject jobj, jintArray intData)
{
  jint *intBuf;
  int size;
  int sum, i;
  size = env->GetArrayLength(intData);
  intBuf = env->GetIntArrayElements(intData, NULL);
  sum = 0;
  for(i=0 ; i < size ; i++){
    sum += intBuf[i]*10;
    printf("array[%d] = %d, sum = %d\n",i,intBuf[i],sum);
  }
  env->ReleaseIntArrayElements(intData, intBuf, 0);
  return sum; 
}

JNIEXPORT jbyte JNICALL Java_HelloJni_sumByte(JNIEnv *env, jobject jobj, jbyteArray byteData)
{
  jbyte *byteBuf;
  int size, i;
  char sum;
  size = env->GetArrayLength(byteData);
  byteBuf = env->GetByteArrayElements(byteData, NULL);
  sum = 0;
  for(i=0 ; i < size ; i++){
    sum += byteBuf[i];
    printf("array[%d] = %d, sum = %d\n",i,byteBuf[i],sum);
  }
  env->ReleaseByteArrayElements(byteData, byteBuf, 0);
  return sum;
}

JNIEXPORT void JNICALL Java_HelloJni_printString(JNIEnv *env, jobject jobj, jstring jstr)
{
  const char *str = env->GetStringUTFChars(jstr,NULL);
  printf("String is[%s]\n",str);
  env->ReleaseStringUTFChars(jstr,str);
}

JNIEXPORT void JNICALL Java_HelloJni_getByteData(JNIEnv *env, jobject jobj, jbyteArray byteData)
{
  jbyte *byteBuf;
  int size, i;
  size = env->GetArrayLength(byteData);
  byteBuf = env->GetByteArrayElements(byteData, NULL);
  for(i=0 ; i < size ; i++){
    byteBuf[i] = i*2;
  }
  env->SetByteArrayRegion(byteData, 0, 10, (const jbyte *)byteBuf);
  env->ReleaseByteArrayElements(byteData, byteBuf, 0);
}

JNIEXPORT jint JNICALL Java_HelloJni_setByteArray(JNIEnv *env, jobject jobj, jbyteArray byteData)
{
  jint mallocSize;
  jbyte *byteBuf;
  int i;

  mallocSize = 20;

  byteBuf = env->GetByteArrayElements(byteData, NULL);
  for(i=0 ; i < mallocSize ; i++){
   byteBuf[i] = i*3;
  }
  env->SetByteArrayRegion(byteData, 0, mallocSize, (const jbyte *)byteBuf);
  return mallocSize;
}

JNIEXPORT jbyteArray JNICALL Java_HelloJni_makeByteArray(JNIEnv *env, jobject jobj, jint len)
{
  jbyteArray bytePt = NULL;
  jbyte *byteBuf;
  int i;

  bytePt = env->NewByteArray(len);

  if(bytePt != NULL){
    printf("make new byte array\n");
    return bytePt;
  }
  else{
    printf("make fail\n");
    return NULL;
  }
}

JNIEXPORT jbyteArray JNICALL Java_HelloJni_makeNsetBArray(JNIEnv *env, jobject jobj, jint len)
{
  jbyteArray bytePt = NULL;
  jbyte *byteBuf;
  int i;

  bytePt = env->NewByteArray(len);

  if(bytePt != NULL){
    printf("make new byte array\n");

    byteBuf = (jbyte *)malloc(sizeof(jbyte)*len);
    for(i=0 ; i < len ; i++){
      byteBuf[i] = i*4;
    }
    env->SetByteArrayRegion(bytePt, 0 , len, (const jbyte *)byteBuf);
    free(byteBuf);
    return bytePt;
  }
  else{
    printf("make fail\n");
    return NULL;
  }
}

#ifdef __cplusplus
}
#endif

 

5. 라이브러리 생성.

5-1. linux 64bits

$gcc -m64 -fPIC -shared -o libhellojni.so HelloJni.cpp -I/usr/lib/java/jdk/include -I/usr/lib/java/jdk/include/linux

 

5-2. linux 32bits

$gcc -m32 -shared -o libhellojni.so HelloJni.cpp -I/usr/lib/java/jdk/include -I/usr/lib/java/jdk/include/linux

 

5-3. 라즈베리파이등 (coretex-arm)

==> 크로스컴파일러가 없다면 "apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf"

$arm-linux-gnueabihf-g++ -fPIC -shared -o libhellojni.so HelloJni.cpp -I/usr/lib/java/jdk/include -I/usr/lib/java/jdk/include/linux

$readelf -hA libhellojni.so

Tag_CPU_arch: v7

 

5-4. arm코어가 다른 보드.

==> 크로스컴파일러가 없다면 "apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi"
$arm-linux-gnueabi-g++ -shared -o libhellojni.so HelloJni.cpp -I/usr/lib/java/jdk/include -I/usr/lib/java/jdk/include/linux
$readelf -hA libhellojni.so
Tag_CPU_arch: v5T

 

6. 동적라이브러리 복사.

$sudo cp libhellojni.so /usr/lib/

6-1. 동적라이브러리 파일 복사를 안하려면, 동적라이브러리 PATH를 설정하는 방법도 있다. 아래 파일의 제일 밑에 LD_LIBRARY_PATH를 추가해서 잘되긴 했는데, 타겟보드에서는 실패했다.

$vi /etc/profile

export LD_LIBRARY_PATH=/home/user_name/mylib:${LD_LIBRARY_PATH}

 

posted by 동글동글82
:
IT관련 지식들 2019. 8. 6. 11:48

자바 컴파일러(javac)

- 자바 코드를 실행시킬 수 있는 프로그램으로 변경.

자바 런처(java)

- JVM(Java Virtual Machine)을 통해 컴파일된 프로그램을 실행.

자바 바이트코드(Java Bytecode)

- 자바 컴파일러에 의해서 생성되는 코드. 명령어의 크기가 1Byte이기 때문에 붙여진 이름.

자바 버추얼 머신

- 각 OS에서 자바를 실행시키기 위해서 설치한 소프트웨어

클래스

- 객체를 생성하기 위한 '틀'

- 변수와 메소드를 가지고 있음.

메소드

- c언어에서 함수와 같은 뜻.

변수

- 데이터의 저장과 참조를 위해 할당된 메모리 공간

선언(declaration)

- 컴파일러에게 무엇인가를 알리는 행위

MSB(Most Significant Bit)

LSB(Least Significant Bit)

- MSB First, LSB First까지 붙여서 사용한다. 메모리에 저장할 때, 어떤 비트부터 저장하는지에 대한 정의.

char형 변수

- 유니코드 저장을 위해 1~2bytes가 가변적으로 할당됨.

상수( = literal)

- 메모리에 값이 저장되지만, 저장된 값의 변경은 불가능.

자료형의 변환

- 연산을 위해 더 넓은 자료형으로 자동 형 변환(Implicit Conversion)이 일어남.

- byte->short->int->long->float->double

Short-Circuit Evaluation(SCE)

- 가장 빠르게 연산을 진행하기 위한 계산방식

final

- c언어에서 const와 비슷한 뜻으로 딱 한번 초기화를 할 수 있는 변수. 변수타입 앞에 선언.

인스턴스(instance)

- new명령어로 생성된 객체

생성자(Constructor)

- 인스턴스가 생성될 때, 초기화를 같이 진행하는 메소드

 

'IT관련 지식들' 카테고리의 다른 글

git push에러 :: git did not exit cleanly (exit code 1)  (0) 2019.11.21
JNI 사용법 정리  (0) 2019.09.27
젠킨스(Jenkins) 사용목적  (0) 2019.08.02
우분투 ftp서버 계정제한  (0) 2019.05.28
우분투 VNC server 설치  (0) 2019.01.22
posted by 동글동글82
:
IT관련 지식들 2019. 8. 2. 12:45

형상관리를 위해서 젠킨스를 사용하겠다는 생각만 가지고 이것 저것 파보다가 문득 깨달음을 얻었다.

 

젠킨스를 왜 사용하지?

 

중학생때 형이 리눅스를 한다고 해서 PC잡지에 따라온 빨간모자를 쓴 빨간정장 아저씨가 그려진 씨디(RedHat)를 넣고 리눅스를 설치한 적이 있다. 별로 어렵지 않게 설치를 하고 나온 결론은... 이걸로 뭘하지?

 

마찬가지로 젠킨스를 설치하고 인터넷을 찾아가며 new job을 설정하면서 든 결론은 이걸로 뭘할지 확실히 알아야겠다는 생각이다.

 

젠킨스는 아래 세가지 기능을 수행하는 것으로 추측된다.

 

1. 자동 빌드

2. 자동 배포

3. 테스트

 

추후에 공부를 하면서 하나한 알게되면 자세한 내용을 추가하거나 링크를 붙이겠다.

'IT관련 지식들' 카테고리의 다른 글

JNI 사용법 정리  (0) 2019.09.27
JAVA의 기본언어 정리  (0) 2019.08.06
우분투 ftp서버 계정제한  (0) 2019.05.28
우분투 VNC server 설치  (0) 2019.01.22
젠킨스 설치와 구성 (Jenkins setup)  (0) 2019.01.03
posted by 동글동글82
:
IT관련 지식들 2019. 5. 28. 21:04

개인적으로 사용하는 서버를 다른 사람과 공유할 일이 생겼다.

ftp계정은 열어주되 다른 폴더와 파일을 건드리지 못하게 하는 방법을 찾아봤다. 너무 복잡하게 생각하지 말고 아주 단순하게 생각하면 가능한 일이다.

 

1. vsftpd 설치

  - sudo apt-get install vsftpd

 

2. 외부에 공개할 개정 생성

  - sudo adduser kkk

 

2.1 암호 설정

  - sudo passwd kkk

  >> 암호 입력

 

3. 외부에 공개할 폴더 생성

  - sudo mkdir /data

 

3.1 폴더 권한 변경

  - sudo chown kkk /data

 

3.2 새로 생성한 계정의 홈디렉토리 변경

  - sudo vim /etc/passwd

    - kkk:x:1012:1012::/home/kkk:/bin/bash

    ==> kkk:x:1012:1012::/data:/bin/bash 

      - 만약 마지막에 /bin/bash가 없을 경우 추가해야 나중에 문제되지 않음.

 

4. ftp 설정 변경

  - sudo vim /etc/vsftpd.conf

    - 기본 파일을 복사해 놓으면 원상복구하기 좋다.

    - sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

      - 쓰기 허가. 

        - #write_enable=YES              ==>  write_enable=YES

        - allow_writeable_chroot=YES   ==> 없으면 추가.

      - 홈폴더가 최상위폴더가 되도록 수정.

        - #chroot_local_user=YES        ==> chroot_local_user=YES

 

5. ssh 제한

  - sudo vim /etc/ssh/sshd_config

    - 접속 계정만 설정.

      - 파일 마지막에 다음 문구 추가

        - AllowUsers aaa bbb ccc ddd

 

즉, ftp계정을 하나 추가해서 접속할 수 있게 하되, ssh로는 접속이 안되도록 수정한다.

posted by 동글동글82
:
IT관련 지식들 2019. 1. 22. 15:54

 서버에 X윈도우로 접근해서 UI텍스트 편집기를 사용하려는 꿈에서 VNC 서버 설치를 시작했다.


1. 설치

인터넷을 찾아보니 패키지 설치부터.


$sudo apt-get install gnome-settings-daemon gnome-terminal metacity nautilus

$sudo apt-get install gnome-panel vnc4server


2. 실행 - 암호 설정
계정으로 실행해보면 password 설정을 묻는다.


$vnc4server

... 중략 ...

password:

verify:

... 하략 ...


계정마다 서버에 대한 설정을 따로 진행하기 때문에 내가 사용하는 계정으로 한번 실행해야 한다.


3. 실행환경 설정

실행 환경을 설정한다. 이때 계정마다 설정을 다르게 하기 때문에 sudo 명령어가 필요없다.


$ vnc4server -kill :1

$ cp ~/.vnc/xstartup ~/.vnc/xstartup.old

$ vim ~/.vnc/xstartup


아래 내용으로 변경한다.

#!/bin/sh


# Uncomment the following two lines for normal desktop:


export XKL_XMODMAP_DISABLE=1

unset SESSION_MANAGER

unset DBUS_SESSION_BUS_ADDRESS


[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

xsetroot -solid grey

vncconfig -iconic &


gnome-panel &

gnome-settings-daemon &

metacity &

nautilus &

gnome-terminal &

# 만약 다른 곳에서 연결하는데 화면이 나오지 않으면 추가한다.

# /usr/bin/gnome-session --session=2d-gnome &


x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &

x-window-manager &



4. 자동실행 설정


$ sudo nano /etc/init.d/vncserver

아래 내용을 복사하여 붙여넣는다.

#!/bin/bash

### BEGIN INIT INFO

# Provides:          vncserver

# Required-Start:    networking

# Required-Stop:     networking

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

### END INIT INFO


PATH=$PATH:/usr/bin/

export USER=사용자 계정


DISPLAY="1"

DEPTH="16"

GEOMETRY="1600x900"


OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"


. /lib/lsb/init-functions


case $1 in

start)

log_action_begin_msg "Starting vncserver for user ${USER} on localhost:${DISPLAY}"

echo "su ${USER} -c /usr/bin/vncserver ${OPTIONS}"

su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"

;;


stop)

log_action_begin_msg "Stoping vncserver for user ${USER} on localhost:${DISPLAY}"

echo "su ${USER} -c /usr/bin/vnc4server -kill :${DISPLAY}"

su ${USER} -c "/usr/bin/vnc4server -kill:${DISPLAY}"

;;


restart)

$0 stop

$0 start

;;


*)

echo "Usage:/etc/init.d/nvcserver {start|stop|restart}"
;;
esac

exit 0

쉘스트립트의 사용법을 잘 몰라서 ""때문에 고생을 많이 했다. 다른 사이트의 참고자료를 복사할 때도 주의해서 복사하자.



$ sudo chmod +x /etc/init.d/vncserver

$ sudo update-rc.d vncserver defaults


쉘스트립트가 잘 동작하는 확인하기 위해서 다음과 같이 명령어를 실행시켜보면 좋다.


$ sudo /etc/init.d/vncserver start

 * “Starting vncserver for user ‘kangmin’ on localhost:1”...                    su kangmin -c '/usr/bin/vncserver -depth 16 -geometry 1280x720 :1'

A VNC server is already running as :1

$ sudo /etc/init.d/vncserver stop

 * “Stoping vncserver for user ‘kangmin’ on localhost:1”...                     su kangmin -c '/usr/bin/vnc4server -kill:1'


New 'Megatong00:11 (kangmin)' desktop is Megatong00:11


Starting applications specified in /home/kangmin/.vnc/xstartup

Log file is /home/kangmin/.vnc/Megatong00:11.log


vnc를 설정 해지하려면

$ sudo update-rc.d vncserver remove


posted by 동글동글82
:
IT관련 지식들 2019. 1. 3. 18:02

1. 젠킨스 설치

>> sudo apt-get install jenkins 

==>젠킨스를 설치하는 도중에 에러 발생

***********************************************************************************************

에러 메시지


jenkins (2.156) 설정하는 중입니다 ...

Found an incorrect Java version  <<<<<==== 아마도 자바 버전 문제로 판단 됨

Java version found:

java version "1.7.0_181"

OpenJDK Runtime Environment (IcedTea 2.6.14) (7u181-2.6.14-0ubuntu0.3)

OpenJDK Server VM (build 24.181-b01, mixed mode)


Aborting

invoke-rc.d: initscript jenkins, action "start" failed.

dpkg: error processing package jenkins (--configure):

 설치한 post-installation 스크립트 하위 프로세스가 오류 1번을 리턴했습니다

Processing triggers for ureadahead (0.100.0-16) ...

처리하는데 오류가 발생했습니다:

 jenkins

E: Sub-process /usr/bin/dpkg returned an error code (1)

>>


*자바 설치 (현재 1.7버전이 있으니 1.8버전으로 설치)

>> sudo apt-get remove  openjdk-7-jdk  openjdk-7-jre openjdk-7-jre-headless


>> sudp apt-get install openjdk-8-

패키지가 없으니 패키지 서버를 추가하고 다시 설치

>> sudo add-apt-repository ppa:webupd8team/java

>> sudo apt-get update

>> sudo apt-get install oracle-java8-installer

>> java -version

>> javac -version

설치 확인

***********************************************************************************************

설치 재시도.

>> sudo apt-get install jenkins



2. nginx 설치

>> sudo apt-get install nginx


젠킨스 JVM용 리버스 프록시로 동작하도록 nginx의 설정 수정.

>> sudo vim /etc/nginx/sites-enabled/default


아래 내용 추가

server {

        listen 80;

        server_name jenkins.domain.com;

        return 301 http://$host$request_uri;

        }


server {

        listen 80;

        server_name jenkinks.domain.com;


        location / {

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $Proxy_add_x_forwared_for;

        proxy_set_header X-Forwarded-Proto $scheme;


        #"역방향 프록시 설정이 잘못된 것으로 파악되었습니다(It appears that your rewerse proxy set up is broken)"라는 # 에러의 발생을 방지한다.

        proxy_pass      http://127.0.0.1:8080;

        proxy_read_timeout 90;


        proxy_redirect  http://127.0.0.1:8080 https://jenkins.domain.com;

        }

}


nginx 다시 시작
>> sudo service nginx restart

접속확인
http://192.168.XXX.XXX

포트가 문제인가해서 다시 http://192.168.XXX.XXX:80 으로 접속해도 에러


/etc/default/jenkins 파일 확인 중 port 8080을 확인


그래서 8080포트로 접속


암호입력 후 다음화면


왼쪽 유용한 플러그인을 설치



설치 완료 후 관리자 계정 생성



포트 설정


젠킨스 시작




로그인 화면


admin user 를 입력하면 다음 화면으로 이동




젠킨스 스냅샷 백업



설치 중




완료 후 재시작.

posted by 동글동글82
:
IT관련 지식들 2018. 4. 3. 13:17

1. ftp서버 설치

>> sudo apt-get install vsftpd


2. 서버 설정.


#--- inetd 모드가 아닌 독립 모드로 vsftp 실행

listen=YES

#--- FTP를 위한 Listen Port를 지정 한다.

listen_port=50021

...

# Allow anonymous FTP? (Disabled by default)

anonymous_enable=NO

...

#

# Uncomment this to allow local users to log in.

local_enable=YES

#

# Uncomment this to enable any form of FTP write command.

write_enable=YES

#

# Default umask for local users is 077. You may wish to change this to 022,

# if your users expect that (022 is used by most other ftpd's)

local_umask=777

#

# Uncomment this if you want the anonymous FTP user to be able to create

# new directories.

anon_mkdir_write_enable=YES

#

#

# Make sure PORT transfer connections originate from port 20 (ftp-data).

#connect_from_port_20=YES

connect_from_port_20=NO

#

# You may override where the log file goes if you like. The default is shown

# below.

xferlog_file=/var/log/vsftpd.log

#


#kangmin_add

#--- 데이터 전송을 위해서 Active Mode를 사용도록 설정 한다.

#--- Active Mode에서 FTP 데이터 전송을 위한 디폴트 포트는 20 port 이다.

port_enable=YES

#--- 데이터 전송을 위해서 Passive Mode를 사용하지 못하도록 한다.

pasv_enable=YES

# // 외부 IP주소를 passive 연결에 사용.

pasv_address=XXX.XXX.XXX.XXX     


#---  20번 포트의 데이터전송 연결을 허용 한다.

connect_from_port_20=YES

#--- Active Mode에서 사용할 FTP-Data 포트를 강제로 50020 port로 변경 한다.

ftp_data_port=50020


#--- Passive Mode에서 사용할 FTP-Data 포트를 강제로

#--- 50031 port에서 50040 port까지 허용 한다.

pasv_min_port=50031

pasv_max_port=50040


3. 공유기 설정

- 포트포워딩에 포트 주소를 추가.




'IT관련 지식들' 카테고리의 다른 글

우분투 VNC server 설치  (0) 2019.01.22
젠킨스 설치와 구성 (Jenkins setup)  (0) 2019.01.03
버추얼박스 USBtoSerial 연결  (0) 2017.06.09
우분투에서 libusb 사용 시작하기.  (1) 2017.03.08
우분투 계정 관리  (0) 2017.02.23
posted by 동글동글82
:
IT관련 지식들 2017. 6. 9. 12:56

버추얼박스에서 USB to Serial을 연결하기 위해서는 아래 작업이 필요하다.


1. H/W 연결


2. 버추얼 박스에서 USB 포트 설정.

  - 가상머신과 연결된 USB 포트를 추가 및 설정.



3. 버추얼박스에서 USB 장치 선택.


posted by 동글동글82
: