通过WSL在阿里云上部署Django项目MySQL

前端用Vue,后端用Django, nginx,Mysql

参照:

通过WSL在阿里云上部署Vue项目_阿里云 wsl-CSDN博客

阿里云重登录

采用Ubuntu系统,

apt update
#检查是否已经安装
mysql --version  #检查是否已经安装mysql
systemctl status mysql  #检查mysql的运行状态 systemd命名。
apt install mysql-server #安装mysql

Mysql-server

在云服务器管理控制台,选择安全组,单击安全组,入方向,手工创建端口,Mysql默认使用3306端口。

#进入mysql命令行
sudo mysql

#mysql命令行,输入修改root密码.必须以;结尾。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'Mysql@1234';

#设定密码后退出
exit;
#linux下重新进入mysql。
mysql -uroot -p  #输入上面的密码可以进入。
#进入mysql不是必须项
exit; #退出mysql命令行。
#对mysql进行安全设定
sudo mysql_secure_installation
#需要按照屏幕提示进行设置。
#创建数据库 mysql命令
create database MyDjango;
#显示数据库
show databases;

 Python, Django 安装 

python3 --version
pip --version

#如有必要安装 python 和 pip(阿里云的ubuntu不需要)
sudo apt install python3
sudo apt install python-pip



### 安装Django和相关包
pip list
pip install --upgrade pip #可以不运行。
pip install django

安装Django相关网络和数据库依赖:

sudo apt install libmysqlclient-dev

pip install mysqlclient #这个命令报错。用下面的命令代替
#取代pip install mysqlclient报错的命令
sudo apt install python3-mysqldb #安装过后,在pip list 里显示mysqlclient安装完成。

pip install django-cors-headers
pip install uwsgi
 #安装过后可以同过 pip list 查询


部署Django

调整本机文档的settings.py文件,dubug 调整为 False。

使用filezilla将含有manage.py的MyDjango的目录上传到阿里云的 /home目录下。

阿里云的目录下执行 linux命令。

#数据迁移
python3 manage.py migrate
#创建超级用户
python3 manage.py createsuperuuser
#收集需要的静态资源写入/static 文件夹
python3 manage.py collectstatic


Django部署在uWSGI服务器

Django部署在uWSGI服务器可以通过配置文件完成。在MyDjango项目目录下创建配置文件uwsgi.ini. 打开文件写入内容。


vim /home/MyDjango/MyDjango/uwsgi.ini #编辑文件
cat uwsgi.ini #查看文件

#启动uwsgi服务器
 uwsgi --ini uwsgi.ini
# 这个命令并不会提出到命令行。

创建uwsgi.ini 文件所在目录

soccket=:8080 用于uWSGI服务器和Nginx服务器的通信连接。

uWSGI和Nginx通信连接通过8080端口实现,在Nginx定义配置文件django.conf

touch /etc/nginx/conf.d/django.conf
vim /etc/nginx/conf.d/django.conf

启动uWSGI, 重启nginx。

uwsgi --ini /home/MyDjango/MyDjango/uwsgi.ini --daemonize /var/log/uwsgi/mydjango.log

--daemonize (以守护进程模式运行uWSGI,日志保存在后面的文件里,没有目录的话需要新建)

systemctl restart nginx

Vue在打包时没有更改服务器地址,造成前端无法连接后端。修改.vue的访问的网址,127.0.0.1改为47.120.66.77

重新生成 dist文件。 npm run build (覆盖掉原来的dist文件)。用filezilla,删除home下的dist,更新为新的dist文件夹。

systemctl restart nginx

到此大功告成。

 

运行程序报错:

两个问题,问题一,后端无法登录, 显示502错误。 问题二,前端无法访问后端。

问题一:报错显示 47.120.66.77:8000 显示502错误 Bad Gateway.

第一步, 502 错误的意义

同时检查 5173接口和80接口正常显示。其他接口如5174 显示服务器拒绝访问。

结论:如此8000接口,服务器是准备好接受访问的。项目没有运行,没有为端口的请求准备数据。

第二步,Django项目显示端口被占用。

Django项目并没有被启动。用django的 runserver 命令启动项目。报错显示8000端口已经被使用。

用 systemctl stop nginx 后,项目可以运行 使用8000端口。

分析结论,Nginx和项目都需要运行。暂时不会使用其他端口运行Django,下一步更改Django.conf文件中的监听端口。

第三步,更改django.conf 文件, uwsgi.ini文件接口

改后文件,端口号对调一下。

结果: systemctl restart nginx 之后结果,8080显示502 bad gateway. 8000显示拒绝访问.

第四步,端口调整后,启动 Django项目

python3 /home/MyDjango/manage.py runserver

程序正常运行

结果:浏览器的8080端口 持续 502错误。 访问8080端口,python程序的terminal有报错信息。可能是uWSGI没有启动。

 第五步:端口调整为浏览器访问8080,关闭python runserver,启动uwsgi。

uwsgi --ini /home/MyDjango/MyDjango/uwsgi.ini --daemonize /var/log/uwsgi/mydjango.log

--daemonize (以守护进程模式运行uWSGI,日志保存在后面的文件里,没有目录的话需要新建)

结果: OK. 通过 47.120.66.77:8080/admin 可以登录后端。但是前端不好用。下一步,把端口8080给为5173试一下。

第六步:更改Django.conf的端口。

发现不会终止uWSGI 服务器,只能让系统整个重新启动。

更改uwsgi-ini 的端口到 8080. django.conf 端口到8000. 就是恢复到第一步的状态(后端在uWSGI服务运行的状态下是OK的。)但是前端和后端还是无法连接。

结果:不是阿里云上端口的问题了。

目前为止,问题一解决

问题一出现的原因,uWSGI服务器运行状态对nginx的干扰的原因,另外后端程序的启动不是通过“python3 manage.py runserver” 来运行的。

问题解决后的状态: 使用uWSGI服务器命令 uwsgi --ini uwsgi.ini --daemonize /../django.log 来以守护流程的方式启动 Django和uwsgi服务器。可以保证后端可用。

验证过程需要重启阿里云的服务器,并利用 systemctl status 命令来检查相关的进程状态。

uWSGI进程不会在服务器不重启的情况下停掉是一个问题点。

第七步:分析问题二,调整vue.conf, django.conf 和 uwsgi.ini 的各种端口可能性,都是前后端可以单独运行,不能互动。

本机的Vue可以访问本机的后端。

需要尝试一下本机被Vue前端是否可以访问服务器的后端。

分别更改signin.vue和product.vue中的网址 从 127.0.0.1 改为47.120.66.77

npm run dev

本机的Vue程序可以访问阿里云的数据了。 (本机和阿里云的product内容是不同的。)检查 uWSGI的log文件,有从本机访问服务器的记录(时间方面的判断)。

第八步:既然是前端的问题,就重新生成 dist文件。 npm run build (覆盖掉原来的dist文件)。用filezilla,删除home下的dist,更新为新的dist文件夹。

systemctl restart nginx

浏览器访问:5173端口,登录成功。

问题二解决

前端的服务器和端口需要调成为何服务器端的设置一致。 开发过程中后端的开发原则上应当比前端提前部署。

打包Vue项目之前,必须将Ajax的请求地址改为服务的公网IP或域名地址,否则无法向后端发送HTTP请求。

 pip install mysqlcliet 报错

pip报错,本机WSL上和阿里云上同样的问题。电脑上的问题莫名其妙的好了。阿里云上也乱试居然问题也解决了。特别验证一下解决的过程,并记录下来。

探索过程如下,重新安装阿里云系统(纯净系统)

pip install mysqlclient #安装失败。测试

重新安装linux。

用root用户。在root目录下操作。

apt update
apt upgrade

apt list libmysql*  #-dev没有安装
apt list mysql*     #Mysql-server没有安装 如下图

apt list (Mysql-server还没有安装)

apt install mysql-server

apt install libmysqlclient-dev

安装成功后,运行 pip install mysqlclient 失败。

用apt search 查找 mysqlclient 相关的linux 包。

apt search mysqlclient  # 显示如下图1,2

1,apt install 安装 相关的包,2用 pip install mysqlclent / pip list 检查测试,3不成功就用 apt remove删除对应的包。

实验到 apt install python3-mysqldb #如下图 3

安装过后,pip list 直接显示mysqlclient已经安装。

 问题解决。学到了 apt list , apt search 和 pip list. apt show , pip show

pip show mysqlclient

apt show python3-mysqldb

显示都是python Interface to MySQL.  错误的原因 mysqlclient的pip包没有更新到新版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/562427.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

List的介绍

前言~🥳🎉🎉🎉 hellohello~,大家好💕💕,这里是E绵绵呀✋✋ ,如果觉得这篇文章还不错的话还请点赞❤️❤️收藏💞 💞 关注💥&#x1…

MySQL慢查询怎么办?需要关注Explain的哪些关键字?

目录 1-引言:什么是慢查询1-1 慢查询定义1-2 为什么排查慢查询 2-核心:慢查询排查2-1 慢查询定位2-2 慢查询解决2-2-1 Explain 排查慢查询2-2-2 Explain 重点关键字 3-总结:慢查询知识点小结 1-引言:什么是慢查询 1-1 慢查询定义…

配置静态路由实现全网互通

1、实验环境 如图下所示,三台路由器R1.R2,R3两两互连,每台路由器上都配置了Loopback地址模拟网络环境。 2、需求描述 需要在三台路由器上配置静态路由,以实现各网段之间的互通。 若要实现全网互通,必须明确如下两个问…

kaggle 泰坦尼克使用xgboost 得分0.73684

流程 导入所要使用的包引入kaggle的数据集csv文件查看数据集有无空值填充这些空值提取特征分离训练集和测试集调用模型 导入需要的包 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarni…

Hive基础5

一、窗口函数 聚合,取值函数 排序函数 over(partition by 分组字段 order by 字段 row between 起始行 and 结束行) /*创建部门表*/ CREATE TABLE dept (deptno INT PRIMARY KEY,dname VARCHAR(50) comment 部门名称,loc VARCHAR(50) comment 工作地点 ); ​ /*…

2024团体程序设计天梯赛L1-101 别再来这么多猫娘了!

题目链接L1-101 别再来这么多猫娘了&#xff01; #include<iostream> #include<stdio.h> #include<string.h> #include<string> #include<algorithm> using namespace std; string s[105], text; int n, k, ans, a[5005];int main() { // ios::s…

【项目】基于JDBC+MySQL的Java教务管理系统(附源码+论文说明)

摘要 随着信息技术的不断发展&#xff0c;教育管理也在向数字化、智能化方向迈进。Java作为一种广泛应用于企业级应用开发的编程语言&#xff0c;与数据库技术的结合更是为教务管理系统的开发提供了强大的支持。 本文将介绍基于JDBC&#xff08;Java Database Connectivity&a…

短视频不够500有效粉丝怎么涨?如何涨有效粉丝?巨量千川投流怎么涨粉的?

近期&#xff0c;一些使用抖音橱窗功能的用户遇到了一个问题&#xff0c;他们在挂橱窗时会出现“有效粉丝不足500”无法正常挂橱窗的提示。这个问题是由于抖音平台改变了规则所致。现在&#xff0c;只有通过观看视频而非刷关注的粉丝才被算作有效粉丝&#xff0c;其他的粉丝都将…

39. UE5 RPG角色释放技能时转向目标方向

在上一篇&#xff0c;我们实现了火球术可以向目标方向发射&#xff0c;并且还可以按住Shift选择方向进行攻击。技能的问题解决&#xff0c;现在人物释放技能时&#xff0c;无法朝向目标方向&#xff0c;接下来我们解决人物的问题。 实现思路&#xff1a; 我们将使用一个官方的…

(CVPR,2023)SAN:用于开放词汇语义分割的边缘适配网络

文章目录 相关论文相关资料摘要引言方法对视觉 token 的特征融合使用注意力偏差进行掩码识别分割图像生成 实验 相关论文 &#xff08;CVPR&#xff0c;2024&#xff09;SED&#xff1a;一个用于开放词汇语义分割的简单编解码器 &#xff08;CVPR&#xff0c;2024&#xff09;…

python int占几个字节

《深入理解计算机系统》这本书上面提到了在32位机器和64机器中int类型都占用4个字节。《The C Programming language》这本书&#xff0c;里面有一句话是这样的&#xff1a;Each compiler is free to choose appropriate sizes for its own hardware, subject only to the rest…

https协议的加密方式详解

各位大佬能多多点赞关注评论收藏&#xff0c;球球各位大佬们了&#xff01;&#xff01; &#xff01; 目录 1.为什么要加密&#xff1f; 2.如何加密 1.密钥&#xff08;yue,第四声&#xff09; 2.对称加密 3.非对称加密 4.公证机构 3.总结 1.为什么要加密&#xff1f;…

systemverilog中位的选择

常用的变量类型就是 reg 和 wire &#xff0c;这两种类型可以定义 一位的变量&#xff0c;也可以定义多位&#xff0c;其中 1 bit 的变量称为 标量(scalar)&#xff0c;多 bit 的变量称为 向量(vector)&#xff0c;如下所示&#xff1a; wire o_nor; // singl…

【树莓派】如何刷个系统给树莓派4B,如何ssh登陆到树莓派

文章目录 下载树莓派镜像下载烧写软件烧写编辑设置连接树莓派4B重启ssh查看树莓派IPssh远程连接问询、帮助 下载树莓派镜像 https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit 下载烧写软件 https://www.raspberrypi.com/software/ 烧写 编辑…

7. Spring Boot 创建与使用

经过前面的六篇文章&#xff0c;Spring Framework的知识终于大致讲完了&#xff0c;但是Spring AOP还没提到&#xff0c;个人认为Spring AOP更适合放在Spring MVC之后再讲解&#xff0c;而讲解Spring MVC前先学习Spring Boot的目的也是为了在学习Spring MVC的时候直接使用Sprin…

EelasticSearch使用

1. Easy-ES介绍 Easy-Es 2. 导入依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions>//排除框架中原有的依赖包<exclusion><groupId>org.elast…

Vue3 + Js + Element-Plus + VueX后台管理系统通用解决方案

前言 本文是作为学习总结而写的一篇文章&#xff0c;也是方便以后有相关需求&#xff0c;可以直接拿来用&#xff0c;也算是记录吧&#xff0c;文中有一些文件的引入&#xff0c;没给出来&#xff0c;完整项目地址&#xff08;后续代码仓库放这里&#xff09; 1、layout解决方…

kaggle 纽约预测出租车价格 得分 5.34072

流程 导入所要使用的包引入kaggle的数据集csv文件查看数据集有无空值填充这些空值提取特征分离训练集和测试集调用模型 数据资源获取 数据资源获取 导入需要的包 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns引入kaggl…

基于CH32V103的多功能推杆设计

一、项目简介 “创意源于生活&#xff0c;工具始于懒惰。” 整体造型外观参考了最近比较火的夫妻游戏《双人成行》第一关里面那个吸尘器的推杆开关&#xff0c;结构中采用阻尼器/滚珠轴承等器件&#xff0c;使其非常具有质感和手感。功能上我构思不能只有电脑开关这么简单地一…

高架学习笔记之软件架构风格

目录 零、什么是软件架构风格 一、常见的软件架构风格 二、数据流风格 2.1. 批处理风格 2.2. 管道-过滤器风格 三、调用/返回风格 3.1. 主/子程序风格 3.2. 面向对象风格 3.3. 层次型风格 3.4. 客户端/服务器风格 3.4.1. 两层C/S体系结构 3.4.2. 三层C/S体系结构 …