目录
一、环境要求
1、系统环境:
Centos/RHEL/OL7系列
系统安装:https://www.topunix.com/post-4556.html
环境优化:https://www.topunix.com/post-10615.html
2、数据库版本:
mysql5.7系列
二、Mysql 数据库安装
1、安装流程:
--https://www.topunix.com/post-11781.html
2、设置mysql表名不区分大小写
(1)lower_case_table_names参数详解:
其中0:区分大小写,1:不区分大小写
(2)查看当前设置
mysql> show variables like '%lower%';
(3)更改流程
--用root登录,修改 /mysql/data/3306/my.cnf --在[mysqld]节点下,加入一行: lower_case_table_names=1 --重启MySQL : service mysql restart
三、mysql数据库创建、授权
1、更新root用户,可以在外部访问
mysql> update mysql.user set host='%' where user='root'; mysql> flush privileges; mysql> select user,host from mysql.user;
2、创建netcore数据库
mysql> create database netcore;
3、查看创建的数据库
mysql> show databases;
4、创建netcore用户并设置密码Data123
mysql> grant all privileges on netcore.* to 'netcore'@'localhost' identified by 'Data123'; mysql> flush privileges;
5、查看创建的用户
mysql> select user,host from mysql.user;
6、更新用户,使用户可以在外部登录
mysql> update mysql.user set host='%' where user='netcore'; mysql> flush privileges; mysql> select user,host from mysql.user; +---------+-----------+ | user | host | +---------+-----------+ | netcore | % | | root | 127.0.0.1 | | root | ::1 | | root | % | +---------+-----------+ 4 rows in set (0.00 sec)
7、防火墙放通3306端口
[root@master01 opt]# firewall-cmd --permanent --add-port=3306/tcp; [root@master01 opt]# firewall-cmd --reload
四、数据导入
1、源数据库导出
mysqldump -uroot -p pwproject >pwproject.sql
2、目的数据库数据导入
我们导入数据的时候怎么做呢?我们可能会想到还是用mysqldump只要把输出符号换为输入符号即可。其实不然,那样导入后,虽说不报错,但是数据库中是没有任何数据的!
我们就需要直接通过mysql命令来实现了,方法如下:
mysql -uroot -p pwproject < pwproject.sql
五、netcore 依赖环境安装
1、依赖环境安装
(1)安装一些包
yum install -y libunwind yum install -y icu
(2)添加微软提供的yum源,linux默认没有提供
mv /etc/yum.repos.d/* /etc/yum.repos.d/bk/ yum remove packages-microsoft-prod rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm 或: cd /etc/yum.repos.d rpm -Uvh https://download.topunix.com/ASPnetcore/dotnet-Linux7/packages-microsoft-prod.rpm
(3)如果只是部署程序安装(只安装运行时即可)
yum clean all yum install -y aspnetcore-runtime-3.1
注意:之前只安装此依赖环境去部署我们的程序的时候有出现无法启动的情况,如果出现无法启动的情况建议把开发调试环境也一起安装。
(4)如果需要开发调试安装下面程序()
yum install -y dotnet-sdk-3.1.x86_64
--查看安装的版本号
dotnet --version
* .Net Core SDK 用于开发者构建 App,包含有较多开发相关的工具 包(实际上,SDK 也是包含 Runtime)
* .Net Core Runtime 仅作为运行时使用,不包含开发工具包,体积较小。
既然要部署 Asp.Net Core,自然离不开 Runtime(如果装 SDK 也能跑,不过不推荐在运行环境装 SDK)。
六、程序部署
1、程序下载安装
(1)下载
mkdir -p /data cd /data
wget https://download.topunix.com/ASPnetcore/publish.zip
(2)解压安装
cd /data unzip publish.zip
2、修改数据库连接配置
vi /data/publish/appsettings.json "Server": "192.168.1.41", //端口号 "Port": 3306, //用户名 "UserId": "root", //密码 "Password": "rootroot",
3、运行测试
(1)Mysql数据库权限授权
grant all on *.* to 'pwproject'@'%'; flush privileges;
(2)运行netcore程序
cd /data/publish/ dotnet NetModular.Demo.WebHost.dll --urls http://*:5000
(3)后台运行netcore程序(后面可以配置守护进程)
nohup dotnet NetModular.Demo.WebHost.dll --urls http://*:5000 &
六、问题汇总
1、报错
(1)报错Failed to load ,
error: libunwind.so.8: cannot open shared object file: No such file or directory Failed to bind to CoreCLR at ‘/root/dotnet/shared/Microsoft.NETCore.App/2.0.0/libcoreclr.so‘
解决办法:yum install libunwind
(2)报错FailFast:
Couldn‘t find a valid ICU package installed on the system. Set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support.
解决办法:yum install icu
(3)报错FailFast:
[root@peerp PEProject]# dotnet NetModular.Demo.WebHost.dll --urls http://*:5000 Unhandled exception. System.InvalidOperationException: Sequence contains no elements at System.Linq.ThrowHelper.ThrowNoElementsException() at System.Linq.Enumerable.First[TSource](IEnumerable`1 source) at Dapper.SqlMapper.ThrowZeroRows(Row row) in /_/Dapper/SqlMapper.cs:line 1158 at Dapper.SqlMapper.QueryRowImpl[T](IDbConnection cnn, Row row, CommandDefinition& command, Type effectiveType) in /_/Dapper/SqlMapper.cs:line 1212 at Dapper.SqlMapper.QueryFirst[T](IDbConnection cnn, String sql, Object param, IDbTransaction ...
解决办法:数据库PEProject问题,删除数据库重新安装,并导入数据。
2、时区修改
timedatectl status timedatectl set-timezone “Asia/ShangHai"
3、安装libgdiplus 解决导出问题
(1)方法1:编译安装-下载安装包:
wget http://download.mono-project.com/sources/libgdiplus/libgdiplus0-6.0.4.tar.gz
--编辑安装过程见:
https://www.topunix.com/post-8352.html
(2)方法2:直接安装即可(如果可以)
yum install -y libgdiplus0
(3)创建符号链接:
ln -s /usr/local/lib/libgdiplus.so /usr/lib64/libgdiplus.so ln -s /usr/local/lib/libgdiplus.so /usr/libgdiplus.so
七、安装进程守护
https://www.topunix.com/post-5795.html
至此,netcore安装完毕,下述文档无需再看。
一、linux编译打包netcore程序
1、安装npm依赖程序
curl --silent --location https://rpm.nodesource.com/setup_12.x | bash - yum install -y nodejs
2、添加包源
[root@master01 ~]# dotnet nuget add source http://172.18.1.232:8081/repository/nuget-group/ [root@master01 ~]# npm config set registry http://172.18.1.232:8081/repository/group-npm/
3、查看刚添加的包源
[root@master01 ~]# cd /data/NetModular.PEProject/src/WebUI/ [root@master01 WebUI]# npm install [root@master01 WebUI]# npm update [root@master01 WebUI]# npm run build
4、后台编译
[root@master01 WebHost]# dotnet clean [root@master01 WebHost]# dotnet pack [root@master01 WebHost]# dotnet restore [root@master01 WebHost]# dotnet build
5、打包输出
[root@master01 WebHost]# dotnet publish -c Release -o /data/publish
6、程序测试部署
dotnet NetModular.Demo.WebHost.dll --urls http://*:5000
二、Jenkins如何实现自动编译和打包部署
1、设置源码版本库
2、构建触发器
3、构建过程
cd /root/.jenkins/workspace/NetCore_Build/NetModular.PEProject/src/WebUI /usr/local/node-v12/bin/npm update /usr/local/node-v12/bin/npm run build cd /root/.jenkins/workspace/NetCore_Build/NetModular.PEProject/src/WebHost/ dotnet clean dotnet pack dotnet restore dotnet build dotnet publish -c Release -o /data/publish
4、构建后操作
scp -r /data/publish 172.18.1.232:/opt ssh 172.18.1.232 "bash /opt/net.sh"
脚本文件
#!/bin/bash pkill dotnet mv /data/publish /data/publish_`date +%Y%m%d%H%M` mv /opt/publish /data/ cd /data/publish #BUILD_ID=dontKillMe nohup dotnet NetModular.Demo.WebHost.dll --urls http://*:5000 >> nohup.out &
三、使用脚本简单实现进程守护
1、编写一个脚本,内容如下,守护mysql程序
vim pid.sh while true; do server=`ps aux | grep mysql| grep -v grep` if [ ! "$server" ]; then nohup /etc/init.d/mysqld57 start & fi sleep 5 done
2、后台运行守护进程脚本
nohup sh pid.sh &
3、手动停止掉mysql服务进行测试
[root@master01 ~]# /etc/init.d/mysqld57 stop
八、总结
-
数据盘挂载(添加、分区、LVM创建)
-
mysql安装(yum、rpm、源码编译)
-
dotnet安装
-
npm环境安装
-
netcore部署
-
netcore在linux中的编译打包
-
Jenkins流程简单了解
-
简单设置进程守护