因为没有给域名续费,加上私人时间不足,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. 使用WireMock进行更好的集成测试

    无论您是遵循传统的测试金字塔还是采用诸如"测试蜂窝"这样的较新方法,都应该在开发过程中的某个时候开始编写集成测试用例. 您可以编写不同类型的集成测试.从持久性测试开始,您可以检查组 ...

  2. 行内元素(inline标签)设置了行高为什么不生效,还是表现为父盒子的行高?行内元素行高问题终极解释

    最近在看张鑫旭大佬的<css世界>,读到5.2.4  内联元素 line-height 的“大值特性” ,产生了疑惑, 在开发中确实也遇到了同样的问题,深入探究后得出结果,先说结论吧,论证 ...

  3. OSI案例详解+ARP+DNS

    案例,淘宝买东西 DNS 域名的作用其实就是相对ip地址来说更好记忆和识别,DNS就是根据域名解析出ip 一次请求,DNS解析的过程 1.在浏览器输入一个域名,操作系统首先会检查自己的本地hosts文 ...

  4. 如何将本地项目推送到码云仓库或者GitHub仓库

    将本地项目推送到码云仓库. 前提: git 和码云   1.在码云上先创建一个仓库. 2.在要被上传的项目的目录右键, 选择 Git Bash Here. 3.在窗口输入命令: git init 这时 ...

  5. js学习——1

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  6. redis数据类型--hash

    /** Redis应用之Hash数据类型* 问题1:操作命令* 问题2:存储实现原理和数据结构* 问题3:应用场景* */ 先了解下什么是hash,什么是hash碰撞:hash:是包含键值对的kv的数 ...

  7. Spring Data JPA 的一对多,一对多,多对多操作

    一对一的关联关系   需求:用户与角色的一对一的关联关系 用户:一方 角色:一方     创建 Users 实体 @Entity @Table(name = "t_users") ...

  8. Java中的try-catch-finally异常处理

    Java中的try-catch-finally异常处理 一.异常处理 异常(Exception):是在运行发生的不正常情况. 原始异常处理: if(条件) { 处理办法1 处理办法2 处理办法3 } ...

  9. nfs服务的讲解

    第4章 nfs存储服务的搭建 4.1 nfs服务的介绍 4.1.1 nfs的作用 nfs服务器是一种远程网络传输的共享文件系统 节省web服务器的本地存储空间 用户存储在web服务器上面的资源,会通过 ...

  10. [Java并发] AQS抽象队列同步器源码解析--独占锁释放过程

    [Java并发] AQS抽象队列同步器源码解析--独占锁获取过程 上一篇已经讲解了AQS独占锁的获取过程,接下来就是对AQS独占锁的释放过程进行详细的分析说明,废话不多说,直接进入正文... 锁释放入 ...