ZKWeb 官网与演示站点的部署步骤 (Linux + Nginx + Certbot)
因为没有给域名续费,加上私人时间不足,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)的更多相关文章
- Mysql 官网下载二进制包_图解步骤
MYSQL下载方式 下载二进制包,直接使用wget下载 [root@db ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mys ...
- python tornado nginx deployment tornado 的部署在linux Nginx服务器
题外话: 这里分享一个链接是将Flask 和 Apache 用 mod_wsgi 来进行传唤的部署方式,在digital ocean VPS 上的. https://www.digitalocean. ...
- 如何在官网下载java JDK的历史版本
如何在官网下载java JDK的历史版本 http://jingyan.baidu.com/article/9989c746064d46f648ecfe9a.html 如何在官网下载java JDK的 ...
- 429 too many requests错误出现在wordpress后台更新及官网的5种解决方法
从今年10月份开始wordpress服务经常出现429 too many requests错误,包括后台更新和访问wp官网,如下图所示,这是为什么呢?怎么处理呢?有大佬向官方论坛提问了,论坛主持人Ja ...
- 如何下载官网最新版 win10 系统?
如何下载官网最新版 win10 系统?步骤: 一. 下载 遨游浏览器 将UA切换成,手机访问:推荐 UC浏览器,UA设置: Mozilla/5.0 (Linux; U; Android 8.0.0; ...
- windows 下开发的 .netCore MVC 部署到 Linux(Mint)
这两天在公司跟同事偶然聊到 .netCore,说到一些趋势什么的.但是说来说去自己也没试过在Linux 机子上部署过,所以就试一下. 尝试之前也在网上看了一些文章,包括 Linux 上.netCore ...
- CabloyJS部署了一套演示站点
为了方便大家快速体验和了解CabloyJS的风格和特性,全新部署了一套演示站点.对于初次接触CabloyJS的开发者,不用下载新建项目,就可以直接体验CabloyJS了 在线演示 场景 链接/二维码 ...
- Ubuntu14.04下Mongodb官网卸载部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 前期博客 Ubuntu14.04下Mongodb官网安装部署步骤(图文详解)(博主推荐) https://docs.mongodb.com/manual/tutorial/ins ...
- Ubuntu16.04下Mongodb官网卸载部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 前期博客 Ubuntu16.04下Mongodb官网安装部署步骤(图文详解)(博主推荐) https://docs.mongodb.com/manual/tutorial/ins ...
随机推荐
- 《手把手教你》系列练习篇之6-python+ selenium自动化测试(详细教程)
1. 简介 前面文章我们了解了如何获取元素的text属性值,和判断元素是否显示在页面(is_displayed()方法),本文我们来学习下,判断一个控件是否被选中状态. 2. 验证控件是否被选中 还是 ...
- 使用最新AndroidStudio编写Android编程权威指南(第3版)中的代码会遇到的一些问题
Android编程权威指南(第3版)这本书是基于Android7.0的,到如今已经过于古老,最新的Android版本已经到10,而这本书的第四版目前还没有正式发售,在最近阅读这本书时,我发现这本书的部 ...
- Linux海量数据高并发实时同步架构方案杂谈
不论是Redhat还是CentOS系统,除去从CDN缓存或者数据库优化.动静分离等方面来说,在架构层面上,实 现海量数据高并发实时同步访问概括起来大概可以从以下几个方面去入手,当然NFS的存储也可以是 ...
- Django REST framework(DRF)
Django REST framework(DRF) FBV与CBV CBV源码分析 Restful接口规范 DRF简单配置使用和源码解析 DRF序列化器 DRF10大接口 DRF视图集 三大组件 j ...
- C语言I作业11
C语言 博客作业11 问题 回答 C语言程序设计II 博客作业11 这个作业要求在哪里 作业要求 我在这个课程的目标是 理解和弄懂局部变量和全局变量,静态变量和动态变量 这个作业在哪个具体方面帮助我实 ...
- 如何在导航条的button点击变换时,切换对应的控制器
1.导航条内的button被点击 切换对应的控制器 让控制器作为调航条的代理 1.定义代理 2.遵循代理协议 3.实现代理 4.在合适的地方调用代理 当按钮被点击的时候切换控制器
- Python开发还在用virtualenv?不如了解下pipenv...#华为云·寻找黑马程序员#
又见 Kenneth Reitz 之前公众号写了一篇文章爬虫新宠requests_html 带你甄别2019虚假大学,其中主要是为了介绍模块**requests_html,这个模块的作者还开发了req ...
- 【nodejs原理&源码赏析(2)】KOA中间件的基本运作原理
[摘要] KOA中间件的基本运作原理 示例代码托管在:http://www.github.com/dashnowords/blogs 在中间件系统的实现上,KOA中间件通过async/await来在不 ...
- 即将到来的“分布式云”(DPaaS):分布式计算+ DB +存储即服务
我在区块链会议上就即将到来的公共"分布式云"系统进行了讨论,该系统将主流的公共云平台(如AWS,Azure,Google Cloud,Heroku等)与区块链和P2P网络相结合,比 ...
- luogu P1731 [NOI1999]生日蛋糕 |暴力枚举
题目背景 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层 生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1<=i<=M)层蛋糕是半径为Ri, 高度为Hi的圆柱 ...