아,, ssh 키를 뭔가 건드린거 같다. 

접속이 아예 안되서 뭐 어떻게 할 방법이 없다. 😭


디스크를 볼륨을 떼서 다른 EC2 인스턴스에 붙여서 처리하는 수밖에 없지.

근데 뒤져보니 User Data기능이 있다.

부팅할 때 내가 원하는 명령을 실행시켜준다.




헛!

그렇다면 이걸로 하면 구지 디스크 볼륨 떼었다 붙였다 안해도 되겠군!

User Data에만 내가 원하는 명령어를 세팅하고

EC2 인스턴스를 껐다 켜기만 하면 해결 되겠군


시작 시 Linux 인스턴스에서 명령 실행

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/user-data.html

이거 적으면서 보니 저거 제목 번역이 잘 못 번역되어있다...

(원문: Running Commands on Your Linux Instance at Launch)

아놔 내 삽질한 아까운 시간들...



아무리 해도 안된다.

#cloud-init으로 하거나 #!/bin/bash

안된다. 😭

 

씩씩 거리면 찾아봤다.

https://stackoverflow.com/questions/27086639/user-data-scripts-is-not-running-on-my-custom-ami-but-working-in-standard-amazo

 

.. 저방식은

말그대로 인스턴스 생성하고 정말 처음 기동할 쓰는거다.

 

행히 훜으로 건드리는 방법이 있다.

아래와 같이 하니까 잘된다.


#cloud-boothook 을 가장 위에 적어주니까 된다.


최초 부팅

 

#!/bin/bash

yum install -y gcc

 

 

이후 재부팅

#cloud-boothook

#!/bin/bash

yum install -y patch;

yum install -y zlib;

yum install -y zlib-devel;

yum -y install openssl-devel;

wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.6p1.tar.gz -P /home/ec2-user;

 

이후 재부팅

#cloud-boothook

#!/bin/bash

gunzip /home/ec2-user/openssh-7.6p1.tar.gz

 


아놔.. 어이없는 문제가 하나 더있다.


tar 명령어가 안 먹힌다.

옵션이 문제인가 싶지만 다 안된다. 😭😭


 

#cloud-boothook

#!/bin/bash

/usr/bin/tar -xf /home/ec2-user/openssh-7.6p1.tar

/usr/bin/tar xf /home/ec2-user/openssh-7.6p1.tar

/usr/bin/tar xopf /home/ec2-user/openssh-7.6p1.tar

 

 


어처구니 없게도 tar 명령 실행하기 전에

change directory 해주면 먹힌다.


#cloud-boothook
#!/bin/bash
cd /home/ec2-user
/bin/tar xf /home/ec2-user/nginx-1.12.2.tar

 




사내 JIRA, WIKI 관리하는 서버의 디스크가 꽉차 간다.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      296G  263G   33G  89% /
devtmpfs        3.7G   56K  3.7G   1% /dev

tmpfs 3.7G 0 3.7G 0% /dev/shm




뒤져보니 작년부터 binary log가 쌓여왔다.

$ ls -al /var/lib/mysql/
... 중략 ...
-rw-rw---- 1 mysql mysql 1073772329 Jan  8  2017 mysql-bin.000179
-rw-rw---- 1 mysql mysql 1073766072 Jan 12  2017 mysql-bin.000180
-rw-rw---- 1 mysql mysql 1073750174 Jan 16  2017 mysql-bin.000181
-rw-rw---- 1 mysql mysql 1073750131 Jan 19  2017 mysql-bin.000182
-rw-rw---- 1 mysql mysql 1073778740 Jan 23  2017 mysql-bin.000183
-rw-rw---- 1 mysql mysql 1073785719 Jan 26  2017 mysql-bin.000184
-rw-rw---- 1 mysql mysql 1073742779 Jan 30  2017 mysql-bin.000185
-rw-rw---- 1 mysql mysql 1073754445 Feb  2  2017 mysql-bin.000186
-rw-rw---- 1 mysql mysql 1073779324 Feb  8  2017 mysql-bin.000187
-rw-rw---- 1 mysql mysql 1073757781 Feb 11  2017 mysql-bin.000188
-rw-rw---- 1 mysql mysql 1073764278 Feb 15  2017 mysql-bin.000189
-rw-rw---- 1 mysql mysql 1073742518 Feb 18  2017 mysql-bin.000190
... 중략 ...

 



삭제해야지라고 생각했지만 이런 파일은 생각없이 rm으로 지우면 안되지

뒤져보니 설정 1줄 추가하면 된다. 

저렇게 하면 3일치만 남겨놓고 나머지는 다 지운다.

/etc/my.cnf


[mysqld]

... 중략 ...

 

expire_logs_days=3



이게 서비스 중인데

2017년부터 안 건드렸다면 함부로 mysql 데몬을 restart할 수가 없다.

이 회사에 온지 몇달 안되서 그간 바뀐 설정이 뭐인지도 모르고, 

stop은 되겠지만 start 가 안되면... 괜히 여러사람 피곤해진다.


쫄아서 찾아보니 reload가 있다.

nginx reload하듯이 설정을 다 읽어와주는 것인가!! (결론은 아니었다. 😭)

% cat /etc/init.d/mysqld
 
... 중략 ...
  reload)
    exit 3
    ;;

 


exit 3이니까 SIGQUIT일테고 mysqld에서 지정한 시그널 핸들러에 의해 동작.

찾아보니 table의 grant를 reload 한다. 😭

https://dev.mysql.com/doc/refman/5.5/en/mysqladmin.html
 
reload
Reload the grant tables.

 



결국 SET GLOBAL을 이용해서 세팅을 바꿔주었다. 


mysql> SET GLOBAL expire_logs_days = 3;
Query OK, 0 rows affected (0.00 sec)
 
mysql> show global variables like 'expire_logs_days';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 3     |
+------------------+-------+
1 row in set (0.00 sec)

 



세팅 바꿔주고 1시간 정도 있다가

df로 줄어들었나 확인해보았다. 

안 줄었다. 😭

언제 줄어드는지 검색해도 안나온다. 

(프로세스 내부에서 뭔가 특정 시간에 주기적으로 돌면서 처리할듯한데.. )

아직 디스크 full 되려면 2~3주 남았으니 일단 퇴근하자.


다음날 출근해서 df로 확인해보니 지워졌다.

$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/xvda1     309503980 94337032 215066700  31% /
devtmpfs         3822500       56   3822444   1% /dev
tmpfs            3831692        0   3831692   0% /dev/shm


 



물론 정말 급한 경우였다면 PURGE를 이용해서 바로 지워버릴 수도 있다.


https://dev.mysql.com/doc/refman/8.0/en/purge-binary-logs.html


PURGE BINARY LOGS TO 'mysql-bin.010'; 

PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26'; 



로그 백업하고 있는 디스크 사용량이 80%를 넘어서서

디스크 볼륨 사이즈를 증가하게 되었습니다.

물론 장기 백업은 S3 버켓에 하고 있습니다.


실제와는 달리 테스트 vm이라서 볼륨사이즈가 작긴 하지만

후에 참고하기위해 기록해둡니다.



10G -> 15G로 증가시키기

 

[ec2-user@ip-xxx ~]$ df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/xvda2       10G  2.8G  7.3G  28% /

devtmpfs        474M     0  474M   0% /dev

tmpfs           496M     0  496M   0% /dev/shm

tmpfs           496M   13M  483M   3% /run

tmpfs           496M     0  496M   0% /sys/fs/cgroup

tmpfs           100M     0  100M   0% /run/user/1000

 

 

[ec2-user@ip-xxx ~]$ lsblk

NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

xvda    202:0    0  10G  0 disk

├─xvda1 202:1    0   1M  0 part

└─xvda2 202:2    0  10G  0 part /

 

아래와 같이 적절하게 사이즈 증가

 

 


 


 

디스크 블락 상태 확인 xvda2

[ec2-user@ip-xxx ~]$ lsblk

NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

xvda    202:0    0  15G  0 disk

├─xvda1 202:1    0   1M  0 part

└─xvda2 202:2    0  10G  0 part /

 

 

명령어 growpart 로 증가 시킴

[root@ip-xxx ec2-user]# growpart /dev/xvda 2

CHANGED: disk=/dev/xvda partition=2: start=4096 old: size=20967390,end=20971486 new: size=31453150,end=31457246

 

15G로 증가된것을 확인

[root@ip-xxx ec2-user]# lsblk

NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

xvda    202:0    0  15G  0 disk

├─xvda1 202:1    0   1M  0 part

└─xvda2 202:2    0  15G  0 part /

 

명령어 resize2fs로 파티션에 반영 시도 했으나 실패

==> ext2, ext3, ext4 일때 사용가능한 명령

[root@ip-xxx ec2-user]# resize2fs /dev/xvda2

resize2fs 1.42.9 (28-Dec-2013)

resize2fs: Bad magic number in super-block while trying to open /dev/xvda2

Couldn't find valid filesystem superblock.

 

 

xvda2의 파티션 확인 해보니 xfs

[root@ip-xxx ec2-user]# blkid /dev/xvda2

/dev/xvda2: UUID="50axxxxb-3xx0-44d0-ad12-28f205xxxx27" TYPE="xfs" PARTUUID="cc8f8c5a-xxxx-xxxx-aa62-ed173xxxxede"

 

 

xfs는 xfs_growfs 명령을 사용해야함

[root@ip-xxx ec2-user]# xfs_growfs /dev/xvda2

meta-data=/dev/xvda2             isize=512    agcount=7, agsize=393216 blks

         =                       sectsz=512   attr=2, projid32bit=1

         =                       crc=1        finobt=0 spinodes=0

data     =                       bsize=4096   blocks=2620923, imaxpct=25

         =                       sunit=0      swidth=0 blks

naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

log      =internal               bsize=4096   blocks=2560, version=2

         =                       sectsz=512   sunit=0 blks, lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0

data blocks changed from 2620923 to 3931643

 

 

수행 후 명령어로 확인후 반영 완료

[root@ip-xxx ec2-user]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/xvda2       15G  2.8G   13G  19% /

devtmpfs        474M     0  474M   0% /dev

tmpfs           496M     0  496M   0% /dev/shm

tmpfs           496M   13M  483M   3% /run

tmpfs           496M     0  496M   0% /sys/fs/cgroup

tmpfs           100M     0  100M   0% /run/user/1000

 

 


오픈채팅방의 개수가 늘어나면 프로필 입력하는것도 번거로워집니다.

이럴때 필요한 것이 '카드형 오픈프로필' 기능

한번 만들어두면 계속해서 사용가능해서 매우 편리합니다.

또한 누군가 오픈 채팅방에서 개인적으로 저에게 대화 요청하기에도 편리합니다.

총 10개의 사진만 따라하시면 만들수 있습니다.


1. [채팅] 화면 창 우측 상단의 설정 버튼 누르기


2. 채팅 설정 누르기


3. 내 오픈채팅방 관리 누르기


4. 여기부터가 본격적으로 시작입니다.

우측 상단의 만들기 누르면

아래 2개의 메뉴가 나오고 '카드형 오픈채팅방'을 선택하시면 됩니다.


5. 화면에 보이는 3개중 가장 위에있는 '프로필'을 선택합니다.


6. 닉네임과 자기소개, 그리고 사진을 설정합니다.

3개의 설정이 끝나면 우측 상단의 '완료' 버튼을 누릅니다.


참고로 사진...

실제 오픈채팅방에 나오는 것처럼 캐릭터 사진으로 하시려면,,

알아서 캡쳐를 하는 방법이 가장 빠른듯 합니다.


7. 다 만들어졌습니다.

어떻게 만들어졌는지 확인하고 좌측 상단의 'X' 를 누릅니다.



8. 진짜로 되었는지 확인하려면

오픈채팅방에 들어갑니다.


프로필설정에 아래와 같이 뜨면 저걸 선택해주시면 됩니다.

저런식으로 기존 프로필 변경도 가능합니다.


9. 들어가고 제대로 반영되었는지 확인하려면

채팅방의 우측 상단의 메뉴를 누릅니다.


10. 'me' 라고 되어있고

우측 하단에 하얀 배경의 네모가 보이면 다 된거로 보시면 됩니다.


끝입니다.


http://newspaper.readthedocs.io/en/latest/


각 언론사의 url을 GET하여 부동산뉴스를 보아보고 있습니다.

url만 바꿔서 아주 간단하게 뉴스기사를 가져오고

>>> from newspaper import Article >>> url = 'http://fox13now.com/2013/12/30/new-year-new-laws-obamacare-pot-guns-and-drones/' >>> article = Article(url)
>>> article.download()
>>> article.parse()

 자연어 처리 실행시키고

>>> article.nlp()

키워드를 뽑아주고 요약도 해줍니다.

>>> article.keywords
['New Years', 'resolution', ...]

>>> article.summary
'The study shows that 93% of people ...'

한글도 그럭저럭 해줍니다. (네이버 뉴스 요약해주는 서비스랑 비슷하거나 조금 떨어지는 수준)


12개 정도의 언론사의 오피니언, 부동산을
오늘의 주요 키워드 뽑아서 보는데 일부 키워드 예외처리만 하면 볼만합니다.






Herokuapp을 이용해서 시험삼아 제가 만든 시험 서비스 사이트가 있었습니다.

Django와 웹 스크랩핑을 기법을 이용해서 만들었는데

한동안 잊고 있다가 오랜만에 들어가서 로그인을 시도하니 에러가 발생합니다.

참고로 제가 만든 사이트의 로그인 방식은 로그인 하려는 사용자의 이메일 주소를 입력 받아서

1회용 로그인 URL 링크를 회신해서 보내줍니다.

이 과정에서 일단은 무료로 하려다보니 Gmail을 사용하고 있습니다.


SMTP Authentication Error

딱 봐도 메일 접근 권한 문제 같아 보입니다.

권한 해결하려고 보니 간단합니다.



아래 링크에가서 엑세스 허용만 해주면 문제 해결됩니다.
https://accounts.google.com/DisplayUnlockCaptcha


  1. 팽펑 2019.12.24 16:53 신고

    낮은 보안의 앱 허가만 열어주면 되는 줄 알았는데 이런 과정이 숨어있었네요. 감사합니다.

요즘 업무상 기술 규격을 계속 보고 있습니다.

*.doc 파일이라서 MS Word를 이용해서 보고 있는데 간혹 모르는 단어가 나옵니다.

그러면 웹을 열고 포털 사이트의 영어사전에 단어를 검색합니다.

이것도 한두번이지 반복되니까 도저히 안되겠다 싶어서 찾았습니다.


뒤져보니 워드 자체 기능을 제공해주고 있었습니다. (참고로 MS Word 2016입니다.)

이제 저 기능을 편하게 사용하기 위해서 단축키를 추가했습니다.

그러기 위해서 [파일]-[옵션]에 들어가서 아래의 '사용자 지정'을 클릭합니다.

이제 여기서 검토 탭을 선택하고 명령에서는 Translate를 고릅니다.

단축키는 편하신대로 설정하면 되는데 사용하기 편리한 단축키는 뭔가 세팅이 되어있습니다.

저는 Ctrl + Q를 기존 단축키를 거의 사용하지 않아서 이를 없애버리고 새로 맵핑 했습니다.

새 바로 가기 키에 Ctrl + Q 버튼을 누르시면 반영이 됩니다.

아래의 그림은 이미 제가 설정해 둔 다음에 캡쳐한 스크린 샷입니다.


모르는 단어가 나오면 커서를 그 단어에 두고

'Ctrl + Q'를 누르면 오른쪽에 단어 뜻이 나옵니다. 엄청 편리합니다.


예를 들면 제가 precedence 단어 뜻을 잘 모른상태에서

대충 precedence 단어 중간에 '|' 커서를 두고 Ctrl + Q를 누르면

오른쪽에 아래처럼 단어 뜻이 조회됩니다.




어쩌다보니 hwp파일에 있는 내용을 복사해서

이메일을 전송해야 했습니다.

내용은 아래의 표였는데 복사가 안 되었습니다.


소속직무성명전화번호이메일주소






검색해보니 Cloudcodes Insertable라는 크롬 익스텐션을 설치하는 방법이 많이 나옵니다.

그런데 막상 크롬 웹스토어에서 찾아보면 조회가 안 되었습니다.


괜히 한글로 검색했다고 후회하고 영어로 검색하니 깔끔한 방법이 나옵니다.

구글쉬트(googlesheet)에 내용을 작성하고 복사/붙여넣기 하면 끝이었습니다.

http://usingtechnologybetter.com/add-a-table-to-a-gmail-message/


자주 쓰지도 않을 익스텐션 설치할 필요도 없고 좋았습니다.


+ Recent posts