目录
服务器环境
服务器:腾讯云 ubuntu18.04
django2.2
python3.6
更新操作系统和安装依赖包
#更新操作系统软件库
sudo apt-get update
sudo apt-get upgrade
#安装上传rz、下载sz工具
sudo apt-get install lrzsz
#安装gcc g++的依赖库
sudo apt-get install build-essential
sudo apt-get install libtool
#安装 pcre依赖库
sudo apt-get install libpcre3 libpcre3-dev
#安装 pcre依赖库
sudo apt-get install zlib1g-dev
#安装 ssl依赖库
sudo apt-get install openssl
安装Python3和PIP3
sudo apt install python3
sudo apt install python3-pip
建立virtualenv环境
#放虚拟环境的
sudo mkdir -p /data/env
#放项目的
sudo mkdir -p /data/wwwroot
#安装virtualenv
sudo pip3 install virtualenv
#查看python3路径,比如我的是“/usr/bin/python”
which python
#指定Python版本,创建名为pyweb的虚拟环境
sudo virtualenv -p /usr/bin/python pyweb
#启动虚拟环境
source /data/env/pyweb/bin/activate
至此,需要注意的是下面的命令在哪里运行。。
django:虚拟环境中安装
nginx:服务器环境中安装
uwsgi:最好是虚拟环境和服务器环境都装一下。
所以要开两个ssh命令行窗口,一个进入到虚拟环境里面,一个是服务器环境。推荐用mobaxterm进行ssh连接。
下面开始具体的安装步骤。
安装django2.2
#安装django2.2
pip3 install django==2.2
#如果有导出的安装包列表,则如下方式安装
sudo pip3 install -r requirements.txt
#进入下面路径,创建mysite文件夹
cd /data/wwwroot/
sudo mkdir mysite
cd mysite
#下载django例子代码,用于验证目前环境是否有错误
sudo wget https://www.django.cn/media/upfile/mysite_20180730000348_536.zip
sudo unzip mysite_20180730000348_536.zip
#确认目前目录结构是下面这样,即项目文件夹mysite在wwwrooot下:
ubuntu@VM-16-2-ubuntu:/data/wwwroot/mysite$ ls
blog db.sqlite3 manage.py mysite templates uwsgi.log
ubuntu@VM-16-2-ubuntu:/data/wwwroot/mysite$ pwd
/data/wwwroot/mysite
#启动django工程
python3 manage.py runserver 0.0.0.0:8080
# 0.0.0.0代表通过公网IP访问网站 8080端口,需要在服务器控制台中添加
问题1:报错。
setting.py中添加如下设置
ALLOWED_HOSTS = "*"
问题2:没有反应。
检查了下防火墙的状态,使用如下命令
firewall-cmd --zone=public --list-ports
如果是下面这样,表示没有运行防火墙。我的运行结果是空白的换行。那就不用管了。
FirewallD is not running
#清除预设表 (filter) 中的所有规则链中的规则。我是运行这个解决的。
iptables -F
再次启动django工程,出现访问出现小火箭,OK了。
安装uwsgi
#安装uwsgi
sudo pip3 install uwsgi
新建uwsgi的配置文件mysite.xml
(需要注意的是mysite.xml是和django工程的manage.py同目录)
sudo vi /data/wwwroot/mysite/mysite.xml
下面内容贴入mysite.xml。
要留意里面的项目路径和.wsgi那里填写方法,你找到wsgi.py这个文件所在的目录,然后填写目录名+.wsgi即可。
<uwsgi>
<socket>127.0.0.1:8997</socket><!-- 内部端口,自定义 -->
<chdir>/data/wwwroot/mysite/</chdir><!-- 项目路径 -->
<module>mysite.wsgi</module>
<processes>4</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>
安装nginx
#/usr/local 目录执行下面命令下载nginx源码:
wget http://nginx.org/download/nginx-1.13.7.tar.gz
#进入文件夹
cd nginx-1.13.7
sudo ./configure
sudo make
sudo make install
#这样就安装好了,没有success等字样。
#nginx一般默认安装好的路径为/usr/local/nginx
#进入/usr/local/nginx/conf/目录,然后备份一下nginx.conf文件,以防意外。
cd /usr/local/nginx/conf/
sudo cp nginx.conf nginx.conf.bak
然后打开nginx.conf文件,把里面的内容全部删除,输入下面代码:
这里把8997端口也打开吧。我没有试过是否关闭了也能访问,可能因为是内部端口,所以关闭或许没有影响。
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
server_name www.django.cn;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8997;
uwsgi_param UWSGI_SCRIPT mysite.wsgi;
uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite/; #项目路径
}
location /static/ {
alias /data/wwwroot/mysite/static/; #静态资源路径
}
}
}
需要留意的是,下图长方形里我标记的代码要和UWSGI配置文件mysite.xml一致,否则会出错。
至于静态资源路径,自己settings.py里怎么设置,你就按那个设置就好。
进入/usr/local/nginx/sbin/目录
cd /usr/local/nginx/sbin/
执行下面命令先检查配置文件是否有错:
sudo ./nginx -t
没有错就执行以下命令:
sudo ./nginx
终端没有任何提示就证明nginx启动成功。
之后进入网站项目目录
cd /data/wwwroot/mysite/
执行下面命令(虚拟环境下):
sudo uwsgi -x mysite.xml
以上步骤都没有出错的话。
进入/usr/local/nginx/sbin/目录
cd /usr/local/nginx/sbin/
执行:
sudo ./nginx -s reload
至此,理论上应该是可以通过公网IP访问django了。
如果访问失败,查看log
sudo cat /data/wwwroot/mysite/uwsgi.log
sudo cat /usr/local/nginx/logs/error.log
参考: