服务器部署_阿里云服务器部署后显示Internal Server Error

问题描述:

Internal Server Error

 原因分析:

重新查看nginx和uwsgi配置,再次重启nginx和uwsgi,发现还是一样的状况,但是访问项目的静态文件时成功的,查看uwsgi中设置的log文件

Traceback (most recent call last):
  File "./dailyfresh/wsgi.py", line 16, in <module>
    application = get_wsgi_application()
  File "/zt_dailyfresh/dailyfresh_env/lib/python3.6/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
    django.setup(set_prefix=False)
  File "/zt_dailyfresh/dailyfresh_env/lib/python3.6/site-packages/django/__init__.py", line 19, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "/zt_dailyfresh/dailyfresh_env/lib/python3.6/site-packages/django/conf/__init__.py", line 79, in __getattr__
    self._setup(name)
  File "/zt_dailyfresh/dailyfresh_env/lib/python3.6/site-packages/django/conf/__init__.py", line 66, in _setup
    self._wrapped = Settings(settings_module)
  File "/zt_dailyfresh/dailyfresh_env/lib/python3.6/site-packages/django/conf/__init__.py", line 157, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named 'settings_production'
unable to load app 0 (mountpoint='') (callable not found or import error)

 找到原因。项目的wsgi.py文件中settings引用错误,修改后重新启动uwsgi,遇到这个问题,不多说找到代码直接注掉

 load_backend
    return import_module('%s.base' % backend_name)
  File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/zt_dailyfresh/dailyfresh_env/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 36, in <module>
    raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

注掉后重启uwsgi(还有个地方将decode修改为encode的),

查看uwsgi的日志文件,明白了,当时使用了jieba分词器,修改了haystack底层代码,额外建了一个文件并没有上传到服务器上。

  File "/zt_dailyfresh/dailyfresh_env/lib/python3.6/site-packages/haystack/query.py", line 29, in __init__
    self._determine_backend()
  File "/zt_dailyfresh/dailyfresh_env/lib/python3.6/site-packages/haystack/query.py", line 62, in _determine_backend
    self.query = connections[backend_alias].get_query()
  File "/zt_dailyfresh/dailyfresh_env/lib/python3.6/site-packages/haystack/utils/loading.py", line 109, in __getitem__
    self.thread_local.connections[key] = load_backend(self.connections_info[key]['ENGINE'])(using=key)
  File "/zt_dailyfresh/dailyfresh_env/lib/python3.6/site-packages/haystack/utils/loading.py", line 60, in load_backend
    return import_class(full_backend_path)
  File "/zt_dailyfresh/dailyfresh_env/lib/python3.6/site-packages/haystack/utils/loading.py", line 27, in import_class
    module_itself = importlib.import_module(module_path)
  File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named 'haystack.backends.whoosh_cn_backend'

 上传相关文件后,访问服务器ip

还有个问题,我的数据库还没有建表,建表后。

 decode修改为encode

\lib\site-packages\django\db\backends\mysql\operations.py”, line 146, in last_executed_query   
query = query.decode(errors=‘replace’)   
AttributeError: ‘str’ object has no attribute ‘decode’ 

 成功。

 

### 实现图片上传至云服务器并获取URL或存储路径 #### 图片上传流程概述 为了实现图片上传到云服务器并获得相应的访问链接,整个过程涉及多个环节。首先,客户端发送带有图像数据的请求给服务端;随后,服务端接收该请求并将接收到的数据保存于特定位置——这里指代的是云端存储空间内,并按照一定规则命名文件以便后续检索使用[^1]。 #### 构建Java Web应用处理图片上传逻辑 针对基于Java构建的应用程序而言,在完成基本的HTTP POST方法配置之后,重点在于如何有效地管理已上传的内容以及提供安全可靠的下载途径。一种常见做法是在Spring框架环境下利用`MultipartFile`对象来解析来自表单提交的大文件流,再借助第三方库(如阿里云OSS SDK)执行实际的对象存取操作[^2]。 ```java @RestController @RequestMapping("/api/image") public class ImageUploadController { @Autowired private OSSClient ossClient; @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public ResponseEntity<String> uploadImage(@RequestParam("file") MultipartFile file){ try { String fileName = System.currentTimeMillis() + ".jpg"; PutObjectResult result = ossClient.putObject( "your-bucket-name", "images/" + fileName, new ByteArrayInputStream(file.getBytes()) ); // Generate URL with expiration time (e.g., one day from now). Date expiration = new Date(System.currentTimeMillis() + 86400 * 1000); URL url = ossClient.generatePresignedUrl("your-bucket-name","images/"+fileName,expiration); return ResponseEntity.ok(url.toString()); } catch (Exception e) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage()); } } } ``` 此段代码展示了怎样通过RESTful API接受多部分格式的POST请求,从中提取出待处理的照片资料,接着调用OSS客户端API将其放置入目标bucket下的指定子目录中去。与此同时,还生成了一个预签名直链供外部调用者查看/下载所传来的素材副本。 #### Docker环境特殊注意事项 当采用Docker容器化技术部署应用程序时,需要注意宿主机与容器之间的资源共享机制。由于默认情况下容器内部无法直接读写物理机上的任意磁盘区域,因此如果计划让运行在其中的服务能够正常地对外部共享静态资源,则必须显式声明卷映射关系,即告诉引擎哪些本地路径应该被暴露给对应的实例可见和可用[^3]。 例如,在启动命令行里加入如下选项: ```bash -v /path/on/host:/mnt/data ``` 这表示将主机侧的某个绝对地址挂载到了名为`data`的工作区内,从而允许后者内的进程自由操纵前者里的实体文件夹及其内容物。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值