300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 一 ubuntu-django+nginx+uwsgi:ubuntu系统部署django项目 前后端不分离项目

一 ubuntu-django+nginx+uwsgi:ubuntu系统部署django项目 前后端不分离项目

时间:2019-03-02 01:14:15

相关推荐

一 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 /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/当前用户下/.virtualenvsexport 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 ~/.virtualenvsworkon python37_django2、给虚拟环境安装依赖包,该依赖包是在项目中,运行 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 settingsfrom django.conf.urls.static import staticurlpatterns+=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#方式二:使用三方包来生成依赖文件#先安装piprepspip install pipreqs#导出依赖包,生成依赖文件,默认生成requirements.txt pipreqs ./ --encoding=utf-8推荐使用pipreqs来生成依赖文件,只会将项目需要的依赖写进到文件中。

6、到二下执行步骤4,给虚拟环境安装依赖环境

1、切换到项目的虚拟环境cd ~/.virtualenvsworkon python37_django2、给虚拟环境安装依赖包,该依赖包是在项目中,运行 pip freeze > requirement.txt 生成cd /www//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/中

四、nginx配置

安装nginx

1、更新源$> sudo apt update2、安装nginx$> sudo apt install nginx3、查看版本$> sudo nginx -vnginx常用命令前提:进入到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 formatlog_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 .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 ;charset utf-8;location / {include /etc/nginx/uwsgi_params;uwsgi_pass mybbs;#index /www//BBS14/app01/templates/app01/login.html;}location /static {#可以通过/static 访问到下面的文件夹中的数据,有nginx实现静态文件的处理alias /www//BBS14/static/; }location /media {alias /www//BBS14/media/;

五、uwsgi配置

cd /www//BBS14 vi uwsgi.ini#配置内容[uwsgi]#uwsgi监听0.0.0.0:8080 nginx发送的请求,项目以8080端口启动#socket=127.0.0.1:8080socket=192.168.137.140:9999#http=0.0.0.0:8888#配置项目根路径,项目的所在目录,改成linux电脑中的路径chdir=/www//BBS14#配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录名wsgi-file=/www//BBS14/BBS14/wsgi.py#配置启动的进程数processes=2#配置每个进程的线程数threads=2#配置启动管理主进程master=True#配置存放主进程的进程号文件,重启和停止如果该文件pidfile=uwsgi.pid#配置dump日志记录,配置日志的位置daemonize=uwsgi.log#如果使用的是虚拟环境,需要配置#virtualenv = /home/lhz/.virtualenvs/python37_django2home = /home/lhz/.virtualenvs/python37_django#plugins = python3

六、启动项目

1、启动nginx

#启动nginx需要root用户权限cd /etc/nginxsudo nginx#重启sudo nginx -s reload#停止sudo nginx -s stop查看nginx运行情况ps -aux|grep nginx#强制删除nginx pkill -9 nginx

2、启动uwsgi

#操作uwsgi,要切换到项目的虚拟环境下,使用当前登录用户的权限就可以#注意,必须切换到虚拟环境中,再启动uwsgicd ~/.virtualenvsworkon python37_django2#2、启动django项目cd /www//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//BBS14cat uwsgi.log

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。