一、ubuntu-django+nginx+uwsgi:ubuntu系统部署django项目,前后端不分离项目
一、创建用户和文件夹
#创建www文件夹,所有网站项目都放到这里
$ sudo mkdir /www
#创建用户组
sudo groupadd www -g 666
#创建用户
$ sudo useradd www -u 666 -g 666 -M -s /sbin/nologin
#查看
$ id wwwid
#设置www文件夹的所属组和所属用户
$ sudo chown -R www.www /www/
#$ sudo chmod -R 666 某一目录,所有用户对一个目录的权限,用户组、所在用户,其他用户
#更新用户的密码
$ sudo passwd www
#输入要设置的密码:Huawei@123
切换到该用户
1、/www目录用来存放项目
2、www用户用来运行配置文件
二、切换到www用户下,在用户的家目录下创建虚拟环境。
1、安装python解释器
$~ sudo apt update #更新软件源
$~ sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget
$~ wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz #官网下载压缩包
$~ sudo tar -xvzf Python-3.7.9.tgz #解压
$~ cd Python-3.7.9 #进入python文件夹
$~ ./configure --with-ssl prefix=/opt/python_exe/python37 #指定位置安装解释器
$~ make #编译
$~ sudo make install #安装
#测试
$ cd /opt/python37
$ python3 #看看能不能出来python解释器命令行解释器安装到的路径:sudo find / -name python3.7
2、将新安装的python3.7解释器加到环境变量最前面【不配置也不影响后面的部署】
#1、查看到python3.9解释器所在的位置
sudo find / -name python3.7
# 在 /usr/local/bin/ 这是默认安装的位置
#我上面指定安装在/opt/python_exe/python37/
#2、查看环境变量
echo $PATH
#查看到所有环境变量: /usr/sbin/:...
#把环境变量复制,起来
#3、建立软连接
ln s /opt/python_exe/python37/bin/python3.7 /usr/local/bin/python
#4、设置环境变量,
sudo vi /etc/profile
添加
PATH=$PATH:/usr/local/bin/:拼接上第二步查到的路径
保存#5、重启虚拟机在任何位置输入python,显示的是python3.7.9的解释器
3、配置虚拟环境【一个项目配置一个虚拟环境】
#下载virtualenv依赖sudo apt install virtualenv
#virtualenv不是官方自带的包,需要pip安装pip install virtualenvpip install virtualenvwrapper
#到home目录下创建 .virtualenv文件夹sudo makedir $HOME/.virtualenvs
#打开 ~/.bashrc文件,并添加如下
#指定存放虚拟环境的路
vi ~/.bashrc
添加下面两条:虚拟环境存放的路径,/home/当前用户下/.virtualenvs
export WORKON_HOME=$HOME/.virtualenvssource ~/.local/bin/virtualenvwrapper.sh
#运行
source ~/.bashrc
4、创建虚拟环境给待部署的项目
mkvirtualenv -p 解释器的安装位置 虚拟环境的名字
mkvirtualenv -p /opt/python_exe/python37/bin/python3.7 python37_django
#导入项目运行的依赖
1、切换到虚拟环境中
cd ~/.virtualenvs
workon python37_django
2、给虚拟环境安装依赖包,该依赖包是在项目中,运行 pip freeze > requirement.txt 生成
pip install -r requirement.txt
三、项目上线前的准备
1、配置settings.py文件
#debug设置成False后,django不再处理静态文件
DEBUG = False
#项目允许启动的域名或IP,"*"代表所有都可以启动项目
ALLOWED_HOSTS = ['*']
#数据库还要修改,看你的数据库是否跟项目在一台机器,具体看情况设置数据库的连接IP
#静态文件,将所有静态文件都收集到static文件夹中
STATIC_URL = '/static/'
STATICFILES_DIRS=[#os.path.join(BASE_DIR,'static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')#用户资源,开放出一个窗口
MEDIA_URL='/media/'
MEDIA_ROOT=os.path.join(BASE_DIR,'media')
#要配置media还需要到总路由文件配置
2、配置总路由文件,项目同名下的urls.py[项目创建时就已经弄好的]
from .项目名 import settings
from django.conf.urls.static import static
urlpatterns+=static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
3、收集静态文件
进入terminal执行:
python manage.py collectstatic
4、安装uwsgi
pip install uwsgi
5、生成项目的依赖文件
#方式一:使用pip来生成依赖文件
pip freeze > requirement.txt#方式二:使用三方包来生成依赖文件
#先安装pipreps
pip install pipreqs
#导出依赖包,生成依赖文件,默认生成requirements.txt
pipreqs ./ --encoding=utf-8推荐使用pipreqs来生成依赖文件,只会将项目需要的依赖写进到文件中。
6、到二下执行步骤4,给虚拟环境安装依赖环境
1、切换到项目的虚拟环境
cd ~/.virtualenvs
workon python37_django
2、给虚拟环境安装依赖包,该依赖包是在项目中,运行 pip freeze > requirement.txt 生成
cd /www/www.bbs.com/BBS14 #我的项目跟目录
pip install -r requirement.txt
7、迁移mysql数据库:mysql安装移步
1、生成sql文件,在cmd中执行:
>mysqldump -h 127.0.0.1 -uroot -pHuawei@123 oasystem > f:oasystem.sqlIP 待导数据库 导出的位置和名字
2、将该文件上传到待部署的服务器上,假设上传到/opt/mysql_data/中
3、在服务器的mysql中导入项目的数据库
#先创建项目的数据库,要跟项目中配置的数据库名一样>create database oasystem;#导入项目的数据库数据>use oasystem;> source /opt/mysql_data/oasystem.sql#看到很多ok,再查询一下数据库表是否存在>show tables;
8、将整个项目移动到服务器的/www/www.bbs.com中
四、nginx配置
安装nginx
1、更新源
$> sudo apt update
2、安装nginx
$> sudo apt install nginx
3、查看版本
$> sudo nginx -v
nginx常用命令
前提:进入到nginx安装位置(ubuntu18默认在/etc/nginx/)#nginx的配置文件,在/etc/nginx/
nginx.cong
配置nginx.conf
cd /etc/nginx/
sudo vi nginx.conf
#配置内容user www; #设置运行用户
worker_processes auto;
pid /var/run/nginx.pid;events {worker_connections 1024;
}http {add_header 'Access-Control-Allow-Origin' 'origin-list';include /etc/nginx/mime.types;default_type application/octet-stream;#log format
log_format main '$remote_addr-$remote_user [$time_local] "$request"'
'$status $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for" ';error_log /var/log/nginx/error.log error;access_log /var/log/nginx/access.log main;sendfile on;keepalive_timeout 65;#gzip on;#将server段,写到各个文件中include /etc/nginx/conf.d/*.conf;#include导入该目录下的所有.conf配置文件
}
配置虚拟主机站点,一个项目一个虚拟主机
cd /etc/nginx/conf.dvi www.bbs.com.conf #虚拟主机配置名一个跟域名一样,这样好找 #配置内容upstream mybbs{#负载均衡,名字随便起,是给proxy_pass或uwsgi_proxy使用#server 127.0.0.1:8888 weight=1;#server 127.0.0.1:8080 weight=2; #权重server 192.168.137.140:9999;}server{listen 80;server_name www.bbs.com;charset utf-8;location / {include /etc/nginx/uwsgi_params;uwsgi_pass mybbs;#index /www/www.bbs.com/BBS14/app01/templates/app01/login.html;}location /static {#可以通过www.bbs.com/static 访问到下面的文件夹中的数据,有nginx实现静态文件的处理alias /www/www.bbs.com/BBS14/static/; }location /media {alias /www/www.bbs.com/BBS14/media/;
五、uwsgi配置
cd /www/www.bbs.com/BBS14
vi uwsgi.ini
#配置内容
[uwsgi]
#uwsgi监听0.0.0.0:8080 nginx发送的请求,项目以8080端口启动
#socket=127.0.0.1:8080
socket=192.168.137.140:9999
#http=0.0.0.0:8888
#配置项目根路径,项目的所在目录,改成linux电脑中的路径
chdir=/www/www.bbs.com/BBS14
#配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录名
wsgi-file=/www/www.bbs.com/BBS14/BBS14/wsgi.py
#配置启动的进程数
processes=2
#配置每个进程的线程数
threads=2
#配置启动管理主进程
master=True
#配置存放主进程的进程号文件,重启和停止如果该文件
pidfile=uwsgi.pid
#配置dump日志记录,配置日志的位置
daemonize=uwsgi.log
#如果使用的是虚拟环境,需要配置
#virtualenv = /home/lhz/.virtualenvs/python37_django2
home = /home/lhz/.virtualenvs/python37_django
#plugins = python3
六、启动项目
1、启动nginx
#启动nginx需要root用户权限
cd /etc/nginx
sudo nginx#重启
sudo nginx -s reload
#停止
sudo nginx -s stop查看nginx运行情况
ps -aux|grep nginx#强制删除nginx
pkill -9 nginx
2、启动uwsgi
#操作uwsgi,要切换到项目的虚拟环境下,使用当前登录用户的权限就可以
#注意,必须切换到虚拟环境中,再启动uwsgi
cd ~/.virtualenvs
workon python37_django2#2、启动django项目
cd /www/www.bbs.com/BBS14
#启动
uwsgi --ini uwsgi.ini
#重启
uwsgi --reload uwsgi.pid
#停止
uwsgi --stop uwsgi.pid启动成功:
[uWSGI] getting INI configuration from uwsgi.ini
#查看日志,如果最新的启动日志中,没有显示warning,最后的几行如下面所示就是成功了
cat uwsgi.logspawned uWSGI master process (pid: 4621)
spawned uWSGI worker 1 (pid: 4626, cores: 2)
spawned uWSGI worker 2 (pid: 4627, cores: 2)如果在浏览器中出现错误了,可以查看uwsgi.log,
cd /www/www.bbs.com/BBS14
cat uwsgi.log
一、ubuntu-django+nginx+uwsgi:ubuntu系统部署django项目,前后端不分离项目相关推荐
- Nginx+uwsgi+celery+supervisor部署Django前后端分离项目
转载 Nginx+uwsgi+celery+supervisor部署Django前后端分离项目 ljmict 0人评论 3887人阅读 2018-08-08 01:29:45 本实验实现了负载均衡.反 ...
- nginx+uwsgi负载均衡部署django项目
uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / u ...
- Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器
Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器 闲着无聊的时候部署了一个Django项目玩,用vm虚拟机部署的. 准备工作 我使用的系统是Ubuntu16 ...
- django+nginx+uwsgi项目部署文档整理
django+nginx+uwsgi项目部署文档整理 参考文章:https://blog.csdn.net/qq_42314550/article/details/81805328 一.python安 ...
- Centos7.x快速配置Django+Nginx+Uwsgi服务
大家好,我是Mr数据杨.今天,将和大家分享如何构建一个完善的服务器环境.折磨了我2天,终于自己调试成功Django+nginx+uwsgi的服务,直接上流程按照这个流程100%能成功,就算你啥也不懂看 ...
- Django + Nginx + Uwsgi + Celery + Rabbitmq 做一个高速响的应网站架构
Django :渲染页面,站点访问控制,管理网站,网站框架 Nginx:ip访问管理,数据传输控制 Uwsgi:处理链接Diango和Nginx的传输协议,也可以看作是处理客户端数据和Django之间 ...
- Nginx + uWSGI + flask + socketio 部署解决方案
Nginx + uWSGI + flask + socketio 部署解决方案 参考文章: (1)Nginx + uWSGI + flask + socketio 部署解决方案 (2)https:// ...
- 阿里服务器部署springboot+vue前后端分离项目
服务器部署springboot+vue前后端分离项目 最近刚刚在实习熟悉公司的业务,所有尝试着自己将项目部署到服务器上.本次部署的项目是Spring Boot+Vue前后端分离项目,后端使用的技术有M ...
- 利用Docker一键部署若依前后端分离项目详细教程
本文内容,主要介绍一下,在Linux服务器中如何利用Docker一键部署若依前后端分离项目. 若依前后端分离版本开源地址:https://gitee.com/y_project/RuoYi-Vue 目 ...
最新文章
- 机器人学习--Mobile robot国内外优秀实验室
- WMI介绍及简单实际运用(二,Win32_Processor内容)
- 排位重要还是媳妇儿重要?
- HDFS NameNode重启优化
- 80x86 register and memory mode
- Tensorflow2下载与安装
- 硬盘分区变为RAW文件系统后的解决办法
- Hibernate数据查询
- nginx limit_req限速设置
- 如何批量将 psd 转换为 png、jpeg、bmp、svg、webp 格式
- TCPIP协议详解----TCP/IP基础知识
- 解决在使用Java API操作HBase中出现的Could not locate executable null\bin\winutils.exe in the Hadoop binaries.错误
- ILSVRC2015_DET.tar.gz下载地址
- 计算机专业网页设计周志,毕业论文(设计)周志范文.doc
- 梅捷512G固态拆机+得一微YS9082HP量产教程+YS9082HP开卡工具
- 百度热力图颜色说明_各大软件地图中的热力图是什么?如何正确使用?收藏了...
- 微信小程序分享功能(微信好友,朋友圈)
- 2020年茶艺师(初级)复审考试及茶艺师(初级)模拟试题
- mysql 定时任务 每月15号执行
- 主成分分析,充分图,聚类,主成分回归——数据分析与R语言 Lecture 11