ubuntu18+uwsgi+nginx部署django项目
更新系统软件源
sudo apt-get update
pip3安装
sudo apt install python3-pip
安装virtualenvwrapper
pip3 install virtualenvwrapper
修改.bashrc,最后面添加以下代码:
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
重新加载配置
source ~/.bashrc
创建虚拟环境
mkvirtualenv 虚拟环境名
进入虚拟环境
workon 虚拟环境名
退出虚拟环境
deactivate
安装mysql
sudo apt-get install mysql-server
安装mysql驱动 sudo apt-get install libmysqlclient-dev
设置mysql允许远程访问,方便使用navicat导入数据.首先编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉bind-address = 127.0.0.1: #允许远程连接
进入mysql,修改root密码
mysql>set password for root@localhost = password('123');
创建普通用户
create user 'username'@'%' IDENTIFIED BY 'password';
给普通用户赋权
grant all on *.* to username@'%';
刷新
flush privileges;
退出
exit
重启mysql
service mysql restart
安装redis
sudo apt-get install redis-server
修改redis配置
使用redis的访问账号
sudo vi /etc/redis/redis.conf
#取消注释requirepass
requirepass 密码
允许远程访问
#注释bind
# bind 127.0.0.1
重启redis
sudo /etc/init.d/redis-server restart
桌面创建新目录Project
mkdir Project
在项目中创建项目依赖包文件
pip freeze > package.txt
上传项目到Project,或者进入Project使用git克隆
scp -r 本地项目目录 root@服务器IP:/root/Project
git clone 项目地址
安装依赖包
pip install -r package.txt
进入项目修改settings文件
将mysql账号密码修改成服务器的
修改ALLOWED_HOSTS = ['*']
# 测试之前先将项目用到数据导入数据库,不然肯定报错
测试能否正常运行,然后浏览器访问服务器地址
python3 manage.py runserver 0.0.0.0:80
安装uwsgi
sudo pip3 install uwsgi
在manage.py同级目录下创建uwsgi.ini文件
vim uwsgi.ini
编辑内容如下
[uwsgi] #如果单独使用uwsgi来部署Django项目时,就用这一行。 http=0.0.0.0:80 #如果使用nginx+uwsgi来部署Django项目时,就用这行。 # socket=127.0.0.1:8080 # 和nginx连接的端口 #你项目的完整路径。 chdir=/root/Project/MyProject #给socket文件赋权限,这里不用管。 # chmod-socket=664 #启用主线程。 master=true processes=4 threads=2 #指定日志文件(会自动创建)。这个很重要,如果uwsgi出现错误,可以通过日志文件来查错。 logto=uwsgi.log #指定进程号文件(会自动创建)。这个也很重要,如果要重启和关闭uwsgi,则需要这个文件,里面记录了进程号。 pidfile=uwsgi.pid #指定wsgi文件。在与settings.py同级目录中会有一个wsgi.py文件。 module=MyProject.wsgi:application
保存退出后启动uwsgi,如果报错请查看日志文件
uwsgi --ini uwsgi.ini
安装nginx
sudo apt-get nginx
进入/etc/nginx/备份nginx.conf
sudo cp nginx.conf nginx.conf.bak
删除nginx.conf,重新创建nginx.conf,内容如下:
events {
worker_connections 1024; # 不用管
}
http{
server {
listen 80; #这个端口用来监听浏览器的请求。
server_name 0.0.0.0; # 不用管,如果有域名可以填上域名。
charset UTF-8;
#日志文件。如果nginx出现问题,都可以通过日志文件来查错。
access_log /var/log/nginx/MyProject_access.log;
error_log /var/log/nginx/MyProject_error.log;
client_max_body_size 75M;
location / {
include uwsgi_params; # 使用uwsgi服务器。
uwsgi_pass 127.0.0.1:8080; # 把浏览器发来的请求转发到8001端口,而uwsgi也正在监听8001端口,所以就实现了nginx与uwsgi的通信。
uwsgi_read_timeout 30; #链接超时时间
}
location /static/{ # 处理静态文件,处理链接是以/static/开头的请求。
alias /usr/DjangoProject/MyProject/static/; # 项目静态文件的绝对路径。
}
}
}
最后
修改uwsgi.ini文件,把http=0.0.0.0:80注释掉,使用socket=127.0.0.1:8080
输入:uwsgi -d --ini uwsgi.ini # 启动uwsgi服务器。-d表示在后台运行。这样就不会占用当前窗口了。
输入:/etc/init.d/nginx start # 启动nginx
浏览器访问
ubuntu18+uwsgi+nginx部署django项目的更多相关文章
- 使用uWSGI+nginx部署Django项目
最近使用django写了一些项目,不过部署到服务器上碰到一些问题,还有静态文件什么的一堆问题,这里总结一下碰到的问题和解决方案,总体思路是按照官方文档走的. 原文地址:http://uwsgi-doc ...
- uwsgi+nginx部署django项目
1. 概念解析(wsgi协议,uwsgi协议,uWSGI) 参考:https://www.cnblogs.com/wspblog/p/8575101.html 1.1 现实世界的web请求: 1.2 ...
- Ubuntu+Django+uWSGI+Nginx部署Django项目
安装uWSGI,pip依据自己要使用的python版本自行选择,python2.x版本使用pip进行安装,python3.x版本使用pip3进行安装 pip install uwsgi 配置uWSGI ...
- 基于腾讯云CentOS7.4+MySQL5.7+Python3+uwsgi+nginx的Django项目部署
准备知识 1.django一个基于python的开源web框架,请确保自己熟悉它的框架目录结构. 2.uWSGI一个基于自有的uwsgi协议.wsgi协议和http服务协议的web网关 3.nginx ...
- uwsgi+anaconda+nginx部署django项目(ubuntu下)
conda 环境不必多说: conda(或source) activate test 进入test虚拟环境 接下来安装uwsgi: pip install uwsgi 在conda环境下大概率安装 ...
- vue+uwsgi+nginx部署luffty项目
在部署项目之前本人已经将前端代码和后端代码发布在了一个网站上,大家可自行下载,当然如果有Xftp工具也可以直接从本地导入. django代码 https://files.cnblogs.com/fil ...
- uwsgi + nginx 部署python项目(一)
uWSGI uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / uws ...
- 阿里云轻量级服务器和NGINX部署Django项目
部署条件: 1.一台阿里云服务器(本人的是CentOS系统的服务器) 2.已经构建好的项目 3.服务器上安装并配置Nginx 首先第一步:在服务器上安装并配置Nginx 进入服务器 $ ssh roo ...
- uwsgi + nginx 部署python项目(二)
实现负载均衡 开启两个服务器,nginx负责分发请求到两个服务器,以减轻单个服务器负担. 配置uwsgi服务器 在a项目目录下生成uwsgi.ini文件,在b项目目录下生成uwsgi.ini文件,如何 ...
随机推荐
- Head First设计模式——装饰者模式
前言:对于设计模式我们有时候在想是否有必要,因为实际开发中我们没有那么多闲工夫去套用这么多设计模式,也没有必要为了模式而模式. 通常这些模式会引入新的抽象层,增加代码的复杂度,但是当我们掌握了这些设计 ...
- php函数分为哪两种?
PHP的真正威力源自于它的函数.函数分为内置函数和自定义函数. 内置函数 所谓PHP内置函数,就是在php程序的库里面已经定义了的函数,比如echo,mysql_connect,include_onc ...
- MyBatis 示例-传递多个参数
映射器的主要元素: 本章介绍 select 元素中传递多个参数的处理方式. 测试类:com.yjw.demo.MulParametersTest 使用 Map 传递参数(不建议使用) 使用 MyBat ...
- Activity 学习(二) 搭建第一个Activity流程框架
本次示例使用的IDER测试完成 测试背景 : xx饿了去饭店吃饭 需要先和服务员点餐 点完餐后服务员将菜品传递给厨师制作 制作完成后吃饱 一 :创建流程图 创建上一篇测试成功出现的BpmnFil ...
- 设计模式(十一)Composite模式
Composite模式模式能够使容器与内容具有一致性,创造出递归结构.有时,与将文件夹和文件都作为目录条目看待一样,将容器和内容作为同一种东西看待,可以帮助我们方便地处理问题.在容器中既可以放入内容, ...
- (四)Trigger
在游戏物体上可以添加Trigger组件,它与unity的eventTrigger类似,但功能更复杂详细. 在游戏物体上田间Trigger,并通过add new event来添加相关功能,如下图所示,添 ...
- Windows下NFS服务器SFU设置(可以共享linux系统)
一.安装SFU1.下载软件SFU http://download.microsoft.com/download/a/1/c/a1ca7af1-a6e3-46e7-874a-4c5d8c0fb3b7/S ...
- ios下app内嵌h5页面是video适配问题
ios下做新闻详情用h5页面实现然后打包到app中,其中新闻详情页会有视频,安卓下video的poster可以做到适应video大小,但是ios下会按照poster图片大小将video等比撑大,但是视 ...
- tomcat的虚拟路径的配置
在一些项目中有时候需要把一些文件(例如图片.视频)存储在硬盘上的,如果是把文件在放在硬盘上的话,怎么才能访问到这些文件昵. 好了.下面就为大家讲讲如何利用tomcat 虚拟路径访问硬盘上的文件.总共有 ...
- 【MySQL】MySQL服务启动失解决方法
写在前面的话:前段时间,为了更加流畅愉快的玩PUBG,我在任务管理器中,关闭了mysqld服务.后来我在使用MySQL数据库服务的时候,发现去到MySQL安装目录下双击运行mysqld.exe(数据库 ...