let's encrypt에서 인증서 갱신을 하라고 메일이 자주 날아왔는데,
무시하고 살았다가 인증서가 만료되었다.
DSM에서 인증서 갱신도 안 되고,
새로 발급도 안 되어서 며칠을 고생하고 있었는데..
방화벽 체크를 없앤 이후에 '확인' 버튼을 눌러서 방화벽을 완벽하게 정지시킨 다음에
인증서를 새로 발급받으면 문제가 없어진다.
Linux: A, www.A, jpt.A
Synology: git.A, webdav.A, dsm.A
프로그래밍 좋아하는 목수
let's encrypt에서 인증서 갱신을 하라고 메일이 자주 날아왔는데,
무시하고 살았다가 인증서가 만료되었다.
DSM에서 인증서 갱신도 안 되고,
새로 발급도 안 되어서 며칠을 고생하고 있었는데..
방화벽 체크를 없앤 이후에 '확인' 버튼을 눌러서 방화벽을 완벽하게 정지시킨 다음에
인증서를 새로 발급받으면 문제가 없어진다.
Linux: A, www.A, jpt.A
Synology: git.A, webdav.A, dsm.A
짬짬이 시간날 때마다 어머니 귤이랑 만감류 판매 쇼핑몰 구축하기 프로젝트 시작.
이것저것 하면 머리가 많이 아프니 wordpress와 WooCommerce로 시작할 것.
Ubuntu 18.04에 설치하며, domain이 있는 경우에 한해서 설치하는 방법을 기술한다.
분명 1~2년 뒤에 ubuntu 갈아엎을 일이 생길텐데, 이 때 까먹어서 시간낭비하는 것을 방지하기 위해서 기록한다.
도메인을 구입한다.
Let's Encrypt 를 설치한다.
sudo -H ./letsencrypt-auto certonly --apache -d ohmycarpenter.com -d www.ohmycarpenter -d jpt.ohmycarpenter.com
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get install certbot
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
## pem 파일들 권한 조정한다.
sudo crontab -e
# 다음 줄을 추가한다.
0 0 1 * * /bin/bash -l -c "certbot renew --quiet"
Apache2 서버 설정을 한다.
sudo apt install apache2
/etc/apache2/sites-available에 다음과 같이 네 개의 파일을 생성
# file: http.jpt.ohmycarpenter.com.conf
<VirtualHost *:80>
ServerName jpt.ohmycarpenter.com
Redirect / https://jpt.ohmycarpenter.com/
ServerAlias jpt.ohmycarpenter.com
</VirtualHost>
# file: https.jpt.ohmycarpenter.com.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName jpt.ohmycarpenter.com
ServerAlias jpt.ohmycarpenter.com
# configure SSL
SSLEngine on
SSLCertificateFile /some/where/ohmycarpenter.com/full_chain.pem
SSLCertificateKeyFile /some/where/ohmycarpenter.com/priv_key.pem
SSLProtocol All -SSLv2 -SSLv3
SSLOpenSSLConfCmd DHParameters /etc/ssl/certs/dhparam.pem
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
# Use RewriteEngine to handle websocket connection upgrades
RewriteEngine On
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:8000/$1 [P,L]
<Location "/">
# preserve Host header to avoid cross-origin problems
ProxyPreserveHost on
# proxy to JupyterHub
ProxyPass http://127.0.0.1:8000/
ProxyPassReverse http://127.0.0.1:8000/
</Location>
</VirtualHost>
</IfModule>
# file: http.www.ohmycarpenter.com.conf
<VirtualHost *:80>
ServerName www.ohmycarpenter.com
ServerAlias www.ohmycarpenter.com ohmycarpenter.com
ServerAdmin webmaster@localhost
Redirect / https://www.ohmycarpenter.com/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
# file: https.www.ohmycarpenter.com.conf
<IfModule mod_ssl.c>
# <VirtualHost _default_:443>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /home2/www/wordpress
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /some/where/ohmycarpenter.com/cert1.pem
SSLCertificateKeyFile /some/where/ohmycarpenter.com/priv_key.pem
SSLCertificateChainFile /some/where/ohmycarpenter.com/chain1.pem
SSLProtocol All -SSLv2 -SSLv3
SSLOpenSSLConfCmd DHParameters /etc/ssl/certs/dhparam.pem
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
ServerAdmin oh.donghyun77@gmail.com
ServerName ohmycarpenter.com
ServerAlias www.ohmycarpenter.com
<Directory /home2/www/wordpress/>
AllowOverride All
</Directory>
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
#위 네개의 파일에 대해 symbolic link를 만든다.
ln -s /etc/apache2/sites-available/http.www.ohmycarpenter.com /etc/apache2/sites-enabled/http.www.ohmycarpenter.com
ln -s /etc/apache2/sites-available/https.www.ohmycarpenter.com /etc/apache2/sites-enabled/https.www.ohmycarpenter.com
ln -s /etc/apache2/sites-available/http.jpt.ohmycarpenter.com /etc/apache2/sites-enabled/httpjpt.ohmycarpenter.com
ln -s /etc/apache2/sites-available/https.jpt.ohmycarpenter.com /etc/apache2/sites-enabled/https.jpt.ohmycarpenter.com
wordpress 를 설치한다.
JupyterHub를 설치한다.
sudo apt install python3 python3-dev git curl
sudo adduser jpthub_admin_id
curl https://raw.githubusercontent.com/jupyterhub/the-littlest-jupyterhub/master/bootstrap/bootstrap.py | sudo -E python3 - --admin jpthub_admin_id
sudo systemctl start apache2
sudo tljh-config set https.tls.key /some/where//ohmycarpenter.com/priv_key.pem
sudo tljh-config set https.tls.cert /some/where/ohmycarpenter.com/chain.pem
sudo tljh-config reload proxy
sudo tljh-config set user_environment.default_app jupyterlab
sudo tljh-config set limits.memory 40G
sudo tljh-config add-item users.admin another_admin_id_existed_in_ubuntu
sudo tljh-config reload
Tensorflow 설치를 한다.
sudo apt-get -y install python3-pip
sudo pip3 install tensorflow-gpu==2.0.0 # 2.0.0 버전 설치 명기
Jupyterhub에 jpt_admin_id로 로긴을 하고 python 필수 패키지들과 Anaconda, iRkernel을 설치한다.
sudo -E pip3 install packages # keras, coffee, pandas, etc.
cd ~/tmp
curl -O https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh
bash Anaconda3-2019.10-Linux-x86_64.sh
conda update --all
install.packages('IRkernel')
IRkernel::installspec()
## remove unnecessary environment settings in $HOME/.Rprofile, such as options(device = "x11").
JupyterHub에서 admin -> user 관리는 메뉴가 뜨기도 했다가 안 뜨기도 했다가 하는 듯. 나중에 버전 업데이트 되면서 고쳐지면 좋을 듯 하다.
Let's Encrypt standalone과 apache 버전의 차이 공부 (완료)
docker + jupyterhub + lets encrypt 해결할 것 (완료 2020/01/07)
docker 공부하기도 싫고, 귀찮아서 conda 버전으로 설치할 예정.
curl로 설치까지 마쳤더니, spawning이 되지 않는 문제가 발생해서.. 이것은 $HOME/.jupyter에 엉뚱한 설정이 들어 있어서 그런 것으로 판명되었으며, $HOME/.jupyter 를 삭제하면 아무 문제 없이 잘 된다.
https://github.com/jupyterhub/jupyterhub-deploy-docker/issues/91
crontab + letsencrypt 갱신 (완료 2020/01/05)