HTTPS로 업데이트

아니 뭐 개인 일기장을 암호화해서 뭐해라고 물어본다면 딱히 할말은 없지만,

Let’s Encrypt 덕분에 무료로 인증서를 받을 수 있으면서 10분이 아깝다고 암호화를 하지 않는다는 건 말이 안되지 않을까?

아무튼 모든 홈페이지는 암호화 해야된다.

MOOC 강좌 후기

예전부터 마음만 있다면 학원 다닐 필요 없이 책으로 모든걸 배울 수 있게 되었다. 사실 서점에 수많은 책들은 깊이가 있어서 컴퓨터공학이라던지 유기화학이라던지 전부 강의 없이 책으로도 충분한 지식을 얻을 수 있다. 요즘에는 책도 필요없이 이런 지식을 인터넷으로 공짜로 뿌리는 시대가 되었는데 이 MOOC(대규모 온라인 공개 강의)를 통해서 집에서도 쉽게 수업을 들을 수있게 되었다. 근데 영어 못하면 안댐

대학교를 자퇴하고 새로 들어오면서 많은 MOOC 강좌를 듣기 시작했다. 신입생때 첫 학점을 높게 받아 장학금을 타겠다는 마음가짐을 가지고 있어서 쉬운 수업으로 13~14학점만 듣다보니 학기 내내 시간이 많이 남았는데, 학점을 높게 받아야 돼서 놀지는 못하고, 쉬워서 공부는 하기 싫고 하다보니 MOOC 강좌를 찾아서 듣게 되었다. 주변 여러 사람들이 MOOC에 대해 관심을 갖는 걸 보고 내가 여태까지 들었던 강좌를 정리해야할 필요성을 느껴서 후기를 적어보도록 하겠다.

A. KHAN ACADEMY

가장 처음듣기 시작했는데, 칸은 정말 정말 친절하게 가르치고 이해가 정말 잘된다. 하지만 수업의 깊이가 너무 얕고 수준은 고등학교에서 아무리 높게 잡아도 대학교 1학년 약간 아래이다. 딱 하나 추천할게 있다면 computer science 부분에서 algorithm과 journey to cryptography 부분인데 관련 배경지식이 단 하나도 없다면 보는게 좋다. 정말 재미있고 다큐맨터리 식으로 영상이 있어서 진짜 편하게 듣기만 해도 좋다. 딱 지식채널e 정도 느낌으로 들으면 좋음. 배경지식이 있으면 넘기자.

B. COURSERA

코세라는 무크 사이트중에서 가장 많은 학생수를 보유하고 있는데 은근 뒤져보면 수업 들을 만한걸 찾기가 힘들다. 마치 넷플릭스에서 무슨 영화 볼지 10분 동안 고민하는 느낌. 돈을 내면 인증서 발급이 가능하지만 나는 순수하게 학문을 추구하기 때문에 돈을 내지 않았다.

1. Machine Learning

코세라를 만든 앤드류 응이 가르치며, 코세라의 가장 첫 강의라고 들었다. 참고로 앤드류 응은 바이두(중국의 구글)에서 과학연구 최고 책임자를 맡고있다. 11주차의 혜자스로운 과목이고 개인적으로 코세라에서 꼭 들어야하는 강의라고 생각한다. 이 강의는 머신러닝의 기초를 훑어주며 심지어 매트랩 라이센스를 주면서까지 과제를 하라고 주는데 어렵지는 않고, 컴공이 아닌 수학과라면 코딩 없이 강의만 열심히 들어도 도움이 될 것 같다. 근데 수학과도 맽랲쓰지 않나. 전체적으로 천천하게 자세히 설명하기 때문에 기초를 제대로 쌓기에 도움이 된다. 코딩보다는 수학능력이 더 중요하지만 어려운건 없음. 우리학교 어떤 학부연구 중에서는 이 수업을 지목하면서 이 정도 백그라운드는 있어야 연구가 진행된다고 말을 함. 이 수업을 들으면 왠지 지구의 모든 문제를 머ㅡ신러닝으로 해결할 수 있을 것같은 자신감이 듬.

2. Cryptography I

II는 이번년도 7월달 예정. 응신러닝 다음으로 꼭 들어야하는 강의, 나는 칸 아카데미에서 쉽게 한번 듣고 와서 약간 이해하는데 어렵지 않았다. 수업은 전체적으로 레벨이 높고, 역시 수학이 훨신 더 중요한 강의이다. 사실상 하나도 거르지 않고 암호학의 기본을 수학적 기초부터 가르치는데 필기를 같이하면 정말정말 도움이 됐겠지만, 난 하지 않았다. 중간 중간 코딩 선택과제가 있긴했는데 하지는 않아서 어떤진 모르겠다. 학교 교수님과 잠깐 대화할때 이 강의에 대해 말을 꺼냈는데 정말 좋은 교수라고 말씀해 주셨다. 이 수업을 들으면 왠지 지구의 모든 문제를 암호화로 해결할 수 있을 것 같음.

3. Full Stack Web Development

프론트엔드부터 백엔드까지 전부 자바스크립트로 끝내는 강의 묶음이다. 링크에 들어가면 강의 제목이 있는데 강의 제목을 다시 검색해야 각 강의를 무료로 들을 수 있다. 각 강의는 4주로 짧아서 개발하는 걸 깊게 배우기는 힘들지만 얇고 넓게 배우기에는 좋다. 뭔가 만들고 싶고 앵귤러js라든지 몽고db라든지 노드js라든지 뭔가 들어는 봤는데 진짜 뭘 어떻게 해야하는지 단 하나도 모를때 들으면 좋다. 다만 수업이 정말 재미없고 억지로 듣는 기분이 강하게 든다. 수업은 이론 부분과 연습부분으로 나뉘는데 이론부분은 정말 재미가 없고, 연습부분은 동영상에 코드 따라쓰기를 하는데 쓸데없이 시간이 정말 오래 걸린다. 왠만하면 추천을 하지 않겠지만 이 수업 덕분에 DB쪽 프로그래밍을 배워서 어플 서버 개발에 너무 잘썻기 때문에 도움이 안되었다고는 말하기 힘들다. 이 강의 묶음을 마치면 그냥 간단한 웹사이트가 아니라 dynamic한 웹사이트를 만들 수 있다!! 로그인 로그아웃, 글쓰기 기능 등등등. 근데 재미없어서 중도 포기율 95프로는 될듯.
참고로 우리학교 내가 수업 들은 교수님이 진행함.

4. Introduction to Game Development

MSU에서 진행하고 유니티로 게임 만드는 법을 배운다. 쓸데없이 자세한것 같지만 유니티를 처음 만져보는 입장에서는 되게 좋은 강의이다. 딱 유니티의 기본 까지 익힐 수 있고, 강의가 끝나면 간단한 게임을 만들고 끝나지만, 다른 모든 컴퓨터언어와 비슷하게, 제대로 익히려면 직접 게임을 만들어보는게 좋다. 많이 도움이 됨. 과제 제출은 귀찮으니까 안하고 동영상만 따라하는 걸 추천. 방학동안 1주일만에 쑥쑥 들으면서 끝냈는데 딱 그정도 하면 이제 구글에 검색하면서 게임을 만들 수 있을 것같다.

그외 코세라에서 사진관련, 게임이론, 이미지 프로세싱쪽을 듣었/듣고 있는데 게임이론, 이미지 프로세싱은 아직 끝나지 않아서 할말이 없고, 교양 부분은 사진 빼고 들은게 없어서 어떤지 모르겠다. 연세대에서 한국어 가르치는 수업이 있는데 한번 들어보면 재밌을 듯

C. UDACITY

어제 처음 가입해서 뭐가 뭔지 잘 모르겠음. 유다시티는 컴퓨터 공학 관련 강의만 가르치며 특히 개발쪽으로 깊게 가르친다. 실무에 도움되는 걸 많이 가르치고 취업보장 프로그램이 잘팔리는 거 같음. 여기는 오히려 무료 강의 보다 유료 강의가 더 호기심이 든다. 특히 머신 러닝쪽으로 제대로 가르치는 거같아서 흥미로움.

1. Deep Learning

구글의 어떤 개발자가 올린 강의, 파이썬과 텐서플로우를 이용해서 가르쳐준댄다. 오늘 처음해서 어떤진 모르겠는데, 이번 학기 학부과제로 딮러닝 관련 연구를 해야하는데 파이썬도 모르고 텐서플로우도 뭔지 몰라서 듣기 시작함. 20학점(프로젝트2수업)+1학점(학부연구)에다가 과외 일주일 5시간에 무크까지 들으려니 이번학기는 힘들듯. 부대찌개 먹고싶다.

D. edX

하나도 안들어봐서 모름. 왠지 당장 꼴리는게 없음. 뭔가 다 어느정도 아는 내용이고 특히 개발쪽은 잘 알아서 딱히 선택할게 없다. 아직은 안듣고 응신러닝 끝나면 관련 분야 좀 깊게 들어간거 여기랑 코세라랑 뒤져봐서 하나 찾아서 들을듯.

 

디자인쪽 insight좀 기르게 그쪽이나 아니면 아두이노나 라즈베리파이 관련해서 iot쪽도 하고싶은데 NLP도 하고싶은데 적당한 강의 찾기도 힘들고 시간도 촉박하다.

워드프레스 업데이트 오류

문제:

워드프레스를 4.7로 업데이트 하려니

[su_quote]Another update is currently in progress.[/su_quote]

라면서 진행이 되지 않는다.  중요 업데이트가 자동으로 되는 것을 막기 위해 있다는 것인데, 알아낸 유일한 해결 방법은 mysql에 접속해서 해당 옵션을 제거하는 것이다.

해결 방법:

(우분투 16.04에서 한 방법임)

워드프레스가 있는 서버를 SSH로 접속하자.

mysql -u root -p

를 입력한 뒤 mysql 비밀번호를 입력해주자.

[su_note note_color=”#f5f5b5″] 아래에 wordpress는 자기에 맞는 데이터베이스를 적어 넣어주자[/su_note]

use wordpress;

를 적어 db를 옮기고

select * from wp_options where option_name = 'core_updater.lock';

을 통해서 해당 옵션이 존재하는 지 확인한 뒤,

delete from wp_options where option_name = 'core_updater.lock';

을 넣어 해당 옵션을 제거해 주자.

exit

으로 mysql을 나간 뒤, 아무런 재시작 없이 워드프레스 업데이트를 누르면 진행이 된다.

다음과 비슷한 에러가 뜬 다면 아래 방법으로 해결하자. 

[su_quote]The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.: wp-admin/includes/update-core.php[/su_quote]

내 경우에는 에러가 더 생겼는 데, 이는 워드프레스 디렉토리 권한 때문에 생긴 것이다.

[su_note note_color=”#f5f5b5″] 아래에  /var/www/html에는 자기에 맞는 디렉토리를 적어 넣어주자[/su_note]

cd /var/www/html

을 통해 워드프레스가 설치된 디렉토리로 가자. 이 디렉토리는 wp-config.php가 있는 디렉토리이다.

sudo chown -R www-data:www-data .

을 통해서 권한을 새로 준 뒤 다시 업데이트를 해보자. 이번에도 재시작은 할 필요 없다.

[출처]: http://wordpress.stackexchange.com/questions/224989/get-rid-of-another-update-is-currently-in-progress

디지털오션 워드프레스 varnish

Digitalocean에서 자동으로 설정해주는 워드프레스는 한달 10달러 부터 시작이 가능하다. 5달러로도 가상서버를 만들 수 는 있지만 워드프레스를 설치하려면 직접 설치를 해줘야 한다. 또한 RAM이 부족해 금방 에러가 뜨며 접속이 불가능해진다.
error establishing a database connection
라는 에러가 자주 뜨는 데 이는 램이 부족해 mysql을 꺼주기 떄문에 일어나는 현상이다. 물론 수시로 mysql을 켜주는 것도 가능하나 매우 귀찮고 직접 실험해보면 알 수 있겠지만 F5를 5번만 연타해줘도 다시 같은 에러가 뜨면서 접속이 불가능해진다.

이는 Varnish라는 걸 서버에 설치해줘 해결이 가능하다. 그럼 워드프레스가 설치되어있다고 가정하고 varnish를 설치하고 설정하는 법을 알아보자.

1. 설치 준비

설치하는 과정은 복사 붙혀넣기가 자주 이루어지기 때문에 디지털오션 기본 콘솔로는 설치가 까다롭고 귀찮다. 따라서 Putty를 설치해 이를 통해서 서버에 접속해보자.

링크 이 링크에 접속을 한뒤 putty.exe를 설치해주고 실행을 시켜보자.

캡처

캡처

당연히 위에 IP는 자신의 IP 또는 도메인을 입력하고 아래 Open을 누르자
그 이외의 것들은 그대로 나두어도 된다. 이후 유저 아이디와 비밀번호 (디지털오션 콘솔에 접속할때 사용하는 것과 동일)를 입력한다. 그럼 접속이 되었다.
참고로 붙혀넣기는 컨트롤 V가 아니라 마우스 오른쪽 클릭이다.

2. Varnish 설치하기

콘솔에 다음과 같은 라인을 차례대로 입력해준다.

apt-get install apt-transport-https

curl https://repo.varnish-cache.org/ubuntu/GPG-key.txt | apt-key add –

echo “deb https://repo.varnish-cache.org/ubuntu/ trusty varnish-4.0” >> /etc/apt/sources.list.d/varnish-cache.list

apt-get update

apt-get install varnish

이렇게 5개의 줄을 차례대로 입력하고 아무런 에러가 뜨지 않았다면 varnish가 설치가 된 것이다.

3. Plugin 설치

워드프레스 대시보드에 들어가서 ‘Varnish HTTP Purge’이라는 플러그인을 하나 설치해준다.

4. Custom Permalinks

원본 글에 따르면 permalink를 바꾸어 주어야 위 플러그인이 사용가능 하다는데 확인은 하지 못했다. 그냥 해주자.

setting -> Permalink로 들어가서 ‘Custom Structure;에 /%year%/%monthnum%/%post_id%를 입력해주고 저장을 누른다. 그 다음 콘솔창에

a2enmod rewrite

를 쳐주자.

5. Apache 이동

파일 2개를 수정해주어야한다.

sudo nano /etc/apache2/ports.conf

를 쳐서 파일을 연뒤 맨 위를 수정을 해야된다.
각 라인중에 #으로 시작하는 것은 주석이므로 상관 안 해되 된다.

Listen 80

Listen 8080으로 바꾸어 주자.
저장을 할때는 컨트롤+X를 누른뒤 y를 치고 엔터를 한번 더 쳐주면 된다.  만약 저장이 되었는지 확인해보고 싶으면 다시 nano로 들어가 보아도 된다. 참고로 콘솔에 전에 친 라인을 다시 치고 싶으면 화살표 위키를 눌러서 찾으면 된다.

sudo nano /etc/apache2/sites-enabled/000-default.conf
로도 들어가서 맨위의
<VirtualHost *:80><VirtualHost *:8080> 로 바꾸어 주자. 똑같이 저장을 해주자.

6. Serve from Varnish

sudo nano /etc/default/varnish

로 들어가 주자. 화살표 키로 쭉 내려가보면 DAEMON어쩌구로 시작하는 부분이 있다. 거기 첫줄의 6081을 80으로 바꾸어 주자. 즉 마지막을 이렇게 바꾸어 주면 된다.

DAEMON_OPTS=”-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m”

7. 나머지

이제 하나만 더 수정하면 된다.

sudo nano /etc/varnish/default.vcl

로 들어간뒤 모든 줄을 지워주자. 그리고 아래 코드를 붙혀넣기 하자.

 

#
# This is an example VCL file for Varnish.
#
# It does not do anything by default, delegating control to the
# builtin VCL. The builtin VCL is called when there is no explicit
# return statement.
#
# See the VCL chapters in the Users Guide at https://www.varnish-cache.org/docs/
# and http://varnish-cache.org/trac/wiki/VCLExamples for more examples.

# Marker to tell the VCL compiler that this VCL has been adapted to the
# new 4.0 format.
vcl 4.0;

# Default backend definition. Set this to point to your content server.
backend default {
.host = "127.0.0.1";
.port = "8080";
}
acl purge {

"localhost";

"000.000.000.000";
}
sub vcl_recv {
# Happens before we check if we have this in cache already.
#
# Typically you clean up the request here, removing cookies you don't need,
# rewriting the request, etc.

if (req.method == "PURGE") {
if (client.ip !~ purge) {

return (synth(405));

}

if (req.http.X-Purge-Method == "regex") {

ban("req.url ~ " + req.url + " &amp;&amp; req.http.host ~ " + req.http.host);

return (synth(200, "Banned."));

} else {
return (purge);
}
}
set req.http.cookie = regsuball(req.http.cookie, "wp-settings-\d+=[^;]+(; )?", "");

set req.http.cookie = regsuball(req.http.cookie, "wp-settings-time-\d+=[^;]+(; )?", "");

set req.http.cookie = regsuball(req.http.cookie, "wordpress_test_cookie=[^;]+(; )?", "");

if (req.http.cookie == "") {

unset req.http.cookie;
}
if (req.url ~ "wp-admin|wp-login") {
return (pass);
}
}

sub vcl_backend_response {
# Happens after we have read the response headers from the backend.
#
# Here you clean the response headers, removing silly Set-Cookie headers
# and other mistakes your backend does.
if (beresp.ttl == 120s) {

set beresp.ttl = 1h;

}
}

sub vcl_deliver {
# Happens when we have all the pieces we need, and are about to send the
# response to the client.
#
# You can do accounting or modifying the final object here.
}

참!고!로! 중간에 000.000.000.000에 서버 ip를 집어넣자. 주소창에 치면 바로 웹사이트로 보내지는 그 ip

8. 마무리

sudo service varnish start

sudo service apache2 restart

sudo service varnish reload

차례대로 콘솔에 처주면 이제 웹사이트로 들어가 질꺼다.

admin으로 로그인 한뒤 맨 위에 Purge Varnish 한번 눌러주자.

예전에는 F5 3~4번만 연타해도 사이트가 터지는걸 이젠 몇십번을 연타해도 터지지가 않는다. 끝

어딘가 잘 안되면 링크 에서 직접 확인좀

Digitalocean 과 WordPress

디지털 오션은 되게 저렴하다. 최저 가격이 저렴하다. 단돈 5달러, 약 6천원으로 시작할 수 있으며 6천원 주제에 ssd 20기가나 용량을 주는 걸 보면 가장 낫다고 생각이 든다.

하지만 512mb RAM이 워드프레스를 돌리기에 되게 힘든데, 해본적이 있다면 사이트가 자주
error establishing a database connection 이라는 문구를 띄우는 걸 볼 수 있다. 이는 램이 부족해 mysql을 끄면서 일어나는 현상으로 sudo start mysql을 치면 해결이 가능하지만 페이지에서 2~3번만 새로고침을 연타해도 금방다시 에러가 뜨게 된다.

램을 늘려서 해결하는 방법도 있지만 아무도 안보는 이 블로그를 위해서 한달에 만이천원이나 쓰는 것은 꽤나 큰 낭비이다. 이를 해결하기 위해 플러그인도 제거하고 다양한 방법을 썻지만 크게 개선되는 것은 없어보인다.

검색을 거듭한 결과 varnish를 이용해서 해결하는 방법이 있다. 이 링크를 통해서 방법을 확인 할 수 있다. 이 글이 약간 오래된 관계로 완벽한 방법이 아닌데, 한번 좀 더 보고 번역을 올려봐야겠다.

무슨 문제인지 모르겠는데 자고 일어나면 guru meditation 에러가 뜨는데 대체 왜 생기는지 모르겠고 인터넷에서 수정하라는 걸 수정했는데 바뀔 지 잘 모르겠다. 내일 아침 다시 확인해 봐야겠다.

 

///

2016-5-18
어디서부턴가 망해서 varnish를 다시 깔고 다른 튜토리얼을 따라했다. 링크참조