1,django3版本应该是支持到python3.7的但是我们还是推荐使用python3.6,笔者用3.7部署项目失败了。用3.5的话有巨坑,secrests库无法使用,所以最佳选择是python3.6,下面是安装python3.6
sudo apt-get install make gcc
sudo wget http://www.zlib.net/zlib-1.2.11.tar.gz
sudo tar -xzvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
sudo ./configure
sudo make all
sudo make install
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install -y build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install -y build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install -y zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install -y libssl-dev openssl
sudo apt-get install libffi-dev
sudo wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
sudo tar -xzvf Python-3.6.5.tgz
cd Python-3.6.5
sudo ./configure
sudo make all
sudo make install
#修正ufw
sudo apt-get purge --auto-remove ufw
sudo apt-get install ufw
# 移除旧的软链
sudo rm -rf /usr/bin/python3
# 创建新的,因为安装的时候没有指定安装路径,默认安装到/usr/local/bin/
sudo ln -s /usr/local//bin/python3.6 /usr/bin/python3
# 验证指向是否是python3.6
python3 -V
2,安装pip3
wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26
tar -zxvf setuptools-19.6.tar.gz
cd setuptools-19.6
sudo python3 setup.py build
sudo python3 setup.py install
wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb
tar -zxvf pip-8.0.2.tar.gz
cd pip-8.0.2
sudo python3 setup.py build
sudo python3 setup.py install
sudo rm -rf /usr/bin/pip3
sudo ln -s /usr/local/bin/pip3.6 /usr/bin/pip3
# 验证
pip3 -V
4,安装django,uwsgi,nginx
sudo pip3 install Django==3.1
sudo apt-get install libpcre3 libpcre3-dev
sudo pip3 install uwsgi --no-cache-dir
sudo apt-get install nginx
sudo pip3 install requests
sudo pip3 install six
验证django
python3 -c "import django"
5,在django项目根目录下使用python3 manage.py runserver看看项目是否正常跑起来
6,配置nginx:
nano /etc/nginx/nginx.conf
#我的配置文件如下,请照着修改:
user root;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
application/xml application/xml+rss text/javascript;
upstream django {
server 127.0.0.1:8000; #此处与python3 manage.py runserver出来的local地址是对应的!!
}
server{
listen 80;#暴露给外网的端口
server_name localhost;#服务器ip
charset utf-8;#为了避免中文乱码
access_log off;
location /static{
alias /home/xxx/django_proj/statics/; #此处指向django工程根目录
}
location /{
uwsgi_pass django;#这个是在项目中的uwsgi.xml配置好的http请求路径和端口
include /etc/nginx/uwsgi_params;
}
}
}
7,在django项目根目录下新建uwsgi.ini,内容如下:
[uwsgi]
socket=127.0.0.1:8000
chdir=/home/xxx/django_proj #指向django工程根目录
module=xxx.wsgi #xxx为你的django项目工程名
master=true
processes=10
chmod-socket=664
vacuum=true
8,跑起来吧:
su
/etc/init.d/nginx start
ctrl+d
uwsgi uwsgi.ini
#uwsgi最好是挂在tmux里面跑
其他有关命令:
【部署】搜集所有的静态文件
python manage.py collectstatic
【部署】启动nginx
/etc/init.d/nginx start
/etc/init.d/nginx restart
【部署】启动uwsgi
uwsgi uwsgi.ini
1. /etc/init.d/nginx start 启动nginx服务
2. /etc/init.d/nginx restart 重启nginx 服务
3. /etc/init.d/nginx stop 停止nginx 服务
针对uwsgi.pid文件
4. uwsgi -x uwsgi/uwsgi.xml # uwsgi.xml方式启动
5. uwsgi --ini uwsgi/uwsgi.ini # uwsgi.ini方式启动
6. uwsgi --reload uwsgi/uwsgi.pid # 重启
7. uwsgi --stop uwsgi/uwsgi.pid # 关闭