무료 SSL 인증서로 letsencrypt는 정말 유용합니다.

다만 3개월마다 갱신해줘야한다는게 불편하긴하지만, 이것도 cron걸어두면 괜찮죠..

 

cron에서 걸어둘 인증서 자동 관리기인 certbot에서 renew가 명령어가 안될때..

 

다음과 같이 conf파일에 사용할 수없는 문자가 입력되어 오류가 날 수 있습니다. (다른 이유가 있을 수도 있으니, 오류 메시지를 잘 확인하도록 합니다.)

grep -r -P '[^\x00-\x7f]' /etc/nginx /etc/letsencrypt/ 해서 어느파일에서 00 ~7f 문자가 사용되었는지 확인합니다.

 

nginx에서 gzip 으로 압축하여 전달하지 않을 user-agent문자열 셋팅 부분에 불용문자열이 있네요.

gzip_disable "MSIE [1-6].(?!.*SV1)" 으로 변경하였습니다.

 

이제 SSL 갱신이 잘됩니다.

vmware 15.x 버전을 쓰고 있는데 호스트운영체제(윈도우즈)와 게스트운영체제(CentOS8)의 폴더 공유가 잘 되지 않아 해당 도움말을 찾아보았습니다.

 

docs.vmware.com/en/VMware-Workstation-Pro/15.0/com.vmware.ws.using.doc/GUID-AB5C80FE-9B8A-4899-8186-3DB8201B1758.html

 

위 링크에 도움말이 있고, 각 vmware제품 버전에 맞추어 확인하면됩니다.

 

1.먼저 VM Setting에 공유폴더를 설정합니다.

2. 게스트 OS에서 아래와 같이 마운트를 시킵니다.

잘 되네요~

 

아래는 사이트에 있는 설명입니다.

 

After you enable a shared folder, you can mount one or more directories or subdirectories in the shared folder to any location in the file system in addition to the default location of /mnt/hgfs.

Depending on the kernel version of the Linux guest operating system, VMware Tools uses different components to provide shared-folder functionality. In Linux kernels prior to version 4.0, the VMware Tools services script loads a driver that performs the mount. Linux kernels 4.0 and later use a FUSE file system component.

You can use different mount commands to mount all shares, one share, or a subdirectory within a share to any location in the file system. The commands also vary depending on the Linux-kernel version of the guest.

Mount Command SyntaxLinux Kernel Prior to 4.0Linux Kernel 4.0 and LaterDescription

mount -t vmhgfs .host:/ /home/user1/shares /usr/bin/vmhgfs-fuse .host:/ /home/user1/shares -o subtype=vmhgfs-fuse,allow_other Mounts all shares to /home/user1/shares
mount -t vmhgfs .host:/foo /tmp/foo /usr/bin/vmhgfs-fuse .host:/foo /tmp/foo -o subtype=vmhgfs-fuse,allow_other Mounts the share named foo to /tmp/foo
mount -t vmhgfs .host:/foo/bar /var/lib/bar /usr/bin/vmhgfs-fuse .host:/foo/bar /var/lib/bar -o subtype=vmhgfs-fuse,allow_other Mounts the subdirectory bar within the share foo to /var/lib/bar

For Linux kernel prior to version 4.0, you can use VMware-specific options in addition to the standard mount syntax. Enter the command /sbin/mount.vmhgfs -h to list the options.

For Linux kernel version 4.0 or later, enter the command /usr/bin/vmhgfs-fuse -h to list the available options.

rust 및 cargo 설치  후, cargo install wasm-pack 으로 wasm 개발팩을 설치하게 되는데 GCC관련 오류가 납니다.

 

 

윈도우용 MinGW-W64를 설치해야하고 설치시, Architecture에서 x86_64를 선택해주어야합니다.

MinGW-W64 설치후 bin에 PATH 꼭 걸어두셔야하구요.

C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin

 

 

모두 컴파일 되고 마지막에 아래처럼 오류가 날 수 있습니다.

 

그러면 rustup update 를 해서 rust 환경을 최신으로 업데이트 해야합니다.

 

다시 cargo install wasm-pack 하면 모두 잘 인스톨 되는걸 확인할 수 있습니다.

1. 기본 사항

당연한 이야기지만 FTP서비스와 Management 서비스가 설치되어 있어야 합니다.

2. Management Service에서 IIS Manager credetials가 체크되어 있어야 합니다.

3. FTP 인증에서 IIS ManagerAuth가 설정되어 있어야 합니다.

4. FTP 권한 룰에서는 접속 계정명이 설정되어 있어야 합니다.

Read, Write Permission을 상황에 맞게 적절하게 선택합니다.

 

5.퍼미션 설정 확인

 

#트러블 슈팅 기본

1.로컬 요청에대해서 상세 메시지를 볼 수 있도록 합니다.(기본으로 되어있으나 확인!)

2. 이벤트 로그를 확인합시다.

 

 

대표 해결 사례, # 530 에러 발생시

1.

C:\Windows\System32\inetsrv\Config 에 NETWORK SERVICE 계정에 읽기 권한을 줍니다.

 

2.관리자 권한으로 커맨드 라인을 실행하여 

iisreset /noforce

을 입력해서 iis를 리셋합니다.

 

3.잘 적용이 안되는 경우 서버를 리부팅합니다. (이렇게 해서 해결된적 있네요;;)

 

quartz net 에서는 timestamp값을 0001-01-01 00:00:00 부터 Time Tick (TotalMiliSecond * 100)값을 저장합니다.

오라클에서 Tick값을 그대로 계산해서 보면 2일이 모자라게 나타납니다.

 

아래 쿼리로 확인하면 제대로 보입니다.

 

9/24 시간을 붙힌 이유는 대한민국 Timezone 시간을 덧 붙혀서 계산해야 제대로 보입니다.


select to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS') +
       (
          (LAST_CHECKIN_TIME - 621355968000000000 ) -- (now ticks - UNIX epoch in CLR ticks)
            /10000000 -- CLR ticks per second
        )/60/60/24 + 9/24 -- convert from seconds to days for date addition arithmetic
as date_from_ticks
from QRTZ_SCHEDULER_STATE;

 

 

아래처럼 해도 결과는 동일합니다.

SELECT to_date('0001-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS') +
       (LAST_CHECKIN_TIME / (10000000 * 60 * 60 * 24)) + 2 + (9/24)
as date_from_ticks
from QRTZ_SCHEDULER_STATE;

 

Time Tick값을 DateTime으로 변경

 

참고:

https://stackoverflow.com/questions/20052643/date-math-in-oracle-related-to-net-ticks

quartz에서는 db에 날짜 데이터를 0001년 부터 해서 milisecond 값을 bigint (int64)형태로 저장합니다.

 

mysql에서 직접 쿼리를 통해 이 값을 보기 쉬운 날짜 형태로 보기 위해서는 다소 여러 연산을 거쳐야 확인이 가능합니다.

 

아래 함수로 확인이 가능합니다.

 

 

SELECT CONVERT_TZ( FROM_DAYS(365+(FIRED_TIME / 864000000000))
   + INTERVAL (FIRED_TIME % 864000000000) / 10000000 SECOND , 'GMT', 'Asia/Seoul') AS FIRED  FROM QRTZ_FIRED_TRIGGERS;

 

표준시간대로 저장되기 때문에 정확하게 보려면 현재  TimeZone으로 계산까지 해야 확인이 됩니다.

 

 

참고 #1

https://stackoverflow.com/questions/34695247/mysql-script-to-convert-datetime-ticks-values-to-sql-date/34696553#34696553

 

참고 #2

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_convert-tz

 

윈도우즈용으로 사용할 bcrypt tool을 찾는데 은근 간단한게 안보여서.. 직접 빌드해서 올립니다.

 

npm 에서 받거나, go 를 쓰거나.. 라이브러리 다운받아서 쓰도록 하는데 되게 번거롭더군요..

 

난 단순히 문자열 변환하는 커맨드라인 툴만 필요했을뿐 인데.... !

 

또 자주 사용하는 C#으로 만들려니, 같이 받는 참조파일은 왜 이렇게 많은지...

 

깔끔하게.. win32 x86용으로  visual studio 2019/C++에서 빌드하였습니다.

라이브러리도 static 으로 빌드하여 exe 파일 하나입니다.

 

사용법)

 

bcrypt [암호화할문자열] -- bcrypt로 암호화합니다.

 

bcrypt [암호] [HASH문자열] 을 입력할경우 유효한지 유효하지 않는지 확인해 줍니다.

 

 

잘 되네요.

 

용량 : 30KB

 

bcrypt.zip
0.02MB

VMware 사용시 아래 오류 발생시 처리할 사항에 대해서 정리해둡니다.

 

"VMware Workstation and Device/Credential Guard are not compatible Error"

 

 

콘솔창에서 gpedit.msc 입력. 그룹정책 편집기로 들어갑니다...

 

컴퓨터 구성 > 관리 템플릿 > 시스템 > Device Guard > 가상화 기반 보안켜기 를 사용안함으로 설정합니다.

 

Hyper-V를 꺼라고 안내하는 사이트도 있던데, 나의 경우엔 체크해놔도 동작하는데는 문제 없었고,

 

다만 콘솔창에서 

 

 

bcdedit /set hypervisorlaunchtype off  

 

 

입력 후 재부팅하면 제대로 동작하였습니다.

 

 

 

 

+ Recent posts