1.前言:最近使用django部署上线了一个网站,期间遇到了一些困难,也有一些收获和感悟,现在跟大家分享一下。
2.准备工作:首先你要有一台服务器,国内的服务器可以用阿里云和腾讯云,我这个项目使用的服务器是国外的Linode,服务器的操作系统选择ubuntu 16.04
其次需要一个工具来连接服务器进行开发,我在这选择XshellXftpPortable,它集成了Xshell和Xftp的功能,并且拥有可视化界面,操作十分便捷。
最后还需要买一个域名,上线时要用
3.连接服务器:打开XshellXftpPortable软件,打开的界面如下图所示:
4.点击新建连接,输入你的服务器的IP,然后点击身份验证输入你服务器的root账号和密码,
最后点击连接,连接成功如下图所示:
这样就连接上了服务器的ubuntu了,接着只要在这上面操作就行了
5.安装环境:我们需要在服务器上安装我们项目需要的环境,首先安装pip3,命令如下:
sudo apt-get update
sudo apt-get install pip3
6.安装虚拟环境:
pip3 install virtualenv
pip3 install virtualenvwrapper(虚拟环境扩展管理包)
7.创建虚拟环境:
virtualenv -p 'python路径' 环境名
8.进入虚拟环境:
cd 路径/环境名/bin
source activate
9.使用workon(需要先安装virtualenvwrapper):
创建完虚拟环境后,可直接用workon命令进入:
workon 环境名
10.安装django(这里使用django 2.1.8版):
pip3 install django==2.1.8
11.安装数据库包,pymysql
pip3 install pymysql
12.安装django图形界面组件pillow:
pip3 install pillow
13.安装nginx服务器:
sudo apt-get update
sudo apt-get install nginx
14.安装uwsgi:
pip install uwsgi
15.安装和配置MySql:
sudo apt-get install mysql-server mysql-client
mysql -u root -p(这里会让你设置mysql的账号和密码,一定要记住)
16.创建编码格式为utf-8的数据库:
mysql> create database 数据库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
17.移植项目到服务器,使用Xftp的功能:
就是把你本地的项目文件复制粘贴到服务器的目录中
18.配置nginx:创建一个mysite.conf文件
vi /etc/nginx/sites-enabled/mysite.conf
server{
#默认监听80端口
listen 80;
#这里绑定你的域名,前提是你的域名已经绑定了你的服务器的IP地址
server_name registercompayinchina.com;
charset utf-8;
location /static {
expires 30d;
autoindex on;
add_header Cache-Control private;
# 这个是你django项目的static文件
alias /root/company/static/;
}
location / {
#关联uwsgi配置参数
include /etc/nginx/uwsgi_params;
#项目运行在哪个端口,必须和uwsgi中的设置一致
uwsgi_pass 0.0.0.0:8080;
#入口文件,即wsgi.py相对于项目根目录的位置
uwsgi_param UWSGI_SCRIPT company.wsgi;
#项目根目录
uwsgi_param UWSGI_CHDIR /root/company;
index index.html index.htm;
client_max_body_size 35m;
}
}
19.配置uwsgi:在项目的根目录下(有manage.py)创建mysite.ini文件:
20.最后修改项目的settings.py文件:
DEBUG = False
ALLOWED_HOSTS = ['*']
21.启动nginx和uwsgi:
命令行输入:重启nginx进程:nginx -s reload
启动uwsgi进程:uwsgi --ini mysite.ini
至此,我们的项目就已经成功部署在服务器上了,访问你的域名,即可看到你的网站~
最后还有一些uwsgi和nginx的常用命令:
nginx:
1.查看nginx进程:ps ax | grep nginx
uwsgi:
1.查看uwsgi进程:ps ax | grep uwsgi
2.停止uwsgi进程:sudo pkill -f uwsgi -9
打个广告,各位大佬如果有Python方面的兼职可以找我做,我的QQ:1480456073
感谢各位大佬~