由於沒有給域名續費,加上私人時間不足,ZKWeb 的官網和演示站點已經中止了幾個月的時間。
最近時間開始變多,因此從新購買了別的域名和服務器把官網和演示站點從新部署上去。
在此前站點是託管在共享主機上的 Windows + IIS 上的,而如今已經換爲了 Linux + Nginx,費用比使用共享主機還要便宜。node
由於服務器是 OpenVZ 下的虛擬主機,不能使用 docker,如下的步驟會直接在服務器上運行網站程序。python
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
sudo apt-get install libgdiplus libunwind8 openssl -y ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
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
sudo vi /etc/systemd/system/zkweb-home.service
內容:nginx
[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
內容:git
[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
內容:github
[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
# 設置重啓後自動開始 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
sudo apt-get install nginx sudo systemctl enable nginx sudo systemctl start nginx
sudo vi /etc/nginx/sites-enabled/default sudo systemctl restart nginx
內容:web
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; } }
sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install python-certbot-nginx
證書會經過 nginx 模塊自動經過認證 (文件路徑形式) 與簽發。docker
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
sudo certbot renew --dry-run
經過以上方式安裝 certbot 之後會自動註冊定時器,用於自動更新 ssl 證書,如下命令能夠用來確認定時器的狀態。npm
sudo systemctl list-timers certbot.timer
以上就完成部署了,這個部署流程基本上是寫給本身看的,若是您有基於 zkweb 的網站也能夠拿來參考。
雖然很想用 docker 部署,可是服務器費用相差太大了。ubuntu