ZKEACMS Core 是基于 .net core 开发的,可以在 windows, linux, mac 上跨平台运行,接下来我们来看看如何在 CentOS 上运行 ZKEACMS。

安装 .Net Core SDK

安装最新的 .Net Core SDK很简单,可参考微软官方文档:https://www.microsoft.com/net/download/linux-package-manager/centos/sdk-current

安装 Nginx

sudo yum install nginx
sudo systemctl enable nginx

如果提示找不到 nginx 包,请参考 

https://www.liberiangeek.net/2014/07/enable-nginxs-repository-install-nginx-centos-7/

启动 Nginx

如果Nginx没有启动,可以手动启动它:

sudo systemctl start nginx

安装完成Nginx之后可以尝试用IP访问一下,看是否可以正常访问

修改Nginx的配置

修改Nginx的配置,让它反向代理到http://localhost:5000,修改全局配置文件 

sudo vi /etc/nginx/nginx.conf 

修改location结点为以下内容(按键盘I或者Insert开启编辑模式)

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;
}

修改完成后,按ESC键退出编辑模式,然后按组合键shift+:,然后输入wq,回车进行保存。

重启Nginx

重启nginx让配置生效

sudo systemctl restart nginx

到这里,我们的环境就搭配好了,接下来,我们来部署ZKEACMS

安装ZKEACMS

上传程序文件

我们将发布好的程序打包为cms.zip并上传到 /root 目录下。并解压到 /root/cms 目录下,使用以下命令解压

unzip cms.zip -d cms

具体发布发方式可以查看:http://www.zkea.net/zkeacms/document/publish/core

新建运行服务

创建一个服务,让 dotnet 在后台运行。

创建服务

sudo vi /etc/systemd/system/zkeacms.service

输入以下内容保存

[Unit]
Description=ZKEACMS

[Service]
WorkingDirectory=/root/cms
ExecStart=/usr/local/bin/dotnet /root/cms/ZKEACMS.WebHost.dll
Restart=always
RestartSec=10
SyslogIdentifier=zkeacms
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production 

[Install]
WantedBy=multi-user.target

注意:ExecStart=/usr/local/bin/dotnet /root/cms/ZKEACMS.WebHost.dll/usr/local/bin/dotnet为dotnet程序的路径,可以使用type或者whereis查询该路径。另外定位到cms的目录,使用pwd命令可以查出完整路径。

type dotnet

启动服务

systemctl start zkeacms.service

服务启动以后,就可以尝试使用域名或者IP进行访问了。

开机自启动

可以将服务设置为开机启动,这样每一次重启服务器后程序都会自动运行:

systemctl enable zkeacms

快速部署

我们准备了一个自动部署的脚本,可以帮助您快速的安装nginx、运行环境,并自动设置。

首先,需要将cms上传到服务器,如/root/cms,如果您不确定这个路径是什么,可以cdcms目录后,使用pwd查询。

这里演示的路径是/home/wayne/cms然后输入以下命令:

sh -c "$(curl http://cdn.zkeasoft.com/setup-zkeacms.sh)"

然后会要求你输入cms的路径,所以这里输入/home/wayne/cms然后回车:

接下来会询问你是否安装nginx,输入yes然后回车:

然后等待安装完成即可。

常见问题

1. 无法访问,连接不上,先开放80端口

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

2. nginx 502 Bad Gateway

如果你的配置正确,确始终不能访问,使用 curl http://localhost:5000 可以正常访问的话,需要手动关闭 selinux 。

centos 7.1环境默认selinux是开启的,三种方案:

第一种暂时关闭selinux 做法:

setenforce 0

第二种是修改 /etc/selinux/config 
将 SELINUX=enforcing 改为 SELINUX=disabled 重启机器即可。

可以使用 nano 或者 vi 进行编辑

vi /etc/selinux/config

第三种比较推荐,将NGINX加到SELinux的允许名单:

yum install policycoreutils-python  
cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx  
semodule -i mynginx.pp