因为没有给域名续费,加上私人时间不足,ZKWeb 的官网和演示站点已经停止了几个月的时间。

最近时间开始变多,所以重新购买了别的域名和服务器把官网和演示站点重新部署上去。

在此前站点是托管在共享主机上的 Windows + IIS 上的,而现在已经换为了 Linux + Nginx,费用比使用共享主机还要便宜。

因为服务器是 OpenVZ 下的虚拟主机,不能使用 docker,以下的步骤会直接在服务器上运行网站程序。

安装 dotnet

wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.2 -y

安装 libgdiplus (为了支持 System.Drawing.Common)

sudo apt-get install libgdiplus libunwind8 openssl -y
ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll

安装 nodejs (MVVMDemo 需要使用)

curl -sL https://deb.nodesource.com/setup_8.x -o nodesource_setup.sh
sudo bash nodesource_setup.sh
rm nodesource_setup.sh
sudo apt-get install nodejs

下载项目

sudo apt-get install git
cd /home/ubuntu
git clone https://github.com/zkweb-framework/ZKWeb
git clone https://github.com/zkweb-framework/ZKWeb.MVVMDemo
git clone https://github.com/zkweb-framework/ZKWeb.Plugins
git clone https://github.com/zkweb-framework/ZKWeb.Demo
git clone https://github.com/zkweb-framework/ZKWeb.Home

编译和发布项目

cd ~/ZKWeb.Demo && sh publish_ubuntu.sh

cd ~/ZKWeb.Home && sh publish_ubuntu.sh

cd ~/ZKWeb.MVVMDemo/src/ZKWeb.MVVMPlugins/MVVM.Angular.Website/static
sudo npm install -g @angular/cli
npm install
ng build --prod --aot
cd ~/ZKWeb.MVVMDemo && sh publish_ubuntu.sh

添加 systemd 服务

sudo vi /etc/systemd/system/zkweb-home.service

内容:

[Unit]
Description=ZKWeb Home
After=network.target [Service]
WorkingDirectory=/home/ubuntu/ZKWeb.Home.Publish/ZKWeb.Home.Ubuntu
ExecStart=/bin/sh -c "./ZKWeb.Home.AspNetCore server.urls=http://127.0.0.1:5000"
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=zkweb-home
User=ubuntu
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install]
WantedBy=multi-user.target
sudo vi /etc/systemd/system/zkweb-demo.service

内容:

[Unit]
Description=ZKWeb Demo
After=network.target [Service]
WorkingDirectory=/home/ubuntu/ZKWeb.Demo.Publish/ZKWeb.Demo.Ubuntu
ExecStart=/bin/sh -c "./ZKWeb.Demo.AspNetCore server.urls=http://127.0.0.1:5001"
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=zkweb-demo
User=ubuntu
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install]
WantedBy=multi-user.target
sudo vi /etc/systemd/system/zkweb-mvvm-demo.service

内容:

[Unit]
Description=ZKWeb MVVM Demo
After=network.target [Service]
WorkingDirectory=/home/ubuntu/ZKWeb.MVVMDemo.Publish/ZKWeb.MVVMDemo.Ubuntu
ExecStart=/bin/sh -c "./ZKWeb.MVVMDemo.AspNetCore server.urls=http://127.0.0.1:5002"
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=zkweb-mvvm-demo
User=ubuntu
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install]
WantedBy=multi-user.target

启动 systemd 服务

# 设置重启后自动开始
sudo systemctl enable zkweb-home
sudo systemctl enable zkweb-demo
sudo systemctl enable zkweb-mvvm-demo # 立刻开始
sudo systemctl start zkweb-home
sudo systemctl start zkweb-demo
sudo systemctl start zkweb-mvvm-demo # 查看服务日志
sudo journalctl -u zkweb-home
sudo journalctl -u zkweb-demo
sudo journalctl -u zkweb-mvvm-demo

安装和启动 nginx

sudo apt-get install nginx
sudo systemctl enable nginx
sudo systemctl start nginx

编辑配置与重启 nginx

sudo vi /etc/nginx/sites-enabled/default
sudo systemctl restart nginx

内容:

server {
listen 80;
server_name zkweb.app.compiv.com;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
} server {
listen 80;
server_name zkweb-demo.app.compiv.com;
location / {
proxy_pass http://localhost:5001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
} server {
listen 80;
server_name zkweb-mvvm-demo.app.compiv.com;
location / {
proxy_pass http://localhost:5002;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

安装 certbot (支持自动申请与更新 lets encrypt 的 ssl 证书)

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx

申请 ssl 证书

证书会通过 nginx 模块自动通过认证 (文件路径形式) 与签发。

sudo certbot --nginx -d zkweb.app.compiv.com
sudo certbot --nginx -d zkweb-demo.app.compiv.com
sudo certbot --nginx -d zkweb-mvvm-demo.app.compiv.com

测试更新 ssl 证书 (不会实际更新)

sudo certbot renew --dry-run

检查更新 ssl 证书的定时器

通过以上方式安装 certbot 以后会自动注册定时器,用于自动更新 ssl 证书,以下命令可以用来确认定时器的状态。

sudo systemctl list-timers certbot.timer

以上就完成部署了,这个部署流程基本上是写给自己看的,如果您有基于 zkweb 的网站也可以拿来参考。

虽然很想用 docker 部署,但是服务器费用相差太大了。

ZKWeb 官网与演示站点的部署步骤 (Linux + Nginx + Certbot)的更多相关文章

  1. Mysql 官网下载二进制包_图解步骤

    MYSQL下载方式 下载二进制包,直接使用wget下载 [root@db ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mys ...

  2. python tornado nginx deployment tornado 的部署在linux Nginx服务器

    题外话: 这里分享一个链接是将Flask 和 Apache 用 mod_wsgi 来进行传唤的部署方式,在digital ocean VPS 上的. https://www.digitalocean. ...

  3. 如何在官网下载java JDK的历史版本

    如何在官网下载java JDK的历史版本 http://jingyan.baidu.com/article/9989c746064d46f648ecfe9a.html 如何在官网下载java JDK的 ...

  4. 429 too many requests错误出现在wordpress后台更新及官网的5种解决方法

    从今年10月份开始wordpress服务经常出现429 too many requests错误,包括后台更新和访问wp官网,如下图所示,这是为什么呢?怎么处理呢?有大佬向官方论坛提问了,论坛主持人Ja ...

  5. 如何下载官网最新版 win10 系统?

    如何下载官网最新版 win10 系统?步骤: 一. 下载 遨游浏览器 将UA切换成,手机访问:推荐 UC浏览器,UA设置: Mozilla/5.0 (Linux; U; Android 8.0.0; ...

  6. windows 下开发的 .netCore MVC 部署到 Linux(Mint)

    这两天在公司跟同事偶然聊到 .netCore,说到一些趋势什么的.但是说来说去自己也没试过在Linux 机子上部署过,所以就试一下. 尝试之前也在网上看了一些文章,包括 Linux 上.netCore ...

  7. CabloyJS部署了一套演示站点

    为了方便大家快速体验和了解CabloyJS的风格和特性,全新部署了一套演示站点.对于初次接触CabloyJS的开发者,不用下载新建项目,就可以直接体验CabloyJS了 在线演示 场景 链接/二维码 ...

  8. Ubuntu14.04下Mongodb官网卸载部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 前期博客 Ubuntu14.04下Mongodb官网安装部署步骤(图文详解)(博主推荐) https://docs.mongodb.com/manual/tutorial/ins ...

  9. Ubuntu16.04下Mongodb官网卸载部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 前期博客 Ubuntu16.04下Mongodb官网安装部署步骤(图文详解)(博主推荐) https://docs.mongodb.com/manual/tutorial/ins ...

随机推荐

  1. PHP按二维数组中的某个值重新排序数组 usort的使用方法

    $arr[0] = ['aa'=>123,'bb'=>'abc']; $arr[1] = ['aa'=>456,'bb'=>'dfe']; usort($arr,ss('aa' ...

  2. Spring Boot SpringApplication启动类(二)

    目录 前言 1.起源 2.SpringApplication 运行阶段 2.1 SpringApplicationRunListeners 结构 2.1.1 SpringApplicationRunL ...

  3. 深入 .NET Core 基础 - 2:共享框架

    深入 .NET Core 基础 - 2:共享框架 原文地址:https://natemcmaster.com/blog/2018/08/29/netcore-primitives-2/ 共享框架从 . ...

  4. vue中computed(计算属性)和watch在实现父子组件props同步时的实际区分

    vue中computed和watch的对比是一个很有意思的话题. 看过官网教程以后,我们往往更倾向多使用computed.computed优点很多,却在某些时候不太适用. 今天我们就稍微讨论一下,当我 ...

  5. AIOps产品与架构浅析【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  6. 开发者如何学好 MongoDB

    作为一名研发,数据库是或多或少都会接触到的技术. MongoDB 是当前火热的 NoSQL 之一,我们怎样才能学好 MongoDB 呢?本篇文章,我们将从以下几方面讨论这个话题: MongoDB 是什 ...

  7. 上手spring boot项目(三)之spring boot整合mybatis进行增删改查的三种方式。

    1.引入依赖. <!--springboot的web起步依赖--><dependency> <groupId>org.springframework.boot< ...

  8. 【java基础】Thread类之join方法

  9. 2019 ICPC上海网络赛 A 题 Lightning Routing I (动态维护树的直径)

    题目: 给定一棵树, 带边权. 现在有2种操作: 1.修改第i条边的权值. 2.询问u到其他一个任意点的最大距离是多少. 题解: 树的直径可以通过两次 dfs() 的方法求得.换句话说,到任意点最远的 ...

  10. R语言for循环

    基本语法:for (name in expr_1) expr_2 实例操作: 1.构造矩阵 x=array(,dim=c(,)) # 构造四阶矩阵 数值全为0 :){ :){ x[i,j]=/(i+j ...