python :3.6.5
django : 1.11
mysql : Ver 14.14 Distrib 5.7.26, for Linux (x86_64) using EditLine wrapper
Ubuntu : 18.04.1 LTS
uwsgi 和 nginx 为下载默认版本
原文地址: http://www.ofus.ink/articles/article/49/
请参考:http://www.ofus.ink/articles/article/9/
# 上传之前检查静态文件存放位置的setting.py(可省略)
STATIC_ROOT=’ /home/works/mysite/static_file’
通过ftp等工具把项目上传到服务器上面。
xshell plus + Xftp 下载链接 : https://www.zzcjxy.com/detail/120.html
请参考:第二次更新:Ubuntu安装、配置、远程连接MySql的正确方式: http://www.ofus.ink/articles/article/43/
请参考:Ubuntu下安装MySQL:http://www.ofus.ink/articles/article/6
安装python和项目所需要的依赖库。
安装python(一般默认安装):
sudo apt-get install python3
安装所需库:
# 如有导出依赖库
pip install -r requ....t.txt
# 否则: 一个一个安装
pip install some-package
可借助清华源下载:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
可参考:Ubuntu更新软件源 | pip安装临时使用国内源 ---> http://www.ofus.ink/articles/article/41/
收集静态资源
1.在项目的主目录中创建 static_file文件夹
2. 执行收集静态资源命令:
python manage.py collectstatic
收集静态资源默认到static_file 文件夹下
同步数据库
1.配置setting.py设置SQL连接信息
2.执行同步命令
python manage.py makemigrations
python manage.py migrate
基本准备工作基本弄完!
在上面的准备工作做完后,我们来下载项目运行所依赖的uwsgi服务器。
pip3 install uwsgi
我们先来用uwsgi命令行方式启动一下我们的项目测试一下:
#cd 项目主目录下
uwsgi --http=123.207.10.46:8000 --file=mysite/wsgi.py --static-map=/static=static_file
选项参数:
--http:部署地址参数,指定项目访问地址,
--http:192.168.1.100:8000
--file:指定项目中实现 WSGI 协议的模块文件位置
--static-map:指定项目中静态文件配置选项操作
这个时候我们应该就可以访问我们的项目了。但是这样命令行启动方式不是我们要的,我们不可能一直开着命令行窗口和每次手动启动、关闭。
来,我们来创建个配置文件初始化uwsgi服务器。
配置uwsgi部署启动项目:
切换到项目的根目录下(和setting.py同一文件夹下),创建uwsgi配置文件uwsgi.ini,配置参数如下:
步骤:
cd /home/mysite/mysite/
vim uwsgi.ini
# 指定 uwsgi 配置
[uwsgi]
# http 选项指定 ip 地址和端口
# http=192.168.10.125:8000
# 因后续nginx配置,需要更换为:
socket=127.0.0.1:8000
# 如果项目所用环境为虚拟环境, 需要指定虚拟环境位置
home = /root/.virtualenvs/fy1
# 指定项目的绝对路径
chdir=/home/mysite
# 指定 wsgi 文件
wsgi-file=mysite/wsgi.py
# 指定启动的进程数据量
processes=4
# 每个进程需要的线程数
threads=2
# 指定是否由主进程管理
master=true
# 指定存放进程编号的 id 文件
pidfile=uwsig.pid
# 指定进程停止时清楚垃圾数据
vacuum=true
# 指定启用日志记录于守护进程
daemonize=true
# 指定静态文件映射
# 因后续的nginx替代了静态文件的管理,这里的静态文件配置注释
# static-map=/static=static_file
开启uwsgi
uwsgi --ini uwsgi.ini
关闭uwsgi
uwsgi --stop uwsgi.pid
uswgi服务器配置可参考:Django部署:Uwsgi和Nginx配置和使用,服务器部署的相关错误 --> http://www.ofus.ink/articles/article/14/
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
安装:
sudo apt-get install nginx
配置nginx+uwsgi项目部署:
代理
正向代理:代理的是客户端,隐藏了具体访问客户端的信息。
反向代理:代理的是服务器,隐藏了具体提供服务器的信息。
当前配置中,安装 nginx 完成之后,进行反向代理的配置和静态文件服务器的配置如下: 修改/etc/nginx/nginx.conf 配置文件。
注意:配置项结束都要用分号结束。
http {
..
server { # 配置一个虚拟服务器
listen 80; # 服务监听端口
server_name manbanzhen.top ; # 配置监听服务(你的域名或IP)
location / { # 配置请求反向代理
include uwsgi_params; # 指定代理数据类型
uwsgi_pass 127.0.0.1:8000; # 指定代理 IP 和端口(刚才我们在uwsgi里的socket配置)
}
location /static { # 配置静态文件服务器
alias /home/mysite/static_file;
}
}
..
}
配置完成之后,执行如下命令重新加载 nginx 配置项信息:
nginx –s reload
打开浏览器,访问 www.manbanzhen.top 或 manbanzhen.top ,即可直接访问到项目资源。
至此,uwsgi+nginx 生 产环境配置完成。
nginx服务器配置可参考:Django部署:Uwsgi和Nginx配置和使用,服务器部署的相关错误 --> http://www.ofus.ink/articles/article/14/
原文地址: http://www.ofus.ink/articles/article/49/
nginx常用命令:
nginx [options]
-v 查看 nginx 版本
-V 查看 nginx 版本及配置信息
-t 测试服务器是否可以正常运行
-T 测试配置选项运行服务器
-c 指定配置文件启动服务器
-s 发送一个选项信号执行操作
########################操作如下##############################
nginx 启动服务器
nginx –s stop 停止服务器;不论是否有数据未完成,直接退出
nginx –s quit 停止服务器;如果数据处理未完成,等待完成退出
nginx –s reload 重新加载
nginx –s reopen 重启
nginx 常见配置
Nginx 服务器使用 apt 安装之后配置文件在/etc/nginx/nginx.conf
# 运行用户 user nobody;
# 启动进程,通常设置成和 cpu 的数量相等
worker_processes 1;
# 全局错误日志及 PID 文件
# error_log logs/error.log;
# error_log logs/error.log notice;
# error_log logs/error.log info;
# pid logs/nginx.pid;
#工作模式及连接数上限
events {
# epoll 是多路复用 IO(I/O Multiplexing)中的一种方式,
# 仅用于 linux2.6 以上内核,可以大大提高 nginx 的性能
Use epoll;
# 单个后台 worker process 进程的最大并发链接数
worker_connections 1024;
# 并发总数是 worker_processes 和 worker_connections 的乘积
# 即 max_clients = worker_processes * worker_connections
# 在设置了反向代理的情况下,max_clients = worker_processes * worker_connections / 4
# 为什么上面反向代理要除以 4,应该说是一个经验值
# 根据以上条件,正常情况下的 Nginx Server 可以应付的最大连接数为:4 * 8000 = 32000
# worker_connections 值的设置跟物理内存大小有关
# 因为并发受 IO 约束,max_clients 的值须小于系统可以打开的最大文件数
# 而系统可以打开的最大文件数和内存大小成正比,一般 1GB 内存的机器上可以打开的文件数大 约是 10 万左右
# 我们来看看 360M 内存的 VPS 可以打开的文件句柄数是多少: # $ cat /proc/sys/fs/file-max
# 输出 34336 # 32000 < 34336,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受 的范围之内
# 所以,worker_connections 的值需根据 worker_processes 进程数目和系统可以打开的最大文件 总数进行适当地进行设置
# 使得并发总数小于操作系统可以打开的最大文件数目 # 其实质也就是根据主机的物理 CPU 和内存进行配置
# 当然,理论上的并发总数可能会和实际有所偏差,因为主机还有其他的工作进程需要消耗系统资 源。
# ulimit -SHn 65535
}
http {
# 设定 mime 类型,类型由 mime.type 文件定义
include mime.types;
default_type application/octet-stream;
# 设定日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
# sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
# 对于普通应用,必须设为 on,
# 如果用来进行下载等应用磁盘 IO 重负载应用,可设置为 off,
# 以平衡磁盘与网络 I/O 处理速度,降低系统的 uptime.
sendfile on;
# tcp_nopush on;
# 连接超时时间
# keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
# 开启 gzip 压缩
gzip on;
gzip_disable "MSIE [1-6].";
# 设定请求缓冲
client_header_buffer_size 128k;
large_client_header_buffers 4 128k;
# 设定虚拟主机配置
server {
#侦听 80 端口
listen 80;
#定义使用 www.nginx.cn 访问
server_name www.nginx.cn;
#定义服务器的默认网站根目录位置
root html;
#设定本虚拟主机的访问日志
access_log logs/nginx.access.log main;
#默认请求
location / {
include uwsgi_params;
uwsgi_connect_timeout 30;
uwsgi_pass unix:/opt/uwsgi.sock
}
# 定义错误提示页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
#静态文件,nginx 自己处理
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
#过期 30 天,静态文件不怎么更新,过期可以设大一点,
#如果频繁更新,则可以设置得小一点。
expires 30d;
}
#禁止访问 .htxxx 文件
location ~ /.ht {
deny all;
}
}
}
如有哪里不明白,请下方评论区指出,本文将一步步完善。
原文地址: http://www.ofus.ink/articles/article/49/