本文为本人最近学习将. 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-9.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=1
- gpgcheck=1
- 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.202
也是 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=8080
- root=/ /var/www/Ae
- hosts= * #OR your.com,*.your.com
- AppHost={
- CmdLine=dotnet /var/www/Ae/Ator.Site.dll;AppRoot=/var/www/Ae/;Port=5000
- }
最后重启下 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
来源: http://www.bubuko.com/infodetail-2890674.html