包括内容
- 环境准备
- 安装环境
- 项目配置django+nginx+uwsgi
一、环境准备
- 腾讯云服务器:Ubuntu16.04
- python:3.6
- django:2.1.4
- mysql:5.7
- web服务器:nginx
- wsgi服务器:uwsgi
- python连接mysql库:pymysql
二、安装环境
需要先连接到腾讯云服务器,在安装以下环境。
安装python3.6
Ubuntu默认安装了Python2.7和3.5,这里从新安装python3.6
输入命令
sudo add-apt-repository ppa:jonathonf/python-3.6
#这句话的意思是获取最新的个人软件包档案源,将其添加至当前apt库中,并自动导入公钥。
sudo apt-get update
# update命令,会访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑。我们在新立得软件包管理器里看到的软件列表,都是通过update命令更新的。
sudo apt-get install python3.6
按Y确认
输入python -v验证安装成功
调整Python3的优先级,使得3.6优先级较高
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 7
更改默认值,python默认为Python2,现在修改为Python3
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
安装django
先安装pip3:
sudo apt-get update
sudo apt-get install pip3
如果安装提示:E: Unable to locate package pip3
试试以下方法
sudo apt-get install python3.6-gdbm
sudo apt-get install python3-pip
然后安装Django,这个地方要注意安装你所使用的Django版本:
pip3 install django
输入django-admin
测试是否安装成功
> django-admin
Type 'django-admin help ' for help on a specific subcommand.
Available subcommands:
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
makemigrations
migrate
runserver
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
安装成功
安装nginx
sudo apt-get update
sudo apt-get install nginx
安装完成打开浏览器输入127.0.0.1
安装成功
安装uwsgi
apt-get install python3.6-dev
pip install uwsgi
如果安装过程中出现问题试下以下方法
在你的本地电脑访问https://uwsgi-docs.readthedocs.io/en/latest/Download.html,下载Stable/LTS版本的源文件。
上传下载的文件到服务器
scp -P 22 -r 下载的文件路径 root@服务器ip:上传服务器存放的路径
- cd 文件路径解压文件
tar -zcvf xxx.tar.gz
- 解压成功后cd进入该文件,执行以下三条命令
sudo apt-get install python3-setuptools
sudo apt-get install python3.6-dev
sudo python3 setup.py install
测试uwsgi,创建test.py文件:
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
通过uwsgi运行该文件。
uwsgi --http :8001 --wsgi-file test.py
打开浏览器输入127.0.0.1:8001
显示Hello World安装成功
三、项目配置Nginx+uwsgi+Django
经过上面的步骤,如果一切顺利就已经把所需要的软件和环境搭建好了,接下来我们就开始配置项目。
1. 上传本地django目录到腾讯云服务器
首先看下本地django项目目录结构 (以免下面配置文件到时候搞不清楚文件路径)
my_web/
├── manage.py
├── my_web/
│ ├── init.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── app/
│ ├── init.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ └── views.py
开始上传
scp -P 22 -r django项目路径 root@服务器ip:/home
# 我这里把项目存放中/home路径下
如果是windows系统可以使用Xftp工具上传
2. 配置uwsgi
在my_web项目的根目录下,也就是有manage.py文件的目录下,新建一个myuwsgi.ini文件和一个myuwsgi.log文件
然后我们使用vim编辑器编辑myuwsgi.ini文件
vim myuwsgi.ini
[uwsgi]
# Django-related settings
# 指定项目执行的端口号
socket = :8011
# Django项目目录
chdir = /home/my_web
# wsgi.py,直接写个项目名.wsgi就可以了
module = my_web.wsgi
# process-related settings
# master
# 表示以主进程模式运行
master = true
# 进程数
processes = 4
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
#保存日志文件,这个路径就是刚刚新建的myuwsgi.log文件的路径
daemonize = /home/my_web/myuwsgi.log
# 表示不记录正常信息,只记录错误信息,否则你的日志可能很快就爆满了
disable-logging = true
#在项目生成两个文件uwsgi.status和uwsgi.pid 方便查看pid和运行状态
stats=/home/my_web/uwsgi.status
pidfile=/home/my_web/uwsgi.pid
wq保存文件
配置完成启动服务
uwsgi myuwsgi.ini
spawned uWSGI master process (pid: 7158)
spawned uWSGI worker 1 (pid: 7160, cores: 1)
spawned uWSGI worker 2 (pid: 7161, cores: 1)
spawned uWSGI worker 3 (pid: 7162, cores: 1)
spawned uWSGI worker 4 (pid: 7163, cores: 1)
这样说明启动成功了~~
3. 配置nginx
通过vim打开etc/nginx/nginx.conf
文件,添加如下内容。
server {
listen 80;
server_name www.xxx.com
charset UTF-8;
access_log /var/log/nginx/myweb_access.log;
error_log /var/log/nginx/myweb_error.log;
client_max_body_size 75M;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8011;
uwsgi_read_timeout 2;
}
}
listen 指定的是nginx代理uwsgi对外的端口号。
server_name 可以是域名也可以是ip地址
include 必须指定为uwsgi_params;
uwsgi_pass 指的本机IP,端口与myuwsgi.ini配置文件中的必须一致。
注意:server要添加到http{ }大括号内
配置完成重启nginx
nginx -s reload
最后打开浏览器验证下就ok了~~
补充
uwsgi --reload uwsgi.pid # 重启服务
uwsgi --stop uwsgi.pid # 停止服务
uwsgi --connect-and-read uwsgi.status # 查看运行状态
sudo service nginx start # 启动nginx
sudo service nginx stop # 停止nginx
sudo service nginx reload # 重启nginx
查看运行的应用进程
ps -aux | grep uwsgi
关闭进程
kill -9 pid