在阿里云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端口: