linux部署.NET6.0项目
一、CentOS7.9配置SSH实现远程连接方法过程
1.确认是否安装ssh
yum list installed | grep openssh-server
有输出内容,说明已安装;
2.安装SSH服务
yum install openssh-server
已安装的可以直接跳过。
3.编辑配置
vim /etc/ssh/sshd_config
4.Port 2222
PermitRootLogin no #是否允许root登录
PermitEmptyPasswords no #是否允许空密码登录
UseDNS yes #是否对远程主机名进行反向解析,关闭会提高连接的速度
GSSAPIAuthentication no #解决Linux之间使用ssh连接慢的问题
5.开启服务
sudo service sshd start
6.查看服务启动情况
ps -e | grep sshd
参考:
https://blog.csdn.net/lwd2307997664/article/details/115282739
二、CentOS7.9服务设置时间同步
1.安装ntpdate工具
yum -y install ntp ntpdate
2.设置系统时间与网络同步
任选一个
ntpdate ntp1.aliyun.com
ntpdate ntp2.aliyun.com
ntpdate ntp3.aliyun.com
ntpdate ntp4.aliyun.com
ntpdate ntp5.aliyun.com
ntpdate ntp6.aliyun.com
3.将系统时间写入硬件时间
hwclock --systohc
4.使用date命令查看Centos时区
date -R
5.查看系统的硬件时间,即BIOS时间
hwclock -r
6.修改Centos的时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime -R
7.Centos系统修改BIOS硬件时间
hwclock -w
三、安装dotnet
#注册 Microsoft 密钥。注册产品存储库。安装必需的依赖项。
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
#安装 .NET Core 运行时
sudo yum -y install dotnet-sdk6.0
#查看Dotnet 版本信息,可能需要重启生效,需要exit退出root运行才有效,否则会找不到命令
dotnet --info
四、安装MySQL
1、下载安装包
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
2、未安装wget的同学执行以下命令安装
sudo yum install wget
3、安装
sudo rpm -ivh mysql57-community-release-el7-8.noarch.rpm
sudo yum install mysql-server --nogpgcheck
参考:https://blog.csdn.net/lizy928/article/details/82531749
五、CENTOS7 安装telnet
参考:https://www.cnblogs.com/suni/p/11528480.html
六、CentOS7防火墙放行或限制指定IP和端口(firewall)
1、手动启动/停止/重启firewalld.service服务
2、展示当前配置的firewall规则
firewall-cmd --list-all
3、端口(端口段)的查询/开放
4、生效
firewall-cmd -- reload
参考:https://www.cnblogs.com/zmqcoding/p/14700374.html
七、安装ftp服务
1、安装vsftp
yum -y install vsftpd
2、修改配置文件
vi /etc/vsftpd/vsftpd.conf
保证下面3项为YES anonymous_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES
3、设置vsftpd开机启动
systemctl enable vsftpd.service
4、启动并查看vsftpd服务状态,systemctl启动服务成功不会有任何提示,绿色的active表示服务正在运行
systemctl start vsftpd.service
systemctl status vsftpd.service
本地验证ftp是否可以正常访问
1、安装ftp
yum -y install ftp
2、使用anonymous登陆,无需密码
ftp localhost
八、安装自定义服务
1、CentOS7利用systemctl添加dotnet后台服务 vim /usr/lib/systemd/system/WCSConfigServer.service 解析:WCSConfigServer.service是不存在的文件,此句话是创建这个服务文件,服务名就是WCSConfigServer.service ==> 即WCSConfigServer 2、vim /usr/lib/systemd/system 代表创建的是系统服务,vim /usr/… 有一个代表是创建用户服务还是本地服务啥的忘记了 3、在WCSConfigServer.service 文件中添加以下内容:
[Unit] # 服务描述,随便写 Description=WCSConfigServer system service # 描述服务的类别 After=network.target [Service] WorkingDirectory=/home/qiesR/WCS_Publish/WCS_Server/WCSConfigServer # forking代表是后台运行服务,simple:主线程运行,一般用于shell下运行在前台的程序,oneshot:一次性进程 Type=forking # 启动当前服务的命令 # 有的教程写的是/usr/share/,具体看dotnet在哪个文件夹下,用命令dotnet --info 可以查看 ExecStart=/usr/share/dotnet/dotnet /home/qiesR/WCS_Publish/WCS_Server/WCSConfigServer/WCSConfigServer.dll Restart=always # 重启间隔时间 RestartSec=3 # 重启当前服务时执行的命令,应该是固定写法 ExecReload=/bin/kill -s HUP $MAINPID # 停止当前服务时执行的命令,应该是固定写法 ExecStop=/bin/kill -s TERM $MAINPID [Install] WantedBy=multi-user.target
4、设置开启启动 systemctl enable WCSConfigServer 5、常用命令 systemctl start WCSConfigServer systemctl stop WCSConfigServer systemctl status WCSConfigServer 6、自动挂断重启Bug Job for WCSConfigServer.service failed because a timeout was exceeded 执行 systemctl start xxxx.service 出现这个错误,就是执行对应的脚本时间太长,时间到了,就直接结束了进程 借助“bash -c”,bash -c的作用是将一个长字符串当做一条完整的命令来执行,如果在脚本路径后面加上后台运行符号(&),脚本就会在后台运行,不会一直处于挂起状态,systemd也就不会一直等待run.sh执行完成了 Old: ExecStart=/usr/share/dotnet/dotnet /home/qiesR/WCS_Publish/WCS_Server/WCSConfigServer/WCSConfigServer.dll New: ExecStart=/bin/bash -c "/usr/share/dotnet/dotnet /home/qiesR/WCS_Publish/WCS_Server/WCSConfigServer/WCSConfigServer.dll &" 7、卸载服务 1)、确认是否安装 rpm -qa | grep nginx 2)、停止服务 systemctl stop nginx 3)、卸载服务 yum erase nginx
参考: 1、https://www.cnblogs.com/YrRoom/p/11761980.html 2、https://blog.csdn.net/ichen820/article/details/105764191
注:不同环境的区别
public static string GetResponseString(HttpWebResponse webresponse) {
//linux环境 try { using (Stream s = webresponse.GetResponseStream()) { Stream stm = new System.IO.Compression.GZipStream(s, System.IO.Compression.CompressionMode.Decompress); StreamReader reader = new StreamReader(stm, Encoding.UTF8); return reader.ReadToEnd(); } } catch (Exception ex) { LogHelper<HttpHelper>.Error("GetResponseString:" + ex.Message); } return null; //Windows环境下 // try // { // using (Stream s = webresponse.GetResponseStream()) // { // StreamReader reader = new StreamReader(s, Encoding.UTF8); // return reader.ReadToEnd(); // } // } // catch (Exception ex) // { // LogHelper<HttpHelper>.Error("GetResponseString:" + ex.Message); // } //return null; }
public void httpServer(string url, string postData, string type) { List<ConfigPostModel> configPostModelList = new List<ConfigPostModel>(); var request = (HttpWebRequest)WebRequest.Create(url); var data = Encoding.UTF8.GetBytes(postData); request.Method = "POST"; request.ContentType = "application/json;charset=UTF-8"; request.ContentLength = data.Length; //request.KeepAlive = true; using (var stream = request.GetRequestStream()) { stream.Write(data, 0, data.Length); } HttpWebResponse response; response = (HttpWebResponse)request.GetResponse(); string apiRtn = ""; if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { // Windows 相关逻辑 apiRtn = new StreamReader(response.GetResponseStream()).ReadToEnd(); } else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { // Linux 相关逻辑 using (Stream s = response.GetResponseStream()) { Stream stm = new System.IO.Compression.GZipStream(s, System.IO.Compression.CompressionMode.Decompress); StreamReader reader = new StreamReader(stm, Encoding.UTF8); apiRtn = reader.ReadToEnd(); } } configPostModelList = JsonConvert.DeserializeObject<List<ConfigPostModel>>(apiRtn); if (type == "JTUpload") { _configModel.ConfigPostModelList = configPostModelList; } if (type == "Com") { _commonConfigModel.ConfigPostModelList = configPostModelList; } }