我们在本地写的项目,运行结果只能自己查看,无法让他人使用。
如果想要上线项目,可以通过Django+Nginx+UWSGI的方式,将项目部署在云服务器上,此时其他用户只需输入URL地址,就可使用项目。
本文使用的云服务器为阿里云服务器,系统为Ubuntu 18.04。
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
apt install nginx
apt install uwsgi
系统自带python3,还需要安装pip3,来进行其他库的安装。
apt install python3-pip
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。
进入目录/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库
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配置完毕