2018-12-09部署

部署项目之前的准备:
1.购买一台服务器,买的时候注意选一下系统,我用的是ubuntu16.04,买完以后在控制台修改一下密码(要先将服务器关机),然后打开终端,用ssh命令远程连接服务器

ssh 服务器的用户名@服务器公网IP

ssh ubuntu@94.191.98.70

然后输入服务器密码即可,要注意的是刚改完密码可能会报错

IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
07:36:8e:d0:72:88:38:f7:21:10:c3:12:d6:35:ad:55.
Please contact your system administrator.
Add correct host key in /Users/watsy/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/watsy/.ssh/known_hosts:1
RSA host key for 192.168.2.108 has changed and you have requested strict checking.
Host key verification failed.

解决办法:

rm -rf ~/.ssh/known_hosts

登录上去以后先更新一下应用,安装虚拟环境,mysql数据库,pip3,nginx 以下是具体的命令,如果不想用MySQL,也可以用自带的sqlite,记得要迁移即可

sudo apt update
sudo apt upgrade
sudo apt instatll python3-pip
sudo apt install mysql-server mysql-client (注意安装数据库时一定要记得设置用户名和密码,密码最好和本地的一样)
sudo apt-get install nginx
sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper
sudo vi .bashrc 贴入下面三行代码:
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

2.进入项目下的settings.py将本地的项目Debuge改为False,ALLOWED_HOSTS = ['*'] ,并将静态url注掉
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
改为:

STATIC_ROOT = os.path.join(BASE_DIR,'static')

将本地项目压缩,导出本地的虚拟环境和数据库数据,然后依次通过scp命令上传到服务器:

scp 压缩文件 用户名@ip地址:home/ubuntu
例如: scp Desktop/Desktop.zip ubuntu@94.191.98.70:/home/ubuntu

创建虚拟环境并进入,将上传的虚拟环境文件导入 ,安装uwsgi

sudo pip install uwsgi


进入服务器的MySQL数据库,建一个和本地一样的数据库,并导入上传的数据库数据
3.解压上传的项目压缩包,在项目下新建一个conf文件夹,进入配置nginx和uwsgi,直接上代码:(修改外网IP和静态路径)

vi test_nginx


贴入以下代码并保存退出 shift+z+z

the upstream component nginx needs to connect to

upstream django {

server unix:///path/to/your/mysite/mysite.sock; # for a file socket

server 127.0.0.1:8000; # for a web port socket (we'll use this first)
}

configuration of the server

server {

the port your site will be served on

listen 80;

the domain name it will serve for

server_name 你的外网ip ; # substitute your machine's IP address or FQDN
charset utf-8;

max upload size

client_max_body_size 75M; # adjust to taste

Django media

location /media {
alias /home/ubuntu/test1/static/media; # 指向django的media目录
}

location /static {
alias /home/ubuntu/test1/static; # 指向django的static目录
}

Finally, send all non-media requests to the Django server.

location / {
uwsgi_pass django;
include uwsgi_params; # the uwsgi_params file you installed
}
}


建立一条软连接

sudo ln -s /home/ubuntu/项目名字/conf/test_nginx.conf /etc/nginx/conf.d


重启nginx:

sudo service nginx restart


拉取所有需要的static file到同一个目录,

cd ..
python manage.py collectstatic


再次进入conf配置uwsgi

vi uwsgi.ini


贴入以下代码,按照提示修改自己的项目名,应用名及虚拟环境名即可

mysite_uwsgi.ini file

[uwsgi]

Django-related settings

the base directory (full path)

chdir = /home/ubuntu/项目名

Django's wsgi file

module = 应用名.wsgi

the virtualenv (full path)

process-related settings

master

master = true

maximum number of worker processes

processes = 10

the socket (use the full path to be safe

socket = 127.0.0.1:8000

... with appropriate permissions - may be needed

chmod-socket = 664

clear environment on exit

vacuum = true
virtualenv = /home/ubuntu/.virtualenvs/虚拟环境名称

虚拟环境路径

logto = /tmp/mylog.log


最后 拉起项目

uwsgi uwsgi.ini


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容