IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> ubuntu 20.04.4 安装部署django应用记录(踩坑,再踩坑) -> 正文阅读

[系统运维]ubuntu 20.04.4 安装部署django应用记录(踩坑,再踩坑)

1、安装ubuntu

经过测试网易云下载速度最快,地址如下:

网易云 ubuntu 镜像地址

2、安装ubuntu

ubuntu 20.04.4 server 安装详解

文章后面14节提到了要设置账号密码信息,记得修改

3、更新 ubuntu 软件源,推荐清华镜像站,写的很清楚

清华 ubuntu 软件源地址

4、更新可安装软件包,及更新已安装软件版本

sudo apt-get update
sudo apt-get upgrade

5、安装 net-tools?

系统默认没有安装net-tools,因此无法使用ifconfig,需要手动安装

sudo apt install net-tools

6、修改固定IP地址

这里可以参考我之前记录的过程,时隔多年,依然是一把过

ubuntu 20.04 设定固定IP地址碰到的坑

7、安装ssh

如果安装的时候忽略了ssh的安装,这里需要再安装下,很简单

sudo apt install ssh

8、测试ssh

ssh username@192.168.31.250

username 需替换成安装系统时的用户名,后面的IP地址已ifconfig查到的为准

回车后输入密码即可登录系统

* 阿里云等服务器需开防火墙端口。

9、测试 SFTP

服务器远程管理,windows用xshell secureCRT,在macos环境提供一个利器transmit,不用任何设置,即可上传成功。

10、修改 pip3 源

cd
mkdir .pip
vim ~/.pip/pip.conf

# 将下列内容拷贝到文件中

[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com

?==========? ?至此 ubuntu 部分安装完毕? ?==========

10、安装、测试nginx

sudo apt install nginx

安装后用用浏览器访问? xxx.xxx.xxx.xxx即可访问,看到下方图片即表示安装成功,nginx主要为开机启动且提供不间断网络访问的伺服程序

11、安装、测试 django

# 安装django
pip3 install django

# 测试django
cd
django-admin startproject django_test
cd django_test
python3 manage.py runserver

如果出现了下面图片即表示安装成功。

*这时还不能网络访问,因为没有打开允许IP地址的选项,因为是linux没有界面,本机也无法看到状态,具体修改内容另发文再记录。

12、安装、测试 uwsgi

# 安装uwsgi
sudo apt install uwsgi

uwsgi --http :8000 --wsgi-file ./django-admin/wsgi.py

如果没有报错,就应该能访问到刚才和django默认页面一样的页面了

* 我在自己装的服务器上安装uwsgi就会出现打不开,找不到路径的情况,在阿里云的服务器上就有一个较长时间的编译过程,我把图截下来了

在我自己的设备上则是下面的界面,我还特意卸载和重安装了,但没有 building wheel for uwsgi的部分。

?最后找了一些文章通过源码安装解决了这个问题,不知道会不会下次还遇到这样的问题,大家可以自行搜索学习,这个问题以后装机再考虑解决吧

uwsgi 源码安装

?==========? ?至此 程序安装完成? ?==========

13、? nginx + uwsgi + django 联调

这个问题困扰了我很久,因为一直在学习编程序就没太重视,后来程序编辑的差不多了,看了很多文章说这块,总是感觉很困难,这里调试我的一个应用,终于成功了,耗时10小时,在这里记录下。

13.1、NGINX

nginx是这里最简单的部分,nginx目录如下,默认系统安装好的时候调用的是default的解释文件,

/etc/nginx/sites-available/default

这个文件里只有基本配置,如果正常上线部署应该是在

/etc/nginx/conf.d目录里新建配置文件,默认的则失效(个人理解没有验证)

因此default是最简配置,方便学习,我把default里的所有注释去掉,内容如下:

server {
	listen 80 default_server;
	listen [::]:80 default_server;

	root /var/www/html;

	index index.html index.htm index.nginx-debian.html;

	# server_name 127.0.0.1 202.xxx.xxx.xxx;

	location / {
		try_files $uri $uri/ =404;
		# include /etc/nginx/uwsgi_params;
		# uwsgi_pass 127.0.0.1:8010;
	}

}

这里我解释下各个模块的意思:

server:核心模块,相当于一个虚拟主机,因此可以有多个虚拟主机
listen:为监听的端口,上面为 ipv4 的端口,下面为ipv6的端口
root:为访问时提供的目录,这个目录里有nginx的默认页面
index:为接受访问的文件名(这个没有验证,也没有改)
server_name:我看说明说写127.0.0.1 以及外网IP地址,反正是没报错,这块是后来修改的
location:是执行的一些参数,默认体用的是404的访问处理

加# 注释的三句是我后来添加的,IP地址就不说了

include /etc/nginx/uwsgi_params;? 这句话说明要加载nginx自带的uwsgi的解释器,装NGINX的时候就有,就在/etc/nginx/目录下,相当于开启了nginx转发到uwsgi的解释通道;

uwsgi_pass 127.0.0.1:8010? 是uwsgi内网监听的接口,uwsgi通过ini方式启动的时候,端口只为内部服务,这时nginx相当于把80接口的对UWSGI的访问全转发到127.0.0.1:8010,这个地址上,实现了对于python程序的解释转发;

把 # 注释的部分放开就相当于nginx调试完毕,这时再访问80端口则出现下面的页面:

这个表示nginx启动了,但是转发请求被拒绝或没有响应了,因为uwsgi还没有配置,这就是正确的反馈。

?13.2、uwsgi

这块就是坑了我将近10个小时的地方,我分别在根目录下将我开发的软件和一个django的默认初识环境放在一起测试

django_test? ? ? ? 是初始应用
api_2? ? ? ? ? ? ? ? 是我编写的应用

1、在两个目录下执行启动命令均可看到界面

????????python3 manage.py runserver 0.0.0.0:8000

2、使用uwsgi启动

uwsgi --http :8020 -w api_2.wsgi
uwsgi --http :8020 -w django_test.wsgi

也是June可启用,只是api_2失去了对静态文件的解析

3、使用 ini 方式启动

这里是卡了最长的时间,django_test 一下就成功了,配置如下:

[uwsgi]
socket = :8010
chdir = /root/django_test
module = django_test.wsgi
master = true
pythonpath = /usr/local/lib/python3.8/dist-packagese
processes = 3
buffer-size = 65536
vacuum = true

socket:是监听内部从nginx发过来的端口请求,如果是从外网访问会显示500错误,我卡这里好久,明明收到了请求,为啥不返回信息呢,后来看了很多文章才发现,之前的启动命令?uwsgi --http :8020 -w api_2.wsgi 是响应http协议对8020端口的访问请求,ini文件是socket = :8010,只响应接口的请求,所以不对外网访问,这个事终于明白了;

chdir:启动路径,因为django里的项目名和默认应用名称是一样的,因此chdir截止在项目名称

module:是模块名称,也是项目启动的uwsgi.py文件,所以是项目名称+启动文件的形式;

pythonpath:是查了很多文章说同时安装2.x和3.x会冲突,就写了个路径;

其他素材都可以查到就不说了,启动 uwsgi --ini django_test.ini

成功启动!!!

但是同样的配置放在api_2上就不行了

无论怎么调模块都不行,踩的坑包括路径有问题,直接指定wsgi.py的启动绝对路径,最终实际上只改了一句话,因为我编写的应用里有很多应用名称,所以要标明,有的文章提了这个问题,但因为各种场景不理解,没有想到,最终终于成功了。

[uwsgi]
socket = :8010
chdir = /root/api_2
module = api_2.wsgi:application
master = true
pythonpath = /usr/local/lib/python3.8/dist-packagese
processes = 3
buffer-size = 65536
vacuum = true

就是这句:module = api_2.wsgi:application

至此? uwsgi --ini api.ini 一键启动,访问成功

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 13:35:20  更:2022-03-06 13:36:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:43:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码