得,这两天啥也没干,就和这个部署网站干上了。好吧,记录下辛酸史。
首先要在ubuntu上安装虚拟环境。
为了不让自带的python2.7有影响,在部署前先卸载了一波
sudo apt-get remove python2.7 #卸载python2.7
sudo apt-get remove --auto-remove python2.7 #卸载其中的一些依赖文件
sudo apt-get purge python2.7 or sudo apt-get purge --auto-remove python2.7 #消除python2.7
这样我们项目就只有一个Python3不会冲突了。
下面我们现在Ubuntu上先创建我们的虚拟环境,这样我们就可以在服务器上搭建多个Django项目,而不受影响了。
pip3 install virtualenvwrapper
输入 ll指令,我们可以查看当前目录下的详细信息
我们应该对 .bashrc这个文件进行修改,在最后面添加
sudo vim ~/.bashrc
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
使用 wq! 保存后进行加载
source ~/.bashrc
这时候我们就一创建我们的虚拟环境了
mkvirtualenv 虚拟环境名(一般取你的项目名)
workon 虚拟环境名 进入到你的虚拟环境
deactivate 退出虚拟环境
我们应该在ubuntu中安装数据库
$ sudo apt-get update #更新软件源
$ sudo apt-get install mysql-server #安装mysql
$ service mysql start #启动mysql服务器
$ service mysql stop #关闭mysql服务器
$ sudo netstat -tap | grep mysql #检查是否成功开启
$ mysql -u root -p #进行登陆
$ mysql -h ip -u root -p #远程登陆 在本地输入你服务器的地址,公网Ip
这些初始化的工作完成后,都我们在开发的时候我们,可以使用远程连接我们的数据库,做好之后不耽搁项目
在我们第一次搭建这个的时候我们最好将我们在虚拟环境下创建的目录放到明显的地方。
就在 root 目录下我们创建一个 Project目录吧!
我们先进入到我们的目录下
使用 git 工具进行将我们的项目从远程仓库克隆到本地。 详细的Git流程点击
还有一点挺重要的,就是把我们在开发所用计算机下,所用的库要导入到这个虚拟环境中。
我们可以使用
C:\Users\BXY>pip freeze > req.txt
进行打包,然后git到远程在克隆到虚拟环境下。
这个就是我搭建的目录所示,为了不让迷惑,下面关于路径的配置,可以以这个作参考
首先我们应该修改 settings.py 文件中的
Debug = False #改为False 下面就不允许为空
ALLOWED_HOST = ['*'] #这个也可以填写指定的ip
我们退回到,manage.py 同级目录
然后测试,我们的项目是否可以起来。
python manage.py runserver 0.0.0.0:80
可能会服务占用这个端口,我们可以通过
netstat -ntulp |grep 80 #查看端口
sudo fuser -k 80/tcp #停止这个端口下的服务 如果想要删除其他端口直接 替换80
这两个指令,确实帮了我好多忙
入过我们的项目没有起来,那么做下面的工作就注定是徒劳的,因为 django 、uwsgi、ngnix是相互独立的。
后两者是为了托管项目
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换
安装 uwsgi模块
sudo pip3 install uwsgi
在manage.py同级中创建uwsgi.ini 文件
切记,在和nginx一起搭配的时候,这里面就不要写静态文件的地址,否则,我。。。
里面的内容如下:
[uwsgi]
socket=127.0.0.1:8000 #ip应该写你服务器的 私网ip
chdir=/root/Project/love
module=slience/wsgi.py #相对路径,相对chdir的路径
master=true
processes=4
threads=2
logto=uwsgi.log
pidfile=uwsgi.pid
vacuum=true
HOME=/root/.virtualenvs/slience/bin/
PYTHON=/root/.virtualenvs/slience/bin/python
要注意里面的路径,下面便回多出几个文件
我们如果搭建不成功,可以通过 cat uwsgi.log
查看错误信息
uwsgi --ini uwsgi.ini #启动uwsgi服务的命令
下面我们就可以安装nginx服务器了
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等
sudo apt-get install nginx
安装完成之后我们进入到 /etc/nginx 目录下 修改 nginx.conf
配置如下
events {
worker_connections 1024;
}
http{
include /etc/nginx/mime.types;
server {
listen 80;
server_name 0.0.0.0;
charset UTF-8;
index index.html;
access_log /var/log/nginx/MyProject_access.log;
error_log /var/log/nginx/MyProject_error.log;
client_max_body_size 75M;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000; #这个要和uwsgi中的 socket 地址一样,映射关系
uwsgi_read_timeout 30;
}
location static/{
expires 30d;
autoindex on;
add_header Cache-Control private;
alias /root/Project/static/;
}
}
}
遇到一个头疼的事情就是静态文件加载不了,尝试好多
后来 将 location /static/ 前面 / 去掉就可以正常运行了 (心酸)
最后在执行
uwsgi -d --ini uwsgi.ini #启动uwsgi服务器,这样就可以在成为一个服务
/etc/init.d/nginx start #启动nginx
#每次进行修改文件时之后的重启命令
uwsgi --reload uwsgi.ini
nginx -s reload
这样一个项目就配置完成了。
我们可以看看他们之间的关系
话不多说了,不知不觉脖子疼。
希望可以帮助到你解决搭建的烦恼!
see you !!!