在阿里云CentOS7上部署ZKEACMS并使用MySql

在阿里云CentOS7上部署ZKEACMS并使用MySql

ZKEASOFT October 17, 2017


本文将说明如何在阿里云中使用Centos7系统来部署ZKEACMS(包含运行时发布),并使用MySql作为数据库。发布程序需要.Net Core SDK,前往微软官方网站进行下载安装:https://www.microsoft.com/net/download

如果你只是想在CentOS上部署,请参阅:在CentOS 7+ 上安装部署ZKEACMS

发布程序

这里我们使用自包含运行时发布方式发布,所以不需要在服务器上另外安装.Net Core的运行时。请在本地进行程序发布,如果在服务器上已经安装了SDK,那就可不用带运行时发布了。

下载源代码:https://github.com/SeriaWei/ZKEACMS.Core

git clone https://github.com/SeriaWei/ZKEACMS.Core.git

安装发布工具

dotnet tool install -g ZKEACMS.Publisher

发布

./ZKEACMS.Core/src/ZKEACMS.WebHost/publish-zkeacms centos.7-x64

详细发布教程可参考:http://www.zkea.net/zkeacms/document/publish/core

然后将发布好的程序(./ZKEACMS.Core/src/ZKEACMS.WebHost/bin/release/PublishOutput)打包成cms.zip,然后上传到服务器

上传解压程序

首先将程序文件上传到你的服务器。因为阿里云的Centos7默认是没有安装zip/unzip,先安装zip/unzip:

yum install zip unzip

将程序解压到cms目录

unzip cms.zip -d cms

安装MySql

依次执行以下命令:

sudo yum update
yum install wget
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
sudo yum install mysql-server
sudo systemctl start mysqld

初始化MySql:

sudo mysql_secure_installation

输入命令后直接回车,一路输入Y,设置root的密码为root。或者您可以根据您的个人情况进行设置。

初始化数据库

初始化数据库,数据库脚本对应在DataBase/MySql目录(https://github.com/SeriaWei/ZKEACMS.Core/tree/master/DataBase/MySql),将最新版本的数据库脚本下载到服务器保存为Dump.sql

wget -O dump.sql https://github.com/SeriaWei/ZKEACMS.Core/raw/master/DataBase/MySql/Dump3.1.2.sql

然后使用以下命令来登录mysql,用root登录:

mysql -u root -p

使用dump.sql来初始化数据库,该脚本会创建一个名为zkeacms_core的数据库:

source dump.sql;

数据库初始化完成,可以按ctrl+c或者输入exit退出mysql了。

注意事项

Linux下MySql安装完后默认是区分表名的大小写的,脚本生成的表名都是小写的,所以要先设置表名不区分大小写,编辑 /etc/my.cnf 添加 lower_case_table_names=1 配置,重启MySql服务

vi /etc/my.cnf

修改结果如下图

重启mysql服务

service mysqld restart

修改数据库连接字符串

ZKEACMS的数据库连接字符串在程序目录的appsettings.json文件中:

vi /root/cms/appsettings.json

修改结果如下图所示:

添加执行权限

在执行ZKEACMS之前,必需先添加执行权限

chmod a+x /root/cms/Application/ZKEACMS.WebHost

安装 libunwind libicu,这个是运行.net core程序所必须的

sudo yum install libunwind libicu

接下来就可以尝试运行ZKEACMS了

cd /root/cms/Application
./ZKEACMS.WebHost

正常运行如下图所示:

程序虽然跑起来了,但依然不能正常访问,需要安装nginx做反向代理。

安装nginx

sudo yum install epel-release
sudo yum install nginx
sudo systemctl enable nginx

修改 nginx 的配置

添加 nginx 的配置,让它反向代理到 localhost:5000,修改全局配置文件 

vi /etc/nginx/nginx.conf 

修改 location 结点为以下内容

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

启动 Nginx

sudo systemctl start nginx

添加ZKEACMS服务

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

创建服务

vi /etc/systemd/system/zkeacms.service

输入以下内容保存

[Unit]
Description=ZKEACMS

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

[Install]
WantedBy=multi-user.target

启动服务

systemctl start zkeacms.service

这样就可以安心的退出SSH远程连接了。

开机自启动

systemctl enable zkeacms

这样ZKEACMS就部署完成了。

阿里云安全组规则

如果不能通过IP访问,要先在安全组规则里面添加80端口:


微信公众号