因为Linux上想要运行C#的话,需要安装Mono,所以首先是先确定自己的Linux版本,然后去Mono官网查找适合的Mono版本

cat /etc/issue
lsb_release -a
//这两个命令适用所有的Linux发行版本

cat /etc/redhat-release
//这种方法只适合Redhat系的Linux

然后就是去Mono官网根据自己服务器版本按步骤的每一条指令,执行安装,不过好像CentOS7的第一条指令有点问题,所以我后面改用了Ubuntu16.04

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF

sudo apt install apt-transport-https ca-certificates

echo "deb https://download.mono-project.com/repo/ubuntu stable-xenial main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list

sudo apt update

sudo apt install mono-devel

以上命令每一行一条指令,可以尝试用Centos7,感觉应该问题不大,用Ubuntu装MySQL,装了好久。。。。

装好之后可以在 这个页面 进行验证是否可以使用,之后有什么问题的话也可以这样子先直接在服务器中验证,是否成功

正常情况下可以把打包好的exe 直接在当前目录 mono name.exe 执行使用了,这里顺便提一下,你的exe里面用到直接使用路径读取文件的话,默认目录就在exe的目录里,还有就是Linu下面区分大小写,错了就用不了。

接着就是安装mysql了,我这里是直接安装的宝塔--->linux下的一个图形工具

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh

安装完之后,注意提示信息,里面有 地址、用户名 和密码 可以直接在浏览器里面,按照安装完的地址,在浏览器中打开,然后输入用户名和密码,然后可以在这里安装mysql和上传文件,非常地方便,还有就是用了宝塔之后,防火墙就被宝塔接管了,需要用的端口,自己在安全那里放行,mysql密码也可以直接在这里设置

都安装完之后就是要对mysql的访问权限进行开放了,这里可以根据自己的需求选择

mysql -u root -p
//然后输入密码,linux中的密码是看不到的
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
//放行ip所有通过root和password密码连接的人连接数据库,这里可以将%改成指定的ip

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
//放行通过localhost使用用户名root和password密码连接的人连接数据库

GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'password' WITH GRANT OPTION;
//放行通过127.0.0.1使用用户名root和password密码连接的人连接数据库

FLUSH PRIVILEGES;
//刷新权限

exit
//退出

接着就是上传可执行文件了,使用了,还没等我高兴起来,这时出现了一个更大的问题

MySql.Data.MySqlClient.MySqlException: Unable to connect to any of the specified MySQL hosts
in <0x006c5> MySql.Data.MySqlClient.NativeDriver:Open ()
in <0x00027> MySql.Data.MySqlClient.Driver:Create (MySql.Data.MySqlClient.MySqlConnectionString settings)

自己的程序使用localhost和127.0.0.1居然连接不了数据库,除此之外,还出现了一大串关于Socket的报错,把我都给整懵逼了,使用navicat是可以连接成功的,说明mysql应该是没有问题的,至于是不是不兼容,或者版本之类的还不确定,然后网上搜了一大片,好多都是无相关的内容,他们的问题都是连Navicat都连不上的,Socket和Mysql搜了大半天,试了大半天都没有结果,后面才突然想到会不会是依赖的MySQL.Data.dll用不了,有问题,一搜果然在下面找到了一个结果,就是自己引入的mysql.data.dll需要在linux下安装才能使用。。。

gacutil -i MySql.Data.dll
//在Mysql.Data.dll目录下执行

然而安装了之后还是不能执行,后面根据MySql.Data.dll和Mono找到了官网的一篇示例才得以解决,数据库的连接格式要规范,.Net能够解析的Mono不一定能够 连接地址

        string connectString = "Server=127.0.0.1;" + "Database=darkgod;" + "User ID=root;" + "Password=13416231858Qq..;" + "Pooling=false";
        conn = new MySqlConnection(connectString);

还有就是Socket开启监听需要监听 IPAdress.Any,不然其他IP访问不到,你在服务器上启动的端口也会不生效,记得要用到的端口,装了宝塔的话要去宝塔放行。

netstat -ntpl
#查看活跃的端口 
最后修改:2019 年 09 月 03 日 10 : 36 AM