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


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

    闲着无聊的时候部署了一个Django项目玩,用vm虚拟机部署的。

    准备工作

    我使用的系统是Ubuntu16.04,大家可以去官网下载

    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
    好好学习-天天撸码
  • 相关阅读:
    Hadoop 0.23.1 Release Notes
    maven编译参数
    Hadoop快速入门
    HTML Parser HTML Parser
    EasyHadoop v1.0
    Hudson+Maven+SVN 快速搭建持续集成环境
    对技术要有足够的尊重和敬畏
    hudson设置
    python之强大的日志模块 竹叶青 的专栏 博客频道 CSDN.NET
    PHP学习之七:错误控制运算符
  • 原文地址:https://www.cnblogs.com/stevenshushu/p/7844771.html
Copyright © 2020-2023  润新知