Django+Nginx+UWSGI部署项目

我们在本地写的项目,运行结果只能自己查看,无法让他人使用。
如果想要上线项目,可以通过Django+Nginx+UWSGI的方式,将项目部署在云服务器上,此时其他用户只需输入URL地址,就可使用项目。

部署前服务器相关配置

本文使用的云服务器为阿里云服务器,系统为Ubuntu 18.04。

  1. 安装依赖环境
apt update
apt -y install man gcc make lsof ssh openssl tree vim dnsutils
apt -y install psmisc sysstat curl telnet traceroute wget iputils-ping
apt -y install net-tools libbz2-dev libpcre3 build-essential
apt -y install libpcre3-dev libreadline-dev libsqlite3-dev
apt -y install libssl-dev llvm zlib1g-dev git zip p7zip
apt -y install mysql-server mysql-client libmysqlclient-dev
  1. 安装Nginx和UWSGI
apt install nginx
apt install uwsgi
  1. 安装Python环境

系统自带python3,还需要安装pip3,来进行其他库的安装。

apt install python3-pip
  1. 安装和配置虚拟开发环境
pip3 install virtualenv
pip3 install virtualenvwrapper

创建目录,用于放置虚拟开发环境。

mkdir ~/.virtualenvs

修改环境变量

vim ~/.bashrc

在最后方添加,依次为虚拟环境目录位置,python位置,virtualenvwrapper.sh文件位置。(根据实际情况更改)

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

修改完成之后需要source生效

source ~/.bashrc

注:
相关路径查看方法

which python3
find / -name virtualenvwrapper.sh

环境变量配置完毕后,创建针对Django的虚拟开发环境

mkvirtualenv env_django

进入虚拟开发环境

workon env_django

接着将项目上传到服务器(例如放置在/var/www/目录下),然后在虚拟开发环境中安装相关依赖库

# 在项目根目录下执行
pip freeze > requirement.txt
# 接着在虚拟开发环境中执行
pip freeze -r requirement.txt

执行成功之后,项目所需的所有依赖库就安装完毕了。

至此,虚拟环境的安装和配置执行完毕。

Nginx配置

接着需要配置Nginx。
进入目录/etc/nginx/sites-available/,拷贝配置文件进行修改

cd /etc/nginx/sites-available/
cp default blog
vim blog

Nginx的配置如下

server {
		# 监听端口,需要在阿里云控制台添加配置,开放此端口
        listen 8002;

        index index.html index.htm index.nginx-debian.html;
		# 服务器IP地址
        server_name xxx.xxx.xxx.xxx;
        location / {
                include uwsgi_params;
                # 需要和UWSGI的配置文件保持一致
                uwsgi_pass 127.0.0.1:8923;
        }
        # 项目静态资源路径
        location /static {
                alias /var/www/simple_blog/static;
        }


}

接着进入目录cd /etc/nginx/sites-enabled/,创建软连接

ln -s ../sites-available/blog blog

重启Nginx服务,使修改生效

service nginx restart

此时可以在项目的静态资源目录下新建一个文件(例如1.txt),添加一行数据(例如hello),然后在浏览器输入

http://xxx.xxx.xxx.xxx:8002/static/1.txt

如果返回数据hello,证明Nginx已经正常工作。否则需要处理相关报错信息。

UWSGI配置

首先在虚拟开发环境中安装uwsgi库

pip install uwsgi

之后在项目根目录下创建uwsgi.ini配置文件,内容如下

[uwsgi]
# 外部访问地址,需要和Nginx配置中保持一致
socket = 127.0.0.1:8923
# 项目根目录
chdir = /var/www/simple_blog
module = simple_blog.wsgi:application
master = true
# 日志位置,需要在相关目录下创建存储日志的文件
daemonize = /root/blog/uwsgi_f.log

启动UWSGI

uwsgi --ini uwsgi.ini

至此,UWSGI配置完毕

结果示例

配置完毕后,项目上线就完成了,浏览器输入URL就可对项目进行访问。
在这里插入图片描述
Django+Nginx+UWSGI部署项目_第1张图片

你可能感兴趣的:(django,Python)