基于 Nginx ,在服务器同时搭建了 Hexo 和 Jupyter,可以使用 Jupyter 直接在线编辑 Markdown 并发布,同时能够直接看到 Hexo 博客的效果。服务器使用的是 GCP 提供的免费试用服务,域名是 freedom 免费域名,使用 Cloudflare 的 DNS 和 CDN 服务,开启 https 加密。其实就是全部免费啦,可以根据自己的情况换用不同的服务。
环境安装
安装 Anaconda
1 2
| $ wget https://repo.anaconda.com/archive/Anaconda3-5.3.1-Linux-x86_64.sh $ bash Anaconda3-5.3.1-Linux-x86_64.sh
|
安装 Node.js 和 Git
1 2 3
| $ sudo apt-get install git-core $ wget -qO- https://raw.github.com/creationix/nvm/v0.33.11/install.sh | sh $ nvm install stable
|
安装 Hexo
1
| $ npm install -g hexo-cli
|
Hexo 配置
首先执行下面命令建站
1 2 3
| $ hexo int hexo $ cd hexo $ npm install
|
然后生成静态文件
这里介绍了最简单的配置,其他详细信息请到 Hexo 官网查看
配置 Jupyter Notebook
1
| $ jupyter notebook --generate-config
|
生成配置文件,位置为 ~/.jupyter/jupyter_notebook_config.py
1
| $ jupyter notebook password
|
设置密码,文件位于 ~/.jupyter/jupyter_notebook_config.json
1 2 3 4 5
| { "NotebookApp": { "password": "sha1:123456789:0987654321abcdefghijklmno" } }
|
将 psaaword 部分复制到配置文件中,可以参考
1 2 3 4 5 6 7 8
| c.NotebookApp.password = 'sha1:123456789:0987654321abcdefghijklmno' c.NotebookApp.ip = 'localhost' c.NotebookApp.port = 6789 c.NotebookApp.port_retries = 50 c.NotebookApp.allow_origin = '*' c.NotebookApp.contents_manager_class = 'notedown.NotedownContentsManager' c.NotebookApp.open_browser = False
|
然后使用 nohup 后台运行
1
| $ nohup jupyter notebook &
|
配置 Nginx
首先安装 Nginx
1
| $ sudo apt-get install nginx
|
然后编辑 Nginx 配置文件,默认位于 /etc/nginx/site-enabled/default
,可以参考下面配置,SSL 证书可以直接下载 Cloudflare 提供的免费证书,或者使用 Let’s encrypt 等申请。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| server { listen 80 jupyter; listen [::]:80 jupyter; listen 443 ssl jupyter; listen [::]:443 ssl jupyter; ssl on; ssl_certificate /etc/ssl/private/private.pem; ssl_certificate_key /etc/ssl//private/private.key;
access_log /var/log/nginx/jupyter.access.log; error_log /var/log/nginx/jupyter.error.log;
root /var/www/root; server_name jupyter.domain.example; index index.html index.htm index.nginx-debian.html;
location / { proxy_pass http://127.0.0.1:6789; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_http_version 1.1; proxy_redirect off; proxy_buffering off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; } }
server { listen 80 hexo; listen [::]:80 hexo; listen 443 ssl hexo; listen [::]:443 ssl hexo; ssl on; ssl_certificate /etc/ssl/private/private.pem; ssl_certificate_key /etc/ssl//private/private.key;
access_log /var/log/nginx/hexo.access.log; error_log /var/log/nginx/hexo.error.log;
root ~/hexo/public; server_name jupyter.domain.example; index index.html index.htm index.nginx-debian.html; }
|
然后重新加载 Nginx
1
| $ sudo systemctl restart nginx
|
到此应该就可以正常访问 Jupyter 和 Hexo 了,之后可以使用 Jupyter Notebook 编辑文章,使用自带的 Terminal 进行生成静态网页。也可以参考官方将网页发布到 GitHub 并绑定自己域名访问。