前言
以这个Blog项目为例,服务器部署Django,也是第一次在服务器部署Django。
环境选择
- Python 3.7.2
- Django==2.1.5
- Ngnix(无要求,最新便可)
- Uwsgi(无要求,最新便可)
- Centos 7.x
这次没有把项目运行在虚拟机( virtualenv )或其他进程管理工具,主要是服务配置太低,以及也就放自己的Blog,不会放其他的项目。
安装Python3
-
centos7默认自带python2,所以先安装一下python3
-
先安装依赖
-
yum -y upgrade //update software package yum -y install gcc g++ yum -y groupinstall "Development tools" yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
-
-
新建一个安装python3的文件夹并进入
-
mkdir /usr/local/python3 cd /usr/local/python3
-
-
下载python3.7.2,解压,编译,安装
-
wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz //download tar -xf Python-3.7.2.tar.xz //decompress cd Python-3.7.2 //Entry directory ./configure --prefix=/usr/local/python3 make && make install
-
-
重要一步,创建软链接,不创建用不了python3以及pip3这两个命令
-
ln -s /usr/local/python3/bin/python3 /usr/bin/python ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
-
-
上面执行完,就可以使用python3和pip3了
安装Django
-
直接使用命令安装Django,注意版本
-
pip3 install Django==2.1.5 //Django version of blog project
-
-
安装Blog所需的模块
-
pip3 install Django-taggit //tags pip3 install Django-mdeditor //editor pip3 install Markdown //markdown Render pip3 install Pygments //highlight code
-
-
安装Uwsgi
-
pip3 install uwsgi
-
-
建立软链接
-
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
-
-
回到根目录建立一个项目存放地址,顺便给予目录读写权限,方便管理。
-
mkdir -p /Blog/wwwroot/ sudo chmod 777 /Blog/wwwroot/ cd /Blog/wwwroot/
-
-
安装git,从远程仓库克隆代码到本地
-
yum –y install git git clone https://github.com/Playwi0/Blog.git
-
-
进入目录,测试django项目是否能运行
-
cd Blog/blog/ #current directory /Blog/wwwroot/ python3 manage.py runserver
-
-
出现下面代码则证明正常运行
-
确认没问题,ctrl+c停止项目,修改settings.py
-
cd blog #parent directory /Blog/wwwroot/Blog/blog/ vi settings.py
-
-
修改两处
-
DEBUG = False #close debug ALLOWED_HOSTS = ['*'] #allow all ip to access
-
-
保存退出
安装nginx
-
幸运的话,执行下面命令就可以安装
-
yum install -y nginx
-
-
运气不好就先执行以下命令,安装nginx源
-
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm yum install -y nginx //install nginx
-
-
到这,已经安装项目所需的全部环境
关闭系统干扰
-
如果是新生最好先暂时关闭防火墙,避免以下不必要的错误
-
sudo systemctl stop firewalld #close firewall temporarily sudo firewall-cmd --zone=public --add-port=80/tcp --permanent #pen the required ports sudo firewall-cmd --reload # reload firewall
-
-
将 SELinux 设置为宽容模式。
-
sudo setenforce 0
-
配置文件
-
进入到项目目录下面,创建uwsgi的ini文件,也就是和manage.py同一目录,
-
cd /Blog/wwwroot/Blog/blog/ vi blog.ini #create blog.ini
-
-
在里面写入配置信息
-
[uwsgi] socket = 127.0.0.1:8090 #nginx #http = 127.0.0.1:8090 #uwsgi chdir = /Blog/wwwroot/Blog/blog/ #Project root directory wsgi-file = wsgi.py # module = blog.wsgi processes = 2 threads = 4 master =True pidfile = uwsgi.pid daemonize=uwsgi.log
-
uwsgi本身就封装http协议,可以直接设置http访问。如果是nginx就要设置socket,注释http,记得在项目目录创建uwsgi.pid,uwsgi.log,不创就删了最后两行
-
-
运行ini文件
-
uwsgi --ini blog.ini
-
-
出现以下代码说明运行正常
-
如果不想使用ini配置,uwsgi也支持xml,在这不赘述。
-
配置nginx文件,不知道文件在哪可以用以下命令查看
-
whereis nginx
-
-
我的是在 /etc/nginx目录下
-
vi /etc/nginx/nginx.conf
-
-
-
修改server部分
-
server { listen 80; #listening port server_name _; #your domain name or nothing # Load configuration files for the default server block. #include /etc/nginx/default.d/*.conf; location / { uwsgi_pass 127.0.0.1:8090; #same as uwsgi socket include uwsgi_params; } location /static { alias /Blog/wwwroot/Blog/blog/blogapp/static/; #static file } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
-
-
保存,重启nginx即可
-
nginx -s reload
-
-
去访问你的blog吧