一、环境要求
1、系统环境:
Centos/RHEL/OL7系列。
系统安装:https://www.topunix.com/post-4556.html 环境优化:https://www.topunix.com/post-10615.html
2、数据库版本:
mysql8.0系列。
二、数据库安装
1、安装流程
--https://www.topunix.com/post-11790.html
2、设置mysql表名不区分大小写
(1)lower_case_table_names参数详解:
其中0:区分大小写,1:不区分大小写
(2)查看当前设置
mysql> show variables like '%lower%';
(3)更改流程
--在在5.6/5.7低版本的mysql中,lower_case_table_names=1可以通过修改参数并重启服务可以生效。
--但是在8.0版本下是行不通的,修改lower_case_table_names变量会报错:官方mysql8.0版本新增的一条说明
lower_case_table_names can only be configured when initializing the server. Changing the lower_case_table_names setting after the server is initialized is prohibited.
--翻译:
LOWER_CASE_TABLE_NAMES只能在初始化服务器时配置。禁止在服务器初始化后更改LOWER_CASE_TABLE_NAMES设置。
也就是说在8.0版本,你的mysql已经初始化过就不支持修改lower_case_table_names参数了!!
如果你的是8版本且已经在使用,建议你直接重装。
--或者重新初始化数据库:
/mysql/app/mysql/bin/mysqld --defaults-file=/mysql/data/3306/my.cnf --initialize --user=mysql --basedir=/mysql/app/mysql --datadir=/mysql/data/3306/data --lower_case_table_names=1
注意:在初始化数据库后,my.cnf参数文件中lower_case_table_names要设置为1;
否则会报:
[ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('0') and data dictionary ('1').
(4)启动数据库
systemctl start mysqld
在my.cnf(可能名字不同)文件中添加lower_case_table_names=1
(5)修改密码
---赋值随机密码至变量defaultmysqlpwd
defaultmysqlpwd=`grep 'A temporary password' /mysql/log/3306/mysql51db-error.err | awk -F "root@localhost: " '{ print $2}' |tail -n1`
--更改密码为rootroot
mysql -uroot -p"${defaultmysqlpwd}" --connect-expired-password <<EOF ALTER USER 'root'@'localhost' IDENTIFIED BY 'rootroot'; EOF
ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
三、数据库及用户创建
1、更新root用户,可以在外部访问
update mysql.user set host='%' where user='root'; flush privileges; select user,host from mysql.user;
2、创建netcore数据库
create database pwproject;
3、查看创建的数据库
show databases;
4、创建pwproject用户并设置密码Data123!@#
create user 'pwproject'@'localhost' identified by 'Data123'; create user 'pwproject'@'localhost' identified by 'Data123!@#'; grant all privileges on pwproject.* to 'pwproject'@'localhost'; create user 'pwproject'@'%' identified by 'Data123!@#'; grant all privileges on pwproject.* to 'pwproject'@'%'; flush privileges;
5、查看创建的用户
select user,host from mysql.user;
6、更新用户,使用户可以在外部登录
update mysql.user set host='%' where user='pwproject'; flush privileges; 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
四、Mysql数据库导入
1、源数据库导出
mysqldump -uroot -p pwproject >pwproject.sql
2、目的数据库数据导入
我们导入数据的时候怎么做呢?我们可能会想到还是用mysqldump只要把输出符号换为输入符号即可。其实不然,那样导入后,虽说不报错,但是数据库中是没有任何数据的!
我们就需要直接通过mysql命令来实现了,方法如下:
mysql -uroot -p pwproject < pwproject.sql
五、netcore依赖环境安装(linux是7系列,mysql8.0)
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 wget https://download.topunix.com/ASPnetcore/dotnet-Linux7/packages-microsoft-prod.repo
(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/pwproject-mysql5.7/publish.zip
(2)解压安装
cd /data unzip publish.zip
2、运行测试
(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 &
2、问题汇总
(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问题,删除数据库重新安装,并导入数据。