Apache配置格局

2019-08-03 01:51 来源:未知

记录一次在全新服务器下配置Django项目说明:

网友Liu xu最新分享(2017.1.10) 全新服务器下配置Django项目(运行模式:Ubuntu Django Apache2 Mod_wsgi) 见 http://www.linuxidc.com/Linux/2017-01/139417.htm

Flask本身就可以直接启动HTTP服务器,但是受限于管理、部署、性能等问题,在生产环境中,我们一般不会使用Flask自身所带的HTTP服务器。

Linux操作系统:Ubuntu 16.04

--------------------以下内容可能太古老而不行--------------------

从现在已有的实践来看,对于Flask,比较好的部署方式是使用uWSGI做WSGI容器,Nginx做前端服务器。这样做的好处在于:

Django版本:1.8.7

1.安装apache2 和libapache2-mod-wsgi

  1. uWSGI性能好,提供的功能也很多,运维方便。
    2. Nginx对于静态文件处理较好,而且默认支持uWSGI协议,在负载均衡和压力控制上都可以很方便的实现。

Python版本:2.7.12

sudo apt-get install apache2 libapache2-mod-wsgi

现在说一下具体的部署步骤:

运行模式:Ubuntu Django Apache2 Mod_wsgi

2.安装Django

因为本人比较喜欢Ubuntu Server做服务器操作系统,所以这些操作只适于Ubuntu系统。在Ubuntu中我们就应该安装Ubuntu的方式进行部署运维,而不是进行编译安装,通过ubuntu apt源安装部署,不仅在整体风格上符合系统风格,而且提供给配置和运维巨大方便。

Apache2配置文件:sudo vi /etc/apache2/apache2.conf

从官网下载,解压后安装,这个很容易,不说了

首先更新软件源:

Apache2错误日志:cat -n /var/log/apache2/error.log

3.创建Django项目

sudo apt-get update

Apache2命令:

最好不要将创建的项目放在apache的默认目录下,这里我们在home目录下用户文件夹下新建一个文件夹

安装Nginx:

启动:sudo /etc/init.d/apache2 start

  cd home
  cd sh3llc0der
  mkdir work

sudo apt-get install nginx

重启:sudo /etc/init.d/apache2 restart

然后在work目录下创建我们的项目

安装uWSGI以及uWSGI对于Python的支持:

停止:sudo /etc/init.d/apache2 stop

django-admin.py createproject hello

sudo apt-get install uwsgi uwsgi-plugin-python

配置过程如遇到错误,请仔细检查前面每一步是否有完全按照教程来执行。

创建成功后会生成一个hello的工程文件,里面包含另一个hello文件夹和manage.py等,可以通过manage.py来运行Django的测试服务器,但这里我们目的是通过Apache来访问。

安装virtualenv:
这里是一个个人选择问题,因为众多python包也可以通过apt源安装。
我个人习惯是,一些python工具通过源安装,比如supervisor,管理和升级都比较方便,而python一些第三方库还是在virtualenv中通过pip安装,像是virtualenv这样的基础工具还是通过源安装。

1.安装Django

4.配置wsgi

sudo apt-get install python-virtualenv

a)        sudo apt-get install python-pip

注意这里apache安装后的配置文件位于”/etc/apache2/sites-available/“目录下,前面在网上找资料都说是httpd.conf,真是坑爹,都没人试一试,抄来抄去,有你麻痹的意思啊

建立Python环境:

b)        sudo pip install Django==1.10.5

创建wsgi文件:

mkdir -p /var/virenvs
cd /var/virenvs
virtualenv myenv

2.安装Apache2

sudo nano /home/sh3llc0oder/work/hello/apache/django.wsgi

安装Flask:

a)        sudo apt-get install apache2

写入以下内容:

cd myenv
. bin/activate
pip install flask

3.安装libapache2-mod-wsgi

import os

建议使用pip的freeze和install -r requirement_file进行环境部署。

a)        sudo apt-get install libapache2-mod-wsgi

import sys

假设我们的项目路径在 /var/virenvs/myenv/myproject,这时我们可以通过git或者其他什么方式把程序部署上来。

4.创建项目及应用

path = '/home/sh3llc0der/work/hello'

给项目目录配置权限,nginx和uwsgi默认是以www-data用户和组来运行:

a)        创建项目

if path not in sys.path:

chown -R www-data:www-data /var/virenvs/myenv/myproject
chmod -R 775 /var/virenvs/myenv/myproject

  1. django-admin startproject 项目名称

    sys.path.insert(0, '/home/sh3llc0der/work/hello')

对于nginx和uwsgi我们可以使用vhost方式进行部署,这样既能保证每个项目使用独立的virtualenv又可以,共用一个uWSGI池,这样在使用、部署和管理上都比较方便。

b)        创建应用(如果有应用就上传到项目目录下,否则创建)

os.environ['DJANGO_SETTINGS_MODULE'] = 'hello.settings'

vim /etc/nginx/site-available/myproject

  1. python manage.py startapp 应用名称

import django.core.handlers.wsgi

server {
 listen 80;
 server_name hostname;
   
 location /static {
  alias /var/virenvs/myenv/myproject/static;
 }
   
 location / {
  include uwsgi_params;
  uwsgi_pass 127.0.0.1:9001;
  uwsgi_param UWSGI_PYHOME /var/virenvs/myenv;
  uwsgi_param UWSGI_CHDIR /var/virenvs/myenv/myproject;
  uwsgi_param UWSGI_MODULE mywebsite;
  uwsgi_param UWSGI_CALLABLE app;
 }
   
 error_page 404 /404.html;
}
其中mywebsite为项目目录下的mywebsite.py文件,UWSGI_CALLABLE为其中的Flask实例名。

5.项目和应用建好后给予权限

application = django.core.handlers.wsgi.WSGIHandler()

建立软连接到enabled目录

a)        chown -R www-data:www-data 项目名称

首先修改一下host文件,将域名testmydjango.com指向127.0.0.1

ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/myproject

6.配置Apache2

图片 1

uwsgi配置

a)        sudo vi /etc/apache2/apache2.conf

现在我们需要创建一个自己的站点:

vim /etc/uwsgi/apps-available/myuwsgi.ini

图片 2

sudo nano /etc/apache2/sites-available/hello.conf

[uwsgi]
plugins=python
vhost=true
socket=127.0.0.1:9001
uwsgi还有很多其他配置项,生成环境中需要好好配置。

169-177行是我添加的内容 

写入以下内容:

建立软连接到enabled目录

169 <Directory /home/z/product/Code>(改为自己的项目目录)

    ServerName hello.djangoserver
    DocumentRoot /home/sh3llc0der/work/hello

ln -s /etc/uwsgi/apps-available/myuwsgi.ini /etc/uwsgi/apps-enabled/myuwsgi.ini

170        Options Indexes FollowSymLinks

    /home/sh3llc0der/work/hello>
        Order allow,deny
        Allow from all    

重启服务

171        AllowOverride None

    WSGIDaemonProcess testdjango.com processes=2 threads=15 display-name=%{GROUP}
    WSGIProcessGroup testdjango.com

service nginx restart
service uwsgi restart

172        Require all granted

    WSGIScriptAlias / /home/sh3llc0der/work/hello/apache/django.wsgi

部署完成

173 </Directory>

注意WSGIDaemonProcess和WSGIProcessGroup里面是我们的域名
然后我们激活创建的站点:
sudoa2ensitehello
sudo/etc/init.d/apache2reload
重启一下apache
sudo/etc/init.d/apache2restart
访问testdjango.com

推荐阅读

174 WSGIScriptAlias / /home/z/product/Code/Code/wsgi.py(改为自己的项目文件)

图片 3

你应该使用 Nginx uWSGI http://www.linuxidc.com/Linux/2013-07/87286.htm

175 WSGIPythonPath /home/z/product/Code(改为自己的项目文件)

如果遇到服务器403的错误,那么可能是你的"/"目录被禁止访问(默认)
修改一下apache2.conf文件(位于/etc/apache2/)
把Require all denied改为Allow from all就可以了

uWSGI Nginx 部署 Flask Web 应用 http://www.linuxidc.com/Linux/2013-06/85828.htm

176 Alias /static/ /home/z/product/Code/business/static/(改为自己的项目内的应用)

图片 4

Django Nginx uWSGI 部署 http://www.linuxidc.com/Linux/2013-02/79862.htm

177 Alias /static/ /home/z/product/Code/yyl/static/(改为自己的项目内的应用)

Django 的详细介绍:请点这里
Django 的下载地址:请点这里

Linux下Nginx uWSGI部署Python应用 http://www.linuxidc.com/Linux/2012-10/72443.htm

 

推荐阅读:

Ubuntu Server 12.04 安装Nginx uWSGI Django环境 http://www.linuxidc.com/Linux/2012-05/60639.htm

169-175行的功能为添加项目至Apache

Ubuntu Server 12.04 安装Nginx uWSGI Django环境 http://www.linuxidc.com/Linux/2012-05/60639.htm

CentOS 5.5 Nginx 0.8.50 uWSGI Django 1.2.3 部署Django项目 http://www.linuxidc.com/Linux/2011-05/36399.htm

176和177行是为了加载应用内/static/目录内的静态资源

Django实战教程 http://www.linuxidc.com/Linux/2013-09/90277.htm

更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

错误及解决方案:

Django Python MySQL Linux 开发环境搭建 http://www.linuxidc.com/Linux/2013-09/90638.htm

图片 5

下面错误可能只是自己当前项目中所遇到的错误,其他项目请忽略。

图片 6

问题一:ImportError: No module named celery

sudo pip install git

问题二:No module named PIL.ImImagePlugin

sudo apt-get install python-imaging

问题三:No module named requests

sudo pip install requests

问题四:No module named dss.Serializer

sudo pip install django-simple-serializer

Ubuntu 14.04下Django MySQL安装部署全过程 http://www.linuxidc.com/Linux/2016-02/128714.htm

Ubuntu 16.04下安装部署 Nginx uWSGI Django1.9.7  http://www.linuxidc.com/Linux/2016-07/133484.htm

Django 的详细介绍:请点这里
Django 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/139417.htm

图片 7

TAG标签: 韦德娱乐1946
版权声明:本文由韦德娱乐1946_韦德娱乐1946网页版|韦德国际1946官网发布于韦德国际1946官网,转载请注明出处:Apache配置格局