如何部署python网站
1、首先,我们需要明确用Python部署网站过程中各类模块的功能。
Python:一种编程语言,只能进行后端数据的处理和管理前端HTML文件,不能用来处理HTTP请求
Nginx:web服务器,用于处理HTTP请求
uWsgi:Python的第三方库,建立Nginx和Python环境的交互通信
Django:Python的Web开发框架,部署HTML文件和数据库
本文以Ubuntu系统服务器为例,介绍如何在服务器端部署网站

2、步骤一:安装Nginx
1. 在命令行中输入 sudo su 进入管理员模式
2. 在命令行中输入 sudo apt-get install nginx,安装Nginx
3. 在服务器的80端口开启的情况下,在浏览器中输入服务器的IP地址,如果不出现错误,则证明Nginx已经安装成功了。
3、步骤二:在Python虚拟环境中安装Django
1. 在命令行中输入 pip3 install virtualenv 安装虚拟环境管理工具
2. 进入目录(本文以 /var/www 为例),在命令行中输入 virtualenv venv 创建一个名为 'venv' 的虚拟Python 3环境
【注】使用虚拟环境的目的是为了让Django的运行独立在真实环境之外,防止干扰服务器上运行的其他项目
3. 在命令行中输入 source /var/www/venv/bin/activate 进入虚拟环境,此时命令行首出现 '(venv)' 字段,代表已经进入虚拟环境中工作
4. 在命令行中输入 pip3 install django ,将Django安装在虚拟环境中
5. 在命令行中输入 django-admin startproject mysite,创建一个名为'mysite'的项目,我们的网站就部署在这个目录(/var/www/mysite)下
6. 在命令行中输入 cd /var/www/mysite 进入该目录,在命令行中输入 vim ./mysite/settings.py 修改配置文件如下:
找到 'ALLOWED_HOSTS = []' 行,将服务器的IP地址以字符串的形式添加到列表ALLOWED_HOSTS中
7. 保存并退出 vim 编辑器,在命令行中输入 python3 manage.py runserver 0.0.0.0:8000,开启一个虚拟测试器
8. 在浏览器中输入 http://xxx.xxx.xxx.xxx:8000 (xxx.xxx.xxx.xxx是你服务器的IP地址),如果不报错并看到Django的欢迎界面,则说明Django安装成功
4、步骤三:在虚拟环境中和真实环境中安装uWsgi
1. 按住 Control + C 退出Django测试服务器,在命令行中输入 pip3 install uwsgi 安装uwsgi模块,注意此时的uwsgi模块仍安装在虚拟环境中
2. 在命令行中输入 deactivate ,退出虚拟环境
3. 在命令行中输入 pip3 install uwsgi,将uwsgi安装在真实环境下
4. 在命令行中输入 source /var/www/venv/bin/activate 进入虚拟环境,输入 cd /var/www/mysite 进入该目录
5. 在命令行中输入 uwsgi --http :8000 --module mysite.wsgi 开启uwsgi测试服务
6. 在浏览器中输入 http://xxx.xxx.xxx.xxx:8000 (xxx.xxx.xxx.xxx是你服务器的IP地址),如果不报错并看到Django的欢迎界面,则说明uwsgi安装成功
5、步骤四:修改Nginx配置文件
1. 在 /var/www 目录下,使用vim编辑器创建一个名为 'nginx.conf' 的配置文件,并输入如下内容(xxx.xxx.xxx.xxx 是服务器的IP地址)后,保存并退出:
# nginx.conf
upstream django {
server 127.0.0.1:8001;
}
server {
listen 80;
server_name xxx.xxx.xxx.xxx;
charset utf-8;
client_max_body_size 75M;
location /media {
alias /var/www/mysite/media;
}
location /static {
alias /var/www/mysite/static;
}
location / {
uwsgi_pass django;
include /var/www/uwsgi_params
}
}
2. 在命令行中输入 cd /etc/nginx/sites-enabled 进入nginx的安装目录,在命令行中输入 rm default 删除原有的配置文件
3. 在命令行中输入 ln -s /var/www/nginx.conf mysite 将我们创建的配置文件配置在nginx中
4. 在命令行中输入 /etc/init.d/nginx restart 重启nginx
6、步骤五:配置uwsgi
1. 在命令行中输入 cd /var/www 回到www目录,在该目录下输入 vim uwsgi_params 创建一个名为 'uwsgi_params' 的文件,并输入如下内容,保存:
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_ADDR $server_addr;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
2. 在 /var/www 目录下,在命令行中输入 vim uwsgi.ini 创建名为 'uwsgi.ini' 的文件并输入如下内容:
# mysite_uwsgi.ini file
[uwsgi]
# Django-related settings
# the base directory (full path)
chdir = /var/www/mysite #path to your project
# Django's wsgi file
module = mysite.wsgi #project_name.wsgi
# the virtualenv (full path)
home = /var/www/venv #path to the virtual environment
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 10
# the socket (use the full path to be safe
socket = :8001 #we use port 8001 as a socket
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
3. 在命令行中输入 uwsgi --ini uwsgi.ini 开启uwsgi服务,在浏览器中输入 http://xxx.xxx.xxx.xxx(服务器IP地址),如果不报错并看到Django的欢迎界面,就说明部署成功了。
7、步骤六:设置uwsgi后台运行
到此,虽然已经将Django项目部署在服务器上,但是没办法让uwsgi脱离终端运行,因此需要修改开机自动启动文件,让uwsgi自动在后台运行:
1. 在命令行中输入 vim /etc/rc.local,在其中输入 uwsgi --ini /var/www/uwsgi.ini2. 重启服务器后,在浏览器中输入 http://xxx.xxx.xxx.xxx(服务器IP地址),发现成功部署了!
8、本文只是介绍了如何把Django项目部署在服务器上,至于Django的使用则是另一个方面的问题,需要进一步学习。