资讯专栏INFORMATION COLUMN

Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器

silvertheo / 1030人阅读

摘要:百度不行就用吧,中文不行就找英文的,最后,给我误打误撞的部署成功了。准备工作我使用的系统是版,官网下载地址安装的时候全部选择英文,记得以前选择中文的时候安装时出了问题,服务器组件一个不选,安装做的很贴心,基本上是一路回车,就不详细说明了。

Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器

前不久为了部署Django项目,在百度上到处找教程,找到的教程因为这样那样的原因,总是失败,可能是因为作者水平比较高吧,有些细节的东西估计没写出来,造成我这种初学者想照着做都做不成。百度不行就用Google吧,中文不行就找英文的,最后,给我误打误撞的部署成功了。为了加深印象,我用虚拟机再重新部署一次。

准备工作

我使用的系统是Ubuntu14.04.5 LTS(Trusty Tahr) server i386版,官网下载地址:http://releases.ubuntu.com/14.04.4/ubuntu-14.04.5-server-i386.iso

安装的时候全部选择英文,记得以前选择中文的时候安装时出了问题,服务器组件一个不选,Ubuntu安装做的很贴心,基本上是一路回车,就不详细说明了。
装好以后,首先要更新apt-get,貌似我的ubuntu镜像是在国内站下载的,所以源是国内的地址,所以就不用更换源了。

1. 更新apt-get

sudo apt-get update
sudo apt-get upgrade

2. 安装SSH

sudo apt-get install ssh

装好以后,用ifconfig查看一下IP地址

可以看到IP地址是192.168.0.154,下面我们就使用XSHELL连接192.168.0.154进行操作了。

3. 安装Git

这一步不是必须的,因为我的测试项目是放在git.oschina.com上的,安装git获取项目代码就很方便了

sudo apt-get install git
安装配置MySQL

1. 安装

sudo apt-get install mysql-server

安装过程中会提示让你设置root密码

2. 配置

2.1 数据库初始化:

sudo mysql_install_db

2.2 运行数据库Mysql安全配置向导

sudo mysql_secure_installation

输入root密码

是否修改root密码,因为前面已经设置过了,选n

是否移除匿名用户,肯定是要选y的

是否允许远程登陆,如果选n的话,只能在本机访问数据库,建议选y

是否移除test数据库,建议选是

重新加载权限表,选y

All done!

安装配置Python环境

1.安装python-dev包

sudo apt-get install python-dev

2.安装pip

sudo apt-get install python-pip

3.更换pip源
因为国内使用默认的pip源速度很慢,所以需要更换,在用户根目录下新建.pip目录,在该目录下新建pip.conf文件

sudo mkdir ~/.pip
sudo vi ~/.pip/pip.conf

然后在文件里写上:

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host=mirrors.aliyun.com

4.安装配置VirtualEnv和VirtualEnvWrapper
VirtualEnv可以管理多个开发环境,VirtualEnvWrapper使得VirtualEnv变得更好用

sudo pip install virtualenv virtualenvwrapper

安装完成以后,需要在环境变量中加入一些配置:
下面这句话是使用python3才需要执行的,python2不需要

echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc

不管python是什么版本,都要执行下面两句:

echo "export WORKON_HOME=~/Env" >> ~/.bashrc
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc

可以重启系统激活,也可以运行:

source ~/.bashrc

然后就可以开始建立一个虚拟环境:

mkvirtualenv first

你会发现,提示符变成(first)user@hostname:~$,表示现在已经进入first的虚拟环境,在此环境下进行的pip等操作,只会在当前环境下生效,当前虚拟环境在/home/siva/Env/first目录下

Django项目配置

1.安装django

我使用选择版本来安装:

pip install django==1.10.1

2.下载或拷贝项目

安装完成以后,使用git把项目clone下来,此处填写你自己的地址:

git clone https://git.oschina.net/xxx/Siva_First.git

此例子的项目名称是Siva_First,路径是在/home/siva/下

3.配置django

用Mysql建好项目的数据库,然后进入Siva_First目录,用django应用数据模型:

python manage.py makemigrations
python manage.py migrate

建立后台超级用户:

python manage.py createsuperuser

静态文件安置:

python manage.py collectstatic

4.测试项目

运行开发服务器测试一下是否可以正常运行:

python manage.py runserver 0.0.0.0:8000

这时,用浏览器打开http://192.168.0.154:8000/可以看到网站

5.退出虚拟环境

因为当前是在first虚拟环境下,为了下一步的安装,必须退出当前的虚拟环境:

deactivate
uWSGI安装和配置

1.安装uWSGI
pip下安装很简单:

sudo pip install uwsgi

我们可以测试一下uwsgi是否安装成功

uwsgi --http :8000 --home /home/siva/Env/first --chdir /home/siva/Siva_First -w Siva_First.wsgi

上面的命令是使用8000端口,虚拟环境在/home/siva/Env/first,项目在/home/siva/Siva_First下

2.配置uWSGI

使用上面的命令行来部署网站肯定是不行的,我们需要使用“Emperor mode”,建立一个目录来放配置文件:

sudo mkdir -p /etc/uwsgi/sites
cd /etc/uwsgi/sites

以项目名称来命名这个配置文件:

sudo vi Siva_First.ini

内容如下:

[uwsgi]
project = Siva_First
base = /home/siva

chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application

master = true
processes = 5

socket = %(base)/%(project)/%(project).sock
chmod-socket = 664
vacuum = true

project是项目名称,base是项目所在位置

现在,配置文件建好了,但是uwsgi还不能自动运行我们需要在/etc/init目录中建一个启动脚本:

sudo vi /etc/init/uwsgi.conf

内容如下:

description "uWSGI application server in Emperor mode"

start on runlevel [2345]
stop on runlevel [!2345]

setuid siva
setgid www-data

exec /usr/local/bin/uwsgi --emperor /etc/uwsgi/sites

这一步完成以后,uwsgi还是不能正常启动,是因为www-data用户组还没有创建,等我们装完nginx以后就可以了。

反向代理:Nginx的安装和配置

1.安装

sudo apt-get install nginx

2.创建配置文件

sudo vi /etc/nginx/sites-available/Siva_First

内容如下:

server {
    listen 80;
    server_name 192.168.0.154;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/siva/Siva_First;
    }

    location / {
        include         uwsgi_params;
        uwsgi_pass      unix:/home/siva/Siva_First/Siva_First.sock;
    }
}

然后把这个配置文件链接到sites-enabled目录下

sudo ln -s /etc/nginx/sites-available/Siva_First /etc/nginx/sites-enabled/

检查一下配置文件的语法是否有问题

sudo service nginx configtest

如果没问题,那么重启一下nginx和uwsgi的服务就可以访问了

sudo service nginx restart
sudo service uwsgi restart

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44212.html

相关文章

  • 基于python的种子搜索网站-项目部署

    摘要:本讲会对种子搜索网站的部署过程进行详细的讲解。配置数据库创建的数据库你的密码域名配置将你自己的域名写入到导入表结构创建超级用户创建文件在目录下,创建文件,并设置权限为运行配置配置位于配置,在下新建写入你的域名运行大功告成本讲会对种子搜索网站的部署过程进行详细的讲解。 网站演示: https://bt.mypython.me 源码地址: https://github.com/geeeeeee...

    番茄西红柿 评论0 收藏0
  • django+uwsgi+nginx部署web项目

    摘要:脚本启动服务器方便起见,我们可以设置脚本启动重启服务器,在目录下新建脚本,命名为,内容如下修改文件权限脚本启动配置完成,如果发布新版本之后记得执行该脚本才能生效。 系统需求 centos7 minimal python2.7 部署前的准备工作 centos7 minimal是精简版本,需要手动去配置一些设置。 1. 配置网络,设置固定ip ip可以自动获取,我这...

    Ali_ 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<