Docker布署Django框架外贸网站实操(二配置uWSGI + nginx)

news/2024/5/11 17:03:26/文章来源:https://blog.csdn.net/alal001/article/details/98361550

上线布署是一件比较复杂的事,要做安全高速不浪费资源不比写一个APP式网站简单,本例在编程阶段采用的是Django 和SQLite数据库,SQLite在编程测试时应用是很方便的,但在正式项目中往往不会采用。对于较大项目往往有多个环境,编写时的本机环境,上线前的测试环境,以及正式应用环境。需要在Django代码的settings中做相应配置。所以Docker的优势就出来了,我们只需要让测试环境和正式环境一样就方便多了。这里省略了settings的配置过程(正式项目代码就不贴了)。

原创文章,版权所有。未经许可,严禁转载。

项目简单布署

pull下来的系统已带Python3.6,就不用安装了。start容器(如图)后,在DOCKER内无需sudo ,国外源慢就换源vim /etc/apt/sources.list

deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe

1.apt update
2.apt upgrade

在这里插入图片描述

3.上传项目文件到容器内:
docker cp abc {容器ID}:/home/

4.批量安装django等依赖库,可以在本地项目内用pip3 freeze > plist.txt导出,也可以找到requirements.txt文件来安装。这个版本Python自带pip3(编译版本好像都自带)。

pip3 install -r plist.txt

5.进入上传文件目录测试一下:

python3 manage.py runserver 0:8880

6.现在可以启动浏览器输入docker容器的IP测试一下,浏览器可能会提示出错。因为没有配置Django的接受IP。不过只要有反应就表示正常了。如图:

在这里插入图片描述

7.修改上传项目内的settings文件,ALLOWED_HOSTS = ['*']。现在就可以正常访问了,不过还是使用了Django做服务器。

8.安装uwsgi,本映像自带一个,好像有点问题,用uwsgi --plugins-list竟然找不到插件,所以我删除重装了pip3 install uwsgi,如果没有编译器就装一下apt install build-essential

9.可以通过命令来试一下 uwsgi工作是否正常,浏览器能正常显示网站。

uwsgi --http :8000 --wsgi-file abc/wsgi.py

测试是否正常,发现有些依赖没装(写代码时直接复制进项目环境内的),补上后一切正常。

apt install rabbitmq-server
rabbitmq-server    #  启动rabbitmq-server
celery -A abc worker -l info    # 启动celery

10.这种运行方式显然不科学,给uwsgi写个配置文件,就写在abc根目录下vim uwsgi.ini,配置成 sock方式:

[uwsgi]
# configuration
master = true    # 主进程
chdir = /home/abc    # 工作目录
module = abc.wsgi:application    # 模型APP
wsgi-file = /home/abc/wsgi.py    # Django的wsgi
# plugin = python    # 已有
socket = /home/abc/abc.sock    # sock 文件
processes = 4    
threads = 2    
buffer-size = 65535
pidfile = /tmp/abc-master.pid    # 使用uwsgi  --stop(reload) /tmp/abc-master.pid
uid = 1000
chmod-socket = 666    # 改变权限,可能664也行
daemonize = /home/abc/uwsgi.log    

11.如上配置是不能直接使用的。需要Nginx代理才行:

apt install nginx    # 安装
# nginx.conf     # 编辑配置
# the upstream component nginx needs to connect to
upstream abc {    # 建立abc的upstream,指定uwsgi名称,与上面配置同名sockserver unix:///home/abc/abc.sock;# server 127.0.0.1:8880;    # 测试}
# configuration of the server
server {    # 服务器配置listen 80;server_name www.abc.com abc.com;charset utf-8;# max upload sizeclient_max_body_size 75M;# django medialocation /media {     # 媒体文件,注意路径#       /home/abc/media;alias /home/abc/media;}location /static {    #  静态文件alias /home/abc/static;}location / {    # 注意uwsgi_params文件路径,将/下的URL转发给upstream即uwsgi的sockinclude /home/abc/uwsgi_params;    uwsgi_pass abc;}}

建立一个链接ln -s /home/abc/nginx.conf /etc/nginx/sites-enabled/abc.conf

11.如上配置应该就能通过域名打开网站了,本地测试注意域名服务,可配置HOSTS来做类似DNS。静态文件可能不加载,需要收集一下。编辑 settings文件,添加
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
顺便更改下:
DEBUG = False
ALLOW_HOST = ['abc.com', 'www.abc.com']
python3 manage.py collectstatic

12.停止docker重新启动后运行rabbitmq、celery、uwsgi、nginx如下:
在这里插入图片描述

13.测试后session 存取有问题,要改SESSION_ENGINE的配置,完成后如图:
在这里插入图片描述
在这里插入图片描述
14.下一步还要将数据库换成mysql或postgresql,自带的SQLite效率太低,访问量不大倒也可以,还省资源。还可以再单独做一个nginx代理服务,以便为多个站服务。节约IP资源。现在很多浏览器对http不友好,上线还应该改成https…待续

原创文章,版权所有。未经许可,严禁转载。

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

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

相关文章

Docker布署Django框架外贸网站实操(三 SQLite切换PostgreSQL)

前期已经基本上完成布署工作了,下面就是优化的过程了,主要解决数据库切换、nginx代理工作。数据库和nginx都单独安装在一个docker内,万一将来项目做大做强了。升级负载均衡会非常容易。现在先在一台服务器上跑多个项目,将来用多台…

免安装、免激活,绿色版的电脑软件下载网站

转自:https://baijiahao.baidu.com/s?id1591795121454398107&wfrspider&forpc 我们平常很多时候都需要下载很多的电脑软件,但是又不知道去哪里下载,今天分享的这五个网站,相信应该对你有用。 一:zd423 htt…

大型网站系统架构演化之路

一个成熟的大型网站(如淘宝、天猫、腾讯等)的系统架构并不是一开始设计时就具备完整的高性能、高可用、高伸缩等特性的,它是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架…

UbuntuBSD 官方网站正式上线

在今年3月12日上线之后,ubuntuBSD项目(整合FreeBSD核心和Ubuntu Linux)赢得了很多用户的关注,项目创始人Jon Boden甚至希望在未来成为官方Ubuntu项目或风格(Flavor)。今天,Boden再次发布好消息该…

linux企业实战----大型网站架构概述

目录标题 1. 网站架构演化发展历程2. 使用缓存服务器改善网站性能3. 使用应用服务器集群改善并发处理能力4. 数据库读写分离5. 使用反响代理和cdn加速网站响应6. 使用分布式文件系统和分布式数据库系统7. 使用nosql和搜索引擎8. 业务拆分9. 分布式服务 1. 网站架构演化发展历程…

python爬取网站文本格式数据保存到postgresql数据库

通过自学两周在工作中用python写的一个应用,主要是获取网站txt格式的数据,插入到postgresql数据库中,由于网站txt格式数据每日更新,结合windows的计划任务或Linux的crontab计划来实现每日更新数据的要求。 源格式如下:…

使用apache服务部署静态网站--初篇

1、将镜像挂载到本地 2、创建本地yum源 目录和文件格式懂得都懂 3、检查yum源并下载httpd服务 重启httpd并开机自启 4、将你想要的网页内容写入/var/www/html/index.html 5、检验一下,用系统自带浏览器访问本地网口127.0.0.0

大型网站应用之海量数据和高并发解决方案总结

一、网站应用背景 开发一个网站的应用程序,当用户规模比较小的时候,使用简单的:一台应用服务器一台数据库服务器一台文件服务器,这样的话完全可以解决一部分问题,也可以通过堆硬件的方式来提高网站应用的访问性能&…

如何拥有一个属于自己的网站

前言 网站顾名思义就是网上的一个站点 而你打开的页面就是一个站点上的一个一个文件。那就有人问了,我有一台可以上网的计算机可不可以当站点用呢?答案是肯定的 通俗点来讲就跟你平时串门一样 这家门开着你就可以进去 但是现在计算机日益发展强大 家…

Java开发网站项目系统架构的演变

简单梳理一下 从古到今(?)项目架构的变化并阐述相应原理 一、单体应用架构(All-In-One) web项目最早期的使用,也应用于现在一些很小简单项目,将所有的应用,数据库,文件作…

实战检测北大青鸟某地方学校网站

本文写的是一次曲折的拿北大青鸟某地方学校网站shell的过程。 之前也曾拿过一个北大青鸟某网站的文章,我再次萌生了我个北大青鸟的网站练练手的想法。其实以前我也尝试过检测了几个北大青鸟地方学校的网站,简单看了下没有注入漏洞没有弱口令就放弃了。看…

为不同类型的网站选择最佳的SSL证书(上)

“根据CBS数据分析,2014年,47%美国成年人的个人信息被黑客窃取,大部分主要是通过大公司的数据泄露。如Home Depot,Yahoo和Chase。事件爆发之后,占据57.94%浏览器市场的谷歌迅速启动HTTPS相关的协…

游戏中学会写代码:这些编程学习网站不容错过

下面这些网站是从 200 多个游戏编程网站选出的 12 个网站,你可以通过下面的网站在游戏中学习编程。 当然这些网站都是免费的,Mybridge A.I 也评估了这些,这些网站可以帮助喜欢编程的人员学习编程语言,如 JavaScript、java、python…

WebRTC相关技术网站

------------------------------------------------------------- 1,http://www.webrtc.org,需FQ,webrtc官网,神马编译下载,这里的解决方案才是最权威的. 2,基于webrtc封装的一些开源库: 2.1,https://…

【转】浅谈大型网站动态应用系统架构

动态应用,是相对于网站静态内容而言,是指以c/c、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。 大型动态应用系统…

WAMP搭建本地环境并安装WordPress网站(图文指导)

零基础搭建PHP本地环境并安装WordPress网站(图文指导) 建PHP本地环境前言 以前在大学课堂上学过一点JAVA, PHP. 因为那时是零基础,需要自己搭建APACH, MYSQL, PHPADMIN过程挺烦的,本地环境都不知道是啥,但是做出来结果…

Wordpress免费主题装修网站(简洁高端主题)

搭载好了本地环境,安装好wordpress并测试OK,即使自己是建站方面的“半吊子”但也不能半途而废,我必须得选一个好的主题来装饰我的网站啊,毕竟运营推广再怎么厉害也要产品好。 安装好的wordprss里已经默认有3个主题了,…

【外贸狗】外贸网站5大基本WordPress插件推荐(2019)

(这是外贸狗第三篇文章,与前面两篇Wordpress建站文章衔接) 网站装修好了,但是很多细节,很多功能都不能满足,例如我自己是做SEO出来的,所以有些SEO标签没有做好,我自己会觉得很膈应。…

【外贸狗】外贸WordPress网站SEO优化基础设置

做好了网站,选好了主题,配备了必备插件,基础SEO怎么设置才能避免后面经常改动基础设置,导致关键词排名降低,页面收录消失等问题呢? 对于外贸建站老鸟来说,他们装备了插件Yoast SEO的时候&#…

外贸B2B网站如何做Google SEO获取流量?

B2B品牌网站通过Google SEO获得自然流量是所有外贸网站的共同目标,因为B2B网站转化最高的来源渠道是自然流量。 对很多外贸狗来说B2B网站通过关键词获得排名很难,不管是你的服务或者产品都很少,关键词很集中,竞争对手多等等造成关…