• Ubuntu 16.04.5部署Django环境


    1、安装python环境

    使用如下命令安装的是3.5.x版本

    sudo apt-get install python3-pip

    如果使用下面的命令,会安装2.x版本的python

    sudo apt-get install python-pip

    pip不建议更新到最新版本,会出现很多未知错误

    # 这是更新语句,但是不建议用
    pip3 install --upgrade pip

    2、安装python虚拟化环境virtualenv

    sudo pip3 install virtualenv

    安装完毕后创建名为VENV的虚拟环境

    virtualenv VENV

    激活虚拟环境

    source venv/bin/activate

    这样就进入虚拟环境中了,可以部署站点所用的插件

    pip install -r requirements.txt

    注:在这里,我们使用pip而不是pip3的原因是虚拟环境里只有py3的存在,所以我们输入“python”和“pip”所关联的都会是py3的。在虚拟环境中输入是不会报错的,而在真实的环境里则会是显示py2。

           安装分页插件pagination的时候,如果你是py3,请使用pip install django-pagination-py3==1.1.1命令安装,网上很多文章针对的都是py2的,当你用网上的命令安装这个插件后,在py3下是不会有效果的。

    安装完毕后就可以退出虚拟环境,继续下面的安装了。

    # 退出虚拟环境
    deactivate
    # 删除虚拟环境
    rm -rf VENV

    3、启用root账户和开启root登录权限

    基于安全角度不应该配这一步,但是为了方便使用FileZilla上传文件,暂时开通,等都配置完毕后,关闭即可

    修改root密码

    sudo passwd root

    开启root登录权限

    sudo vi /etc/ssh/sshd_config

    将PermitRootLogin选项改为yes,然后重启服务器即可(原来是 prohibit-password)

    4、上传站点文件

    目录结构如下:

    /var/www/
    ├── html
    ├── mblog
    │   ├── mainsite
    │   ├── mblog
    │   ├── static
    │   └── templates
    └── VENV
        ├── bin
        ├── include
        └── lib

    5、安装apache2和mod_wsgi

    sudo apt-get install apache2 libapache2-mod-wsgi-py3

    新建一个网站的配置文件

    sudo vim /etc/apache2/sites-available/sitename.conf
    <VirtualHost *:80>
        ServerName localhost:80
        ServerAlias 192.168.9.5
        ServerAdmin xxxxx@qq.com
    
        Alias /media/ /var/www/mblog/media/
        Alias /static/ /var/www/mblog/static/
    
        <Directory /var/www/mblog/media>
            Require all granted
        </Directory>
    
        <Directory /var/www/mblog/static>
            Require all granted
        </Directory>
    
        WSGIScriptAlias / /var/www/mblog/mblog/wsgi.py
        WSGIDaemonProcess http://192.168.9.5:80 python-path=/var/www/VENV/lib/python3.5/site-packages
        WSGIProcessGroup http://192.168.9.5:80
    
        <Directory /var/www/mblog/mblog>
        <Files wsgi.py>
            Require all granted
        </Files>
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/error-my_blog.log
        CustomLog ${APACHE_LOG_DIR}/access-my_blog.log combined
    </VirtualHost>

    配置apache来加载mod_wsgi

    # 先关闭Apache服务
    sudo service apache2 stop  
    # /etc/apache2/apache2.conf加入下面一句话
    LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so 

    如果找不到.so文件,可以用下面的语句查找

    sudo find / -name mod_wsgi.so  

    6、修改wsgi文件

    文件路径在/var/www/mblog/mblog/

    """
    WSGI config for mblog project.
    
    It exposes the WSGI callable as a module-level variable named ``application``.
    
    For more information on this file, see
    https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/
    """
    
    import os
    from os.path import join,dirname,abspath
    
    PROJECT_DIR = dirname(dirname(abspath(__file__)))
    
    from django.core.wsgi import get_wsgi_application
    
    import sys
    sys.path.insert(0,PROJECT_DIR)
    sys.path.append("/var/www/VENV/lib/python3.5/site-packages")
    
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mblog.settings')
    
    application = get_wsgi_application()

    7、激活网站重启服务

    sudo service apache2 reload 
    sudo a2dissite 000-default && a2ensite sitename.conf
    sudo service apache2 restart

    8、其他

    (1)日志目录

    cd /var/log/apache2

    (2)处理Django admin打开时CSS和JS丢失的问题

    在setting.py 底部设置添加如下代码

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

    执行以下代码

    python manage.py collectstatic

    参考文章:https://www.jianshu.com/p/ff78d1ab5091

              https://www.cnblogs.com/lexus/archive/2012/02/23/2365896.html

           https://www.cnblogs.com/sxwen/p/8006782.html

  • 相关阅读:
    关于AutoResetEvent和ManualResetEvent
    (转)使用 ODP.NET 和引用游标优化结果集
    胰腺
    SQL Cache Dependency
    败犬的远吠?
    吃亏和付出经常是必须的(转)
    AutoResetEvent 与 ManualResetEvent送花例子
    linux yum install
    SpringMVC+JPA+SpringData配置
    Spring AOP 实现原理
  • 原文地址:https://www.cnblogs.com/szwx1314/p/9541629.html
Copyright © 2020-2023  润新知