博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ubuntu14.04 Server amd64 配置 Apache+MySQL+Django
阅读量:6003 次
发布时间:2019-06-20

本文共 5680 字,大约阅读时间需要 18 分钟。

写在前面
因为不同版本的apache等软件文件夹和配置文件的名称设置都不尽相同,网上累死累活查了好多个博客就没一个能成功配出来的。
所以本文也不一定能帮到你,请在确定对自己有用之前不要盲目转载,以免给后来人制造更多的信息筛选负担。
Made By:
 
写本文时各软件的版本
apache2:2.4
Django:1.6.1
MySQL:5.5.37
Python:2.7.6
apache版本不同,配置文件的地方和名称可能不同。比如看网上的教程,作死也找不到httpd.conf。。。
 
各种安装
先考虑要不要
sudo apt-get updatesudo apt-get upgrade

然后

python是预装的,python --version查看
装Apache、wsgi、Django、MySQL、MySQLdb
sudo apt-get install apache2 sudo apt-get install libapache2-mod-wsgisudo apt-get install python-djangosudo apt-get install mysql-server mysql-clientsudo apt-get install python-mysqldb

 

设置apache文件夹权限

cd /etc/apache2sudo nano apache2.conf
找到
Options FollowSymLinks AllowOverride None #Require all denied Allow from all

井号是我加的,Alow from all也是加的,改成这个样子就是了。

 
建立Django工程目录
不建议建在/var/www,如果系统设置问题导致不识别.py为网页文件时,/var/www作为Apache默认Web文件夹,.py源文件将可以被下载而泄漏。
我把文件放在了/home/djangoapps/
sudo mkdir /home/djangoappssudo mkdir /home/djangoapps/work

创建Django工程(网页文件夹)

cd /home/djangoapps/workdjango-admin startproject mysite

 

建wsgi

在随便哪里建wsgi,比如
sudo nano /home/djangoapps/work/mysite/apache/django.wsgi

填入如下内容

import osimport syspath = '/home/djangoapps/work/mysite'if path not in sys.path:    sys.path.insert(0, '/home/djangoapps/work/mysite')os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'import django.core.handlers.wsgiapplication = django.core.handlers.wsgi.WSGIHandler()

path是刚创建的工程文件夹位置,对应"mysite"的地方都是对应那个工程的名字。

 

建站点设置文件

去/etc/apache2/sites-available/建站点设置文件
cd /etc/apache2/sites-availablesudo nano mysite.conf

填入如下内容

#ServerName hello.djangoserver DocumentRoot /home/djangoapps/work/mysite
Order allow,deny Allow from all
WSGIDaemonProcess mydjangosite processes=2 threads=15 display-name=%{GROUP} WSGIProcessGroup mydjangosite WSGIScriptAlias / /home/djangoapps/work/mysite/apache/django.wsgi

为了让内容干净,解释就在外面说了:

ServerName这里注释掉了,可以设置域名的,设置这里的话其他地方也要配合设置
两个路径都是刚刚建的工程的路径
关于WSGIxxxx三条设置后面再说。
WSGIScriptAlias 空格 / 空格 /wsgi的路径。前面那个'/'可以是/xxxx什么的,访问的方式是 localhost/xxxx,不过我没成功@_@,所以就一个孤零零的 '/'吧。
 
启动站点
别离开/etc/apache2/sites-available
sudo a2ensite mysitesudo service apache2 reload

Django站点已经配置好了,但是这时访问127.0.0.1看到的是apache页面。

————————————————————————————————————————
 
关于端口
在/etc/apache2/sites-available可以看到000-default.conf,这个就是apache默认的站点,对应/var/www/html
如果都用80端口的话,访问到的是apache,而不是刚建的django。
可以关闭这个站点,
sudo a2dissite 000-defaultsudo service apache2 reload

这时就能正常访问刚建的django站点了。

也可以换个端口,在mysite.conf文件中,<VirtualHost *:80>改成<VirtualHost *:xxxx>自己要的端口,比如8000。
然后改ports.conf
cd /etc/apache2sudo nano ports.conf

看到Listen 80了吧,下面加一行 Listen 8000,就能用8000端口了。

sudo service apache2 reload

这样127.0.0.1访问的是apache站点,127.0.0.1:8000访问的就是我们的django站点了。

 

关于WSGIxxxx
以下是转载 :
mod_wsgi 有两种运行模式,第一种是嵌入模式,类似于mod_python,直接在apache进程中运行,这样的好处是不需要另外增加进程,但是坏处也很明显,所有内存都和apache共享,如果和mod_python一样造成内存漏洞的话,就会危害整个apache。而且如果apache是用worker mpm,mod_wsgi也就强制进入了线程模式,这样子对于非线程安全的程序来说就没法用了。这种模式下只需要在apache下面设置WSGIScriptAlias /path /path-to-wsgi即可生效,对于小型脚本的话,直接用这种模式即可。第二种是后台模式,类似于FastCGI的后台,mod_wsgi会借apache的外壳,另外启动一个或多个进程,然后通过socket通信和apache的进程联系。这种方式只要使用以下配置即可开启:#启动WSGI后台,site1是后台名字WSGIDaemonProcess site1 processes=2 threads=15 display-name=%{GROUP}#分配当前上下文应该使用哪个WSGI后台,可以放在Location里面指定WSGIProcessGroup site1#根据当前上下文的ProcessGroup分配到对应的后台WSGIScriptAlias /path /path-to-wsgi后台模式由于是与apache进程分离了,内存独立,而且可以独立重启,不会影响apache的进程,如果你有多个项目(django),可以选择建立多个后台或者共同使用一个后台。比如在同一个VirtualHost里面,不同的path对应不同的django项目,可以同时使用一个Daemon:WSGIDaemonProcess default processes=1 threads=1 display-name=%{GROUP}WSGIProcessGroup defaultWSGIScriptAlias /project1 “/home/website/project1.wsgi”WSGIScriptAlias /project2 “/home/website/project2.wsgi”这样子两个django都使用同一个WSGI后台。也可以把不同的项目分开,分开使用不同的后台,这样开销比较大,但就不会耦合在一起了。display-name是后台进程的名字,这样方便重启对应的进程,而不需要全部杀掉。WSGIDaemonProcess site1 processes=1 threads=1 display-name=%{GROUP}WSGIDaemonProcess site2 processes=1 threads=1 display-name=%{GROUP}
WSGIProcessGroup site1
WSGIScriptAlias /project1 “/home/website/project1.wsgi”
WSGIProcessGroup site2
WSGIScriptAlias /project2 “/home/website/project2.wsgi”对于django 1.0以下的版本,由于官方认定不是线程安全的,所以建议使用多进程单线程模式processes=n threads=1但是我自己在用django 0.9.6,使用多线程模式在很多项目里面基本都没有问题,包括在worker模式下面使用mod_python,其实是一样的道理,呵呵。升级到django 1.0以后,就可以放心的使用多进程多线程模式了:processes=2 threads=64这样子性能会更好。下面是两种模式的英文原文:When hosting WSGI applications using mod_wsgi, one of two primary modes of operation can be used. In ‘embedded’ mode, mod_wsgi works in a similar way to mod_python in that the Python application code will be executed within the context of the normal Apache child processes. WSGI applications when run in this mode will therefore share the same processes as other Apache hosted applications using Apache modules for PHP and Perl.An alternate mode of operation available with Apache 2.X on UNIX is ‘daemon’ mode. This mode operates in similar ways to FASTCGI/SCGI solutions, whereby distinct processes can be dedicated to run a WSGI application. Unlike FASTCGI/SCGI solutions however, a separate infrastructure is not needed when implementing the WSGI application and everything is handled automatically by mod_wsgi.Because the WSGI applications in daemon mode are being run in their own processes, the impact on the normal Apache child processes used to serve up static files and host applications using Apache modules for PHP, Perl or some other language is much reduced. Daemon processes may if required also be run as a distinct user ensuring that WSGI applications cannot interfere with each other or access information they shouldn’t be able to.
查看

 

 

转载于:https://www.cnblogs.com/CSGrandeur/p/3741871.html

你可能感兴趣的文章
微信公众号开发——入门
查看>>
wallet.metamask.io 网页版钱包 connecting unknown network导致页面卡住
查看>>
eclipse启动不了报错java was started but returned exit code=13
查看>>
Ubuntu安装Go语言环境
查看>>
Day 1: How to install jedi/codeintel plugin for sublime on Linux
查看>>
Ajax_ajax请求中的跨域问题---浏览器不允许ajax跨域获取服务器数据,那我们就用jsonp来实现跨域...
查看>>
jQuery学习
查看>>
43.菜单工具插件——menu
查看>>
精通Git(第2版)
查看>>
Windows Phone 8.1 后台任务
查看>>
cocos自动图集
查看>>
移动端的兼容性问题
查看>>
20160416--javaweb之国际化
查看>>
Slackware Linux or FreeBSD 配置中文环境。
查看>>
Github 上利用github pages 部署站点
查看>>
泛型依赖注入
查看>>
VI/VIM 编辑器
查看>>
无限滚动加载(第一次请求完成后才发第二次请求)
查看>>
PIE SDK地图平移校正
查看>>
BZOJ 3684 大朋友和多叉树
查看>>