Ubuntu 环境搭建:
1.python 部分
linux 系统会自带python,一般不需要特定安装python. 查看版本
python -V
修改默认版本 [即修改python的link位置]
ln -snf /usr/bin/python3.6 /usr/bin/python
ln -s [源文件] [链接文件]
2.Uwsgi Django 部分
准备python-dev[或者 python-devel]
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-dev
sudo apt-get install gcc
sudo apt-get install puthon-pip #pip python软件管理工具
访问pip
报错 关于 /usr/bin/pip mian
执行pip更新
easy_install --upgrade pip
查看pip 版本
pip -V
安装Uwsgi Django
pip install uwsgi
pip install Django==2.1.1 #2.1.1为版本号 请到官网获取最新
3.Django 项目创建 及 Uwsgi 与Python 连接测试
Uwsgi 与Python 连接测试
cd /var/www
#新建一个test.py
vim test.py
#内容如下
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
#开启uwsgi http服务
uwsgi --http :8000 --wsgi-file test.py # 2)
#访问 127.0.0.1:8000 是否输出helloworld;
#未输出,请检查test.py的return helloworld 与python版本是否一致
#无法访问 请检查防火墙及端口占用
如HelloWorld正常输出 说明 uwsgi与python连接完好。
Django 项目创建及配置
#进入项目目录
cd /var/www
#projectName 为项目名 请自定义
django-admin startproject projectName
#进入projectName目录
cd projectName
#1.修改setting.py 让项目允许的host为全部
vim projectName/setting.py
ALLOWED_HOSTS = ["*"]
#2.在项目目录下,创建 静态文件目录 及视频图片目录
sudo mkdir static_common
sudo mkdir media_common
#配置设置到setting.py文件尾部
vim projectName/setting.py
STATIC_ROOT = os.path.join(BASE_DIR, 'static_common')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media_common')
#进入项目根目录,执行静态文件迁移命令
python manage.py collectstatic
#提示输入选项时选yes即可
4.Nginx 安装 及 nginx 与 uwsgi 连接 配置
nginx 安装
sudo apt-get install nginx
#安装完毕,访问127.0.0.1 或者ip地址,查看nginx是否成功。
nginx与django配置
#进入项目目录
cd /var/www/projectName
#将/etc/nginx/目录下的uwsgi_params复制到项目文件夹,对此文件不做任何改动
cp /etc/nginx/uwsgi_params ./
#在项目根目录创建文件my_nginx.conf(nginx配置),my_uwsgi.ini(uwsgi配置),并写入以下内容【注意不同项目请区别名称】
touch my_nginx.conf #如下
touch my_uwsgi.ini #如下
#与Nginx配置目录建立软链接
sudo ln -s /var/www/projectName/my_nginx.conf /etc/nginx/sites-enabled/ #[必须使用绝对路径,否则nginx 启动报错]
my_nginx.conf 内容
upstream django {
# server 127.0.0.1:8001;#【使用socket 请开打此项 配合 uwsgi socket使用 1)】
server unix:///var/www/projectName/mySock.sock;#【使用 UNIX socket 3)】
}
server {
listen 80; # 【端口号】
server_name myweb.com; # 【服务器 ip 或是域名】
charset utf-8; # 字符集
# 最大上传限制
# client_max_body_size 75M;
location /media {
alias /var/www/projectName/media_common; # 【媒体文件所在文件夹】
}
location /static {
alias /var/www/projectName/static_common; # 【静态文件所在文件夹】
}
# 将所有非媒体请求转到Django服务器上
location / {
uwsgi_pass django; # 最上方已定义
# 将所有参数都转到uwsgi下
include /var/www/projectName/uwsgi_params; # 【uwsgi_params的路径】
}
}
这个配置文件表示将静态文件和媒体文件由Nginx处理,而其它的请求转入uWSGI处理
my_uwsgi.ini 内容
[uwsgi]
# 使用nginx连接时使用 1)
# socket = 0:8001
# 直接做web服务器使用 【命令行直接调用 2)】
# http = 0:8080
# 【项目目录】
chdir = /var/www/projectName
# 【项目中wsgi.py文件的目录】
wsgi-file = /var/www/projectName/projectName/wsgi.py
# 主进程
master = true
# 多进程&多线程
processes = 6
threads = 2
# 【.sock文件目录需与Nginx文件内的配置相同】
socket = /var/www/projectName/my_sock.sock # 3)
chmod-socket = 666
# 以守护进程的方式启动
vacuum = true
# 存储pid进程
pidfile=uwsgi.pid
# 存储log日志
daemonize=uwsgi.log
重启Nginx和uWSGI
sudo service nginx restart #重启nginx
cd /var/www/projectName
uwsgi --stop uwsgi.pid #关闭原有的 uwsgi
uwsig --ini my_uwsgi.ini #使用项目的配置文件 已后台方式启动 uwsgi
访问 myweb.com 完成环境搭建
设置开机自启动
将各项目的uwsgi配置到开机自启内即可
uwsgi --ini /var/www/projectName/my_uwsig.ini
新增项目 注意事项
- django-admin startproject 【项目名不要重复】
- 修改项目setting.py。
- 设置静态目录 执行静态文件迁移命令
- 添加nginx配置文件 uwsgi配置文件 【不同项目请不要重名】【变更对应内容】
- 创建nginx.conf的软连接。