Ubuntu 18.04에 설치하며, domain이 있는 경우에 한해서 설치하는 방법을 기술한다.
분명 1~2년 뒤에 ubuntu 갈아엎을 일이 생길텐데, 이 때 까먹어서 시간낭비하는 것을 방지하기 위해서 기록한다.
-
도메인을 구입한다.
- 나는 바보같이 http://hosting.kr 에서 비싼 돈 내고 구입했으나, 구글링을 하면 미국에서 아주 싸게 구입할 수 있다. 아무튼 구입은 해야 한다.
- IP주소 연결과 서브도메인 설정하기. 추가한 서브도메인은 www.ohmycarpenter.com 과 jpt.ohmycarpenter.com 이다.
- hosting.kr에서는 '네임서버(서브도메인) 설정 관리' 메뉴로 들어가서 설정해야 한다.
- 나는 ohmycarpenter.com, www.ohmycarpenter, jpt.ohmycarpenter.com 모두 같은 IP로 밀어넣었다.
-
Let's Encrypt 를 설치한다.
- apt로 설치한다.
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 파일들 권한 조정한다.
- 다음 명령어로 letsencrypt 인증서를 매월 1일마다 갱신하게 만든다.
sudo crontab -e
# 다음 줄을 추가한다.
0 0 1 * * /bin/bash -l -c "certbot renew --quiet"
-
Apache2 서버 설정을 한다.
- 다음 명령어로 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/\ [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 를 설치한다.
- 웹사이트 돌아다니면서 가장 간단하게 설명해 놓은 것을 참조해서 설치한다.
- wordpress 루트 디렉토리를 www-data user, group으로 한정 및 755로 권한 조정하고, wp-config.php 파일은 640으로 권한 조정
- 필수 설치 플러그인: all in one wp security, cc-syntax-highlight, easy updates manager, jetpack, really simple ssl (돈 안 내도 됨), 고전 편집기, WP Githuber MD
- All In One WP Security로 보안 테스트 및 설정한다.
-
JupyterHub를 설치한다.
- 다음 명령어로 TLJH를 설치한다.
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
- 다음 명령어로 아파치 서버와 jupyterhub를 시작한다.
sudo systemctl start apache2
- 다음 명령어로 jupyterhub 설정을 한다.
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 설치를 한다.
-
Jupyterhub에 jpt_admin_id로 로긴을 하고 python 필수 패키지들과 Anaconda, iRkernel을 설치한다.
- New -> Terminal로 들어가서 다음 명령어로 python 패키지들 설치
sudo -E pip3 install packages # keras, coffee, pandas, etc.
- 다음 명령어로 Anaconda3 설치: 이미 R이 설치도어 있으면, 사실 iRKernel 설치하는데 Anaconda는 필요하지 않은 듯
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
- 다음 명령어로 R에서 다음 명령어를 넣어서 iRKernel을 설치
install.packages('IRkernel')
IRkernel::installspec()
## remove unnecessary environment settings in $HOME/.Rprofile, such as options(device = "x11").
-
JupyterHub에서 admin -> user 관리는 메뉴가 뜨기도 했다가 안 뜨기도 했다가 하는 듯. 나중에 버전 업데이트 되면서 고쳐지면 좋을 듯 하다.