本文为本人最近学习将.Net Core部署到Linux的一些经验总结,也提供点也和我一样对Linux接触不多的.Net Core开发者。
一.部署用到的环境和工具
1.Linux采用最新的CentOS7.5版本,开发使用VS2017搭配的.Net Core 为2.0的SDK版本号2.1.202(可到微软官方下载:https://dotnet.microsoft.com/download/dotnet-core/2.0)
2.数据库为Mysql 5.7版本,同CentOS系统一样部署在同一个腾讯云服务器上(配置为1C2G1M)
3.Linux的SSH2客户端使用XShell6,文件传输使用WinScp,可以自行下载,我这打包一份网上收集的(https://pan.baidu.com/s/1_tKLCcRQQYjDIpZ49fUEiQ 提取码: v9uu )
4.在CentOS上用Git代码管理
5.反向代理工具使用jexus
二.CentOS发布环境搭建
1.从0开始,重装了云服系统。
2.使用XShell连接到云服。
3.安装Mysql5.7,本文参考的《Centos7安装mysql5.7》:https://www.jianshu.com/p/c76dc730a800
第1步:下载mysql的rmp package
[root@instance-93h418iv ~]# wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
完成截图:
第2步:安装repo
[root@instance-93h418iv ~]# rpm -ivh mysql57-community-release-el7-.noarch.rpm
完成截图:
第3步:安装mysql-server,安装过程中出现2次选择一律按y回车,大概3到5分钟就安装完成了。
[root@instance-93h418iv ~]# yum install mysql-server
完成截图:
第4步:配置mysql密码和默认字符集
[root@instance-93h418iv ~]# vim /etc/my.cnf
这时候要是不会用vi的人就有点懵了(我也是),我在这大概讲下操作,vi打开了my.cnf,无法使用鼠标,编辑前按i才能编辑,编辑完成后按Esc退出编辑状态,最后按:x回车保存退出。如果输错请不要用Ctrl+z来撤销用Ctrl+s保存,因为没用,文件写的混乱了可以用:q!不保存退出,注意有个英文冒号:不能漏了!
默认字符集一定要修改了,不然EF生成的数据库字符集编码不支持中文导致发布到Linux上程序出错
在[mysqld]最下面添加字符集
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
再添加权限过滤代码(后面改完密码要删除)
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
最后在下面添加[client]
[client]
default-character-set = utf8mb4
最后编辑样子为:
然后启动mysql:
service mysqld start
匿名登录mysql
mysql
更改mysql密码
mysql> update mysql.user set authentication_string=PASSWORD('mima') where user='root' and hosst='localhost';
更新权限
flush privileges;
在输入quit退出mysql,打开之前编辑的文件
vim /etc/my.cnf
把之前标记的跳过权限的代码删除后保存退出
重启myql(重启:service mysqld restart;开启:service mysql start;关闭 service mysqld stop)
service mysqld restart
使用mysql -u root -p登录mysql
再一次修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码'
最后配置远程连接
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mima' WITH GRANT OPTION;
这样myslq环境就算是配置好了
4.安装DotCore 2.0 SDK
这里安装DotCore SDK和安装jexus都是完全参考《.Net Core部署到CentOS》地址:https://www.cnblogs.com/CKExp/p/8409563.html
4.1.配置dotnet产品Feed
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[packages-microsoft-com-prod]
name=packages-microsoft-com-prod
baseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod
enabled=
gpgcheck=
gpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'
4.2.安装SDK,注意版本!!!
sudo yum update
sudo yum -y install libunwind libicu
sudo yum install dotnet-sdk-2.1.
也是1路按y,这回等待时间有点长,15分钟差不多搞定。
5.安装jexus
curl https://jexus.org/release/x64/install.sh|sh
6.安装git
参考yolo_bean的《linux(centos)下安装git并上传代码》:https://www.cnblogs.com/yolo-bean/p/7808767.html,本人只安装没做其他配置
[root@instance-93h418iv ~]# yum install git
7.将代码库中代码用git下载到CentOS并发布
git clone 你项目的SSH地址
这里会要求输入用户名和密码,输入密码时候是看不到的输完直接回车就完事。
至此,我们看到root文件夹下有了一个项目,一个mysql的安装文件
现在cd到启动的web项目中去执行dotnet build
然后发布项目到/var/www/自定义文件夹
[root@instance-93h418iv Ator.Site]# dotnet publish -o /var/www/Ae
这样项目就发布完成了,最后只要使用jexus代理
8.使用jexus代理
参考自https://www.cnblogs.com/CKExp/p/8409563.html
/// 1、切换到Jexus配置文件目录
cd /usr/jexus/siteconf
/// 2、复制默认的配置文件为Ae
cp default Ae
/// 3、编辑配置文件,这里端口为8080,若用80请把defualt中默认的80改为其他端口,Ator.Site.dll为Web项目生成的dll为主入口文件
vi Ae ######################
# Web Site: Ae
########################################
port=
root=/ /var/www/Ae
hosts= * #OR your.com,*.your.com AppHost={CmdLine=dotnet /var/www/Ae/Ator.Site.dll;AppRoot=/var/www/Ae/;Port=}
最后重启下jexus
/// 如果已启动 Jexus:
sh /usr/jexus/jws restart /// 如果未启动 Jexus:
sh /usr/jexus/jws start
然后就可以正常根据Ip地址和端口进行访问了。
完结
参考博文:
https://www.cnblogs.com/CKExp/p/8409563.html
https://www.jianshu.com/p/c76dc730a800
https://www.cnblogs.com/yolo-bean/p/7808767.html