难用的服务器配置Django

这是一则自己的使用记录,怕以后自己使用的时候忘了,一般人可能不会碰到这个问题吧,对其他人可能没有帮助,就是顺便吐槽学校难用的服务器给人添这么多麻烦。

忙毕设需要用到服务器,找学长找老师好不容易要来了一个账号使用学院的服务器,关于这个服务器使用平台是外面一个公司设计的,不稳定、容易崩、使用之前麻烦的配置这些暂且不提,重新安装基础环境、一个个包python包多麻烦,就在我部署了我的Django项目在服务器上,我想本机使用浏览器使用,这麻烦多了。

服务器激活自己的anaconda环境,打开runserver也是正常,按照之前使用云服务器的经验就是将服务器ip地址填入再加上端口号就能使用了,但是我这边浏览器就是进不去。

刚开始使用8000端口的时候,网页报错给我这个信息

{"message":"no Route matched with those values"}

百度搜到的怎么都是nginx相关,我的天我都不知道这是干嘛用的,搜不到和Django相关的内容。后面改了端口号,还是不行,变成了服务器拒绝访问。可能不是端口的问题,设置文件去改了,ALLOWED_HOSTS = ['*',],地址使用0.0.0.0,是服务器防火墙的问题吗?防火墙相关命令又使用报错,我这系统用的什么防火墙,又发现我拿了个账号就用,连是什么系统都一无所知。后面搞半天才知道服务器没装防火墙。

那这玩意怎么就连不上呢,但是试了能拼通。后面登陆我的账号,发现有这样一个功能,端口映射,可能就是我要找的。

 进去,填了8000的端口号

 好家伙,给我创建了一个映射。

我还是各种查找IP地址、ping,才知道是怎么使用这个映射。你在服务器输入的命令是8000这个端口,但是本地浏览器使用的时候输入的是172.22.***.**:映射端口号。

我恨,这么麻烦的步骤浪费我一下午!也许是为了安全我这等小渣渣不懂,但是能不能出个这个服务器的使用手册啊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在 Django配置 socket 服务器,你可以使用 Python 内置的 socket 模块。 首先,你需要在 Django 项目中创建一个新的应用。接下来,在应用的根目录下创建一个名为 `sockets.py` 的文件,并在其中编写 socket 服务器的代码。 你可以参考下面的代码片段,来了解如何创建一个简单的 socket 服务器: ```python import socket def run_server(): # 创建 socket 对象 serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 获取本地主机名 host = socket.gethostname() # 设置端口号 port = 12345 # 绑定端口 serversocket.bind((host, port)) # 设置最大连接数,超过后排队 serversocket.listen(5) while True: # 建立客户端连接 clientsocket, addr = serversocket.accept() print("连接地址: %s" % str(addr)) msg = '欢迎访问我的服务器!' + "\r\n" clientsocket.send(msg.encode('utf-8')) clientsocket.close() ``` 上面的代码建立了一个最大连接数为 5 的 socket 服务器,它会监听本地的 12345 端口,并等待客户端的连接。一旦有客户端连接,服务器就会向客户端发送一条欢迎信息,然后关闭连接。 你还可以在 `sockets.py` 文件中编写其他的 socket 通信代码,来实现你希望的功能。 最后 ### 回答2: 在Django配置Socket服务器需要进行以下几个步骤。 首先,需要在Django项目的settings.py文件中进行相关的配置。在`INSTALLED_APPS`中添加`django-channels`和其他可能需要的应用,同时在`MIDDLEWARE`中添加`channels.middleware.AuloadMiddleware`。接着,在文件的末尾添加以下代码: ```python ASGI_APPLICATION = '项目名称.asgi.application' CHANNEL_LAYERS = { 'default': { 'BACKEND': 'channels.layers.InMemoryChannelLayer', }, } ``` 上述代码中,`PROJECT_NAME`需要替换成您的项目名称。 然后,需要创建一个新的Python文件作为ASGI应用的入口点。在该文件中,需要导入`asgi`模块和`ProtocolTypeRouter`类,并定义一个`application`变量。 ```python import os import django from channels.routing import ProtocolTypeRouter, URLRouter from django.core.asgi import get_asgi_application from channels.routing import ProtocolTypeRouter, URLRouter from channels.auth import AuthMiddlewareStack os.environ.setdefault('DJANGO_SETTINGS_MODULE', '项目名称.settings') django.setup() from . import consumers application = ProtocolTypeRouter({ 'http': get_asgi_application(), 'websocket': AuthMiddlewareStack( URLRouter( consumers.routing.websocket_urlpatterns ) ), }) ``` 上述代码中,`PROJECT_NAME`需要替换成您的项目名称。`routing.websocket_urlpatterns`是一个指向您定义的WebSocket路由的路径。 接下来,需要在项目的文件夹中创建一个名为`consumers.py`的文件,用于处理WebSocket连接和消息的消费者。在该文件中,需要导入`async`和`channels`模块,并定义一个`WebSocketConsumer`类。 ```python from channels.generic.websocket import AsyncWebsocketConsumer class MyConsumer(AsyncWebsocketConsumer): async def connect(self): await self.accept() async def disconnect(self, close_code): pass async def receive(self, text_data): pass ``` 最后,需要在项目的`urls.py`文件中添加WebSocket路由。在该文件中,需要导入`consumers`模块,并将路由绑定到相应的消费者。 ```python from django.urls import path from . import consumers websocket_urlpatterns = [ path('ws/', consumers.MyConsumer.as_asgi()), ] ``` 上述代码中,`MyConsumer`替换为您自己定义的消费者类。然后,在项目的`urls.py`文件中包含以下代码。 ```python from django.urls import path, include from django.conf.urls import url urlpatterns = [ # ... path('', include(websocket_urlpatterns)), ] ``` 通过按照上述步骤进行配置,就可以在Django配置Socket服务器,并通过WebSocket与客户端进行实时通信。 ### 回答3: 在Django配置socket服务器的过程如下: 首先,在项目的根目录下创建一个新的Python文件,命名为`socket_server.py`。 然后,导入相应的模块,如: ```python import socket import threading from django.core.management.base import BaseCommand from django.conf import settings ``` 接下来,定义一个`Command`类,继承自`BaseCommand`,用于执行socket服务器的逻辑: ```python class Command(BaseCommand): help = 'Starts a socket server' def handle(self, *args, **options): # 获取django配置中的socket服务器主机和端口 host = getattr(settings, 'SOCKET_SERVER_HOST', 'localhost') port = getattr(settings, 'SOCKET_SERVER_PORT', 8000) # 创建socket服务器 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((host, port)) server_socket.listen(1) # 通过循环接收客户端请求 while True: client_socket, client_address = server_socket.accept() threading.Thread(target=self.handle_client, args=(client_socket,)).start() def handle_client(self, client_socket): # 处理客户端请求的逻辑 # 例如,接收客户端发送的数据,并返回处理结果 data = client_socket.recv(1024).decode('utf-8') response = self.process_data(data) client_socket.send(response.encode('utf-8')) client_socket.close() def process_data(self, data): # 处理数据的逻辑 # 例如,根据客户端发送的数据进行相应的处理,并返回处理结果 return 'Processed: ' + data ``` 最后,需要在Django配置文件`settings.py`中添加以下配置: ```python SOCKET_SERVER_HOST = 'localhost' # socket服务器的主机地址,默认为localhost SOCKET_SERVER_PORT = 8000 # socket服务器的端口号,默认为8000 ``` 这样,就可以在Django项目中配置并启动一个简单的socket服务器了。当服务器运行时,它会监听指定的主机和端口,接收客户端的请求,并根据自定义的处理逻辑进行处理返回结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值