在实际开发中我们难免会遇到想将自己的网站或者服务器给别人使用的情况,这时候就需要使用到服务器了,但是自己写的服务器程序只能在你的电脑本地局域网中跑,如何将你写的服务器部署到云端服务器就是本文要介绍的内容,这里将会从购买服务器和最终部署上线一步一步带你制作一个简单的测试服务器。

1.需要使用到的软件

一台服务器(阿里云)

本地准备服务器测试代码(服务器测试代码)

WinSCP(用于将运行文件上传到服务器)

网络调试助手(用于测试服务器是否能够正常访问)

2.购买服务器(或者白嫖一个)

登录阿里云并点击左上角的一个菜单按钮并找到云服务器ecs

点击服务器试用

 3.编写服务器测试程(控制台应用)

using System.Net;
using System.Net.Sockets;
using System.Text;

namespace WangluoFuwuQi
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Socket mysocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            IPEndPoint myPoint = new IPEndPoint(IPAddress.Any, 8888);

            mysocket.Bind(myPoint);
            mysocket.Listen(128); // 队列调大一点

            Console.WriteLine("服务器启动成功");

            while (true)
            {
                Socket clientSocket = mysocket.Accept();
                Console.WriteLine("客户端连接:" + clientSocket.RemoteEndPoint);

                // 设置接收超时:1分钟
                clientSocket.ReceiveTimeout = 60000;

                try
                {
                    while (true)
                    {
                        byte[] myBuff = new byte[1024];

                        int recNum = clientSocket.Receive(myBuff);

                        // 客户端关闭连接
                        if (recNum == 0)
                        {
                            Console.WriteLine("客户端断开连接");
                            break;
                        }

                        string recStr = Encoding.UTF8.GetString(myBuff, 0, recNum);

                        Console.WriteLine("收到客户端消息:" + recStr);

                        byte[] data = Encoding.UTF8.GetBytes("你好世界");

                        clientSocket.Send(data);

                        if (recStr == "exit")
                        {
                            Console.WriteLine("客户端主动退出");
                            break;
                        }
                    }
                }
                catch (SocketException ex)
                {
                    // 超时或异常
                    if (ex.SocketErrorCode == SocketError.TimedOut)
                    {
                        Console.WriteLine("客户端1分钟未发送数据,自动断开:" + clientSocket.RemoteEndPoint);
                    }
                    else
                    {
                        Console.WriteLine("客户端异常断开:" + clientSocket.RemoteEndPoint);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("服务器错误:" + ex.Message);
                }
                finally
                {
                    clientSocket.Close();
                }
            }
        }
    }
}

右键解决方案  

添加发布配置文件

    

发布到文件夹

  

  

 选择目标路径

这样就是创建成功了

  

点击显示所有设置

  

按照这张图的参数配置参数(这里主要是为了发布成单个运行文件不然传统的发布文件夹里面有很多东西需要把整个文件夹发到服务器才能运行,这样打包出来的文件会将依赖文件一并打包到运行文件中之后放到服务器就能运行了),因为服务器大多是Linux的所以这里xuyao

  

点击发布

  

这样就是发布成功了

  

记住我们发布文件的位置

  

4.下载WinSCP

WinSCP :: Official Site :: Free SFTP and FTP client for Windows

下载完成的图标

在阿里云中找到我们的服务器(记录下公网的Ip地址)

启动SCP并登录(主机名就是公网IP,用户名字默认是root,密码是你设置的服务器密码,如果没有密码可以去设置一个)

登录成功了直接把我们刚刚发布的文件拖到root文件夹下面然后就行了。

5.下载网络调试助手

软件下载-野人家园-物联网技术专家平台

6.服务器启动程序

进入阿里云的控制台

创建防火墙模板,不然我们刚刚设置的端口是访问不到的。

点击创建模板

点击一键放通

点击创建模板

添加8888端口

创建完毕后点击应用到实例

弹出这个说明执行成功了

点击远程连接服务器

输入sudo su 切换管理员用户

输入cd /root切换到root文件夹

输入ls查看当前文件夹下的文件,如果能显示我们刚刚上传的文件就说明没问题

//这里差一嘴(如果第一次使用的时候需要先执行这个命令,不然一般是没有权限运行的,这是博主写教程的时候发现的所以就没截图了),每次新上传了运行文件都需要手动加权限才能执行。

chmod +x WangluoFuwuQi

、、、、、、、、、、、这里假装有图片、、、、、、、、、、、

nohup ./WangluoFuwuQi > server.log 2>&1 &  //启动服务器并后台运行(这样就算退出控制台程序依旧能够运行)

ps -ef | grep Wangluo //查看进程。这个指令的意思是查看名字中带有Wangluo的进程如果显示下面这样说明启动成功了

7.验证服务器是否正常启动

启动网络调试助手并选择TCP连接,远程服务器地址填自己购买服务器的公网IP,端口填我们服务器代码里面的8888。

点击链接,如果这里返回一串数字说明连接成功了。

点击发送技能看到服务器给我们返回了“你好世界”。

8.总结

      其实很早之前就想把自己写的东西部署到服务器上了,但是搜索了很多教程都是在教你怎么购买服务器根本不是我想的那种能够自动监听别人发给我端口的数据,然后我自己处理并返回数据这种。后面由于工作中用到了大量网络相关的内容并结合AI终于把整个流程跑通了。为了防止自己以后忘记也为了分享经验所以写了这篇文章,希望对大家有所帮助。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐