系统版本-centos7
python版本-使用官方python3.6
django版本-使用本文发布时最新的
uwsgi版本-使用本文发布时最新的
nginx版本-使用本文发布时官网最新的
1、安装各类基础模块
yum gcc-c++
(为centos系统增加编译功能)
yum install wget openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
(安装这些模块都是为了成功编译安装python3,防止出现各种异常)
2、编译安装python3
进入home路径(本人喜欢把东西都下载到这里),执行以下命令:
wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
下载完成后,执行解压命令:
tar -zxvf Python-3.6.3.tar.gz
进入解压后的Python-3.6.3文件夹,依次执行以下命令
./configure --prefix=/usr/local/python3
(将python3安装到/usr/local/python3/路径下)
make -j2
make install -j2
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
使用pip3 install virtualenv 安装虚拟环境
创建指定python解释器的虚拟环境:
运行: virtualenv -p /usr/bin/python3 my_env (在当前目录下创建my_env ,使用软连接的python3解释器)
(以上两个ln命令是为了方便在终端中直接使用python3和pip3命令)
3、给python3安装django和uwsgi以及配置启动项目的ini文件
注:以下所有操作都在虚拟环境下执行
pip install django
pip install uwsgi
在原项目下使用导出需要安装的包名:
pip3 freeze > packages.txt
在服务器的虚拟环境下,一键下载项目依赖包:
pip install -r packages.txt
为了在终端中使用uwsgi命令,执行以下命令(软链接虚拟环境下的python解释器)
ln -s /home/my_env/lib/python3 /usr/bin/uwsgi
将你的django项目上传到你想放的路径下(下载pscp.exe):
在pscp的目录下运行cmd:
pscp.exe C:\Users\Administrator\Desktop\my_project root@xx:xx:xx:xx:/home
(pscp.exe 文件路径 服务器用户@ip地址:上传到的服务器路径)
假设我们的Django项目名为"my_project",里面有一个主应用叫"myapp",其有包含settings.py、wsgi.py等
在你的django项目下新建 my_uwsgi.ini,内容如下:
1 [uwsgi]
2 # uwsgi 启动时所使用的地址与端口,要与nginx.conf的对应
3 socket = 127.0.0.1:5500
4 #项目的目录
5 chdir = /home/my_project
6 #项目启动的脚本名
7 module = myapp.wsgi
8 #process-related settings
9 master = true
10 #python启动程序文件
11 wsgi-file = /home/my_project/manage.py
12 #处理器数
13 processes = 2
14 #线程数
15 threads = 4
16 #后台运行,日志形式保留debug结果
17 daemonize = mysite.log
18 #指定pid文件
19 pidfile = /var/run/uwsgi.pid
wq保存
关于uwsgi的配置:https://blog.csdn.net/Miss_Audrey/article/details/81874038
4、安装nginx和配置nginx.conf文件
进入home目录,执行以下命令:
wget http://nginx.org/download/nginx-1.13.7.tar.gz
下载完成后,执行解压命令:
tar -zxvf nginx-1.13.7.tar.gz
进入解压后的nginx-1.13.7文件夹,依次执行以下命令:
./configure
make
make install
nginx一般默认安装好的路径为/usr/local/nginx
对nginx进行软链接方便往后启动或终止
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
在/user/local/nginx/conf/中打开nginx.conf,在server中写入内容
server {
listen 80;
server_name xx:xx:xx:xx;
charset utf-8;
access_log /home/logs/access.log;
error_log /home/logs/error.log;
location /static {
alias /home/my_project/static;
}
location ^~ / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:5500;
uwsgi_param UWSGI_PYTHON /home/my_env;
uwsgi_param UWSGI_CHDIR /home/my_project;
uwsgi_param UWSGI_SCRIPT myapp.wsgi;
}
}
(以上内容请保证在默认内容的大括号内)
检测nginx是否配置正确:nginx -t
启动: nginx 停止:nginx -s stop 重载: nginx -s reload
5.配置完成开始启动项目
在项目的目录下 uwsgi --ini my_uwsgi.ini(创建了虚拟的,要在虚拟环境下启动)
停止:kill -9 pid / uwsgi --stop uwsgi.pid
坑点:
问题1:实际应用过程中发现UWSGI没有主动释放内存,导致内存不断增大。
办法:启动时:uwsgi --ini uwsgi.ini --evil-reload-on-as 100 --evil-reload-on-rss 100
#虚拟内存或者实际内存大于100M,UWSGI主进程将重启子进程
清理系统内存: echo 1 > /proc/sys/vm/drop_caches
问题2:uwsgi --ini 启动时要项目对应的虚拟环境下
问题3:启动不成功查看对应的端口号是否开通
办法:查看防火墙状态 firewall-cmd--state 关闭防火墙: systemctl stopfirewalld.service
禁止firewall开机启动:systemctl disable firewalld.service
1,参考:nginx-https://www.cnblogs.com/kaid/p/7640723.html
https://www.cnblogs.com/xingyunblog/p/9072553.html
2.参考:pscp上传文件到服务器https://www.cnblogs.com/littlezhao/p/6413685.html
3.参考:centos7下部署django https://www.cnblogs.com/djangocn/p/9538551.html