django+uwsgi+nginx上线个人实测成功的方法
声明
本文不保证一定成功,且属于上线后总结,可能有个别步骤遗漏。
虚拟机中python的安装
在root用户的状态下,先根目录下创建一个py3,然后安装下面这一堆的东西。
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel expat-devel mysql-devel MySQL-python
yum install -y libffi-devel zlib1g-dev
yum install zlib* -y
下载python安装包
安装完环境之后就去官网复制链接wget python.tgz的压缩包,在py3目录下下进行解压:tar -zxvf Python-3.x.x.tgz(根据自己的项目选择版本)
上面解压完之后的路径文件,然后切换到/usr/local那创建python3文件夹作为安装目录。
接下来就是切换到py3中的python-3.7.3中。
执行命令:./configure --prefix=/usr/local/python3/
意思是把python3安装到Prefix指令目录中。
执行完之后依次执行命令:make和make install
安装完之后没有报错,就可以切换到自己建的python3文件夹中查看,如图所示。但是此时还未建立软连接。所以直接输入python3是无法进入python环境中的。
python3软连接
执行命令建立软连接:ln -s /usr/local/python3/bin/python3 /usr/bin/python3 (第一个是文件所在路径)
执行命令:python3 --version 查看版本是否正确,无误则可以直接通过python3进入编译环境。
pip3也建立软连接
删除py3
最后还要pip3 install mysqlclient
安装uwsgi,nginx
uwsgi 安装和软连接
nginx安装
首先是要先添加安装源
rpm -ivh http://nginx.org/download/nginx-1.19.9.tar.gz
yum install nginx
配置django的setting以及上传到linux服务器中
DEBUG = False
STATIC_URL = '/pstatic/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'pstatic')
]
STATIC_ROOT = os.path.join(BASE_DIR,'static')
#上面的环境改了之后。去linux中执行 cd到manage.py那里。 然后python3 manage.py collectstatic生成静态文件夹
#pstatic是用于线下测试的原静态资源存放。
上传先在左上角settings中更改环境依赖,选择sftp连接服务器的环境,然后在tools中上传到对应服务器的文件夹中。
uwsgi文件配置
在manage.py的同级目录中创建一个uwsgi.ini
[uwsgi]
socket = localhost:8080
chdir = /data/www/profession_system
#profession_system下级目录便是profession_systems和manage.py等
module=profession_systems.wsgi:application
#profession_systems中的wsgi文件
master = true
processes = 5
threads = 2
max-requests = 2000
chomd-socket = 664
vacuum = true
#下面这三个首先要在profession_system目录下创建一个uwsgi文件夹,否则会报错。
status = /data/www/profession_system/uwsgi/uwsgi.status
pidfile = /data/www/profession_system/uwsgi/uwsgi.pid
daemonize = /data/www/profession_system/uwsgi/uwsgi.log
#%(chdir)
nginx配置文件
我nginx的路径是/usr/nginx/nginx.conf
server{
listen 80;
server_name 192.168.x.x; # 这是你的域名
charset utf-8;
client_max_body_size 75M;
location / {
uwsgi_pass localhost:8080;
include /usr/local/nginx-1.18.0/conf/uwsgi_params; #nginx路径自己去看一下
}
location /static {
alias /data/www/profession_system/static/;#这是你静态文件的存放地
}
项目运行上线
当配置完上面的一切之后,基本就没问题了。可以cd 到django项目(uwsgi.ini那一级)。
执行命令:uwsgi3 --ini uwsgi.ini
启动nginx:systemctl start nginx
然后在本地打开浏览器输入域名即可访问项目。
重启uwsgi的命令:ps aux|grep uwsgi
先查看进程
然后kill -9 xxx
杀死原uwsgi
再次uwsgi3 --ini uwsgi.ini