我遇到了同样的问题,并逐步记录了我的安装。它很长:你可以在我的博客上找到它。
它将帮助您解决以下问题:
- 工作副本
- 姜戈
- 太平船务
- 成像
- libjpeg
- mysql
- 混帐
- 阿帕奇
- mod_wsgi
- 简易安装
- 点子
- django-imagekit
- CentOS 5.4 上的 CDN 存储
安装 Apache、MySQL、SQLite 和其他开发人员包
yum install httpd-devel mysql mysql-server
yum install mysql-client mysql-devel
yum install apr-devel sqlite3 sqlite-devel
yum install libjpeg libpng gcc make autoconf
yum install libxslt gettext zlib-devel
yum groupinstall "GNOME Desktop Environment"
yum groupinstall "Development Tools"
本教程将假设您在生产环境中使用 MySQL,并且您也可以在开发环境中使用 SQLite。如果您正在使用另一个数据库,例如 PostgreSQL,那么您现在应该安装这些文件。另外,请注意,这些不是您的网络服务器所需的唯一软件包,这应该只是让您的 django 应用程序正常工作的最低要求。
添加新用户
groupadd webmaster
useradd -c "username" -g webmaster -m -s /bin/bash username
passwd username
passw0rd
visudo
在第 77 行附近显示“root ALL=(ALL) ALL 添加用户名 ALL=(ALL) ALL
从这里您可以更改为您的用户以保持根帐户不变。如果您发现某些项目不想运行,您应该使用 sudo 命令
在 Python 2.4 旁边安装 Python 2.6
让 Python 2.6 在 CentOS 5.4 上运行而不破坏任何东西的诀窍是将它安装在默认的 Python 2.4 旁边。不要尝试更新默认的 Python 2.4,因为重要的 CentOS 模块需要 2.4。为此,您将配置 python 安装在 /opt/python2.6 中。在执行此步骤之前,请确保您已安装 yum sqlite-devel,因为当您编译 python 时,python 将查找 sqlite 头文件以便为其构建模块。
wget http://www.python.org/ftp/python/2.6.4/Python-2.6.4.tgz
tar -zxvf Python-2.6.4.tgz
cd Python-2.6.4
./configure --prefix=/opt/python2.6 --with-threads --enable-shared --with-zlib=/usr/include
make
make install
cd ~
在 /opt/Python2.6 中安装 Python 后,您需要创建指向它的符号链接。
ln -s /opt/python2.6/lib/libpython2.6.so /usr/lib
ln -s /opt/python2.6/lib/libpython2.6.so.1.0 /usr/lib
ln -s /opt/python2.6/bin/python /usr/local/bin/python
ln -s /opt/python2.6/bin/python /usr/bin/python2.6
ln -s /opt/python2.6/lib/python2.6.so /opt/python2.6/lib/python2.6/config/
运行 ldconfig 以更新指向您的共享库的链接,然后检查您的 python 版本以确保您现在可以使用 2.6。另外,使用 yum 测试一下 Python 2.4 和 2.6 之间是否存在任何冲突。如果您确实有问题,请仔细检查您的符号链接并确保您没有与 /usr/bin/python 或 /usr/bin/python2.4 冲突。
/sbin/ldconfig -v
python -V
yum info httpd
安装 setuptools、MySQL 扩展和 Django 1.1
如果您之前安装了 setuptools 但您需要为 2.6 再次安装,以便将软件包安装在 /opt/python2.6 中。为了在 Django 中使用 MySQL,您需要下载、构建和安装它的扩展。
wget http://bit.ly/6E0DNN
chmod u+x setuptools-0.6c11-py2.6.egg
./setuptools-0.6c11-py2.6.egg --prefix=/opt/python2.6
wget http://bit.ly/6j4uID
tar -zxvf MySQL-python-1.2.3c1.tar.gz
cd MySQL-python-1.2.3c1
python setup.py build
python setup.py install
cd ..
wget http://www.djangoproject.com/download/1.1.1/tarball/
tar -zxvf Django-1.1.1.tar.gz
cd Django-1.1.1
python setup.py build
python setup.py install
cd ..
设置和安装 mod_wsgi
大多数 Django 社区使用 wsgi 作为与 Web 服务器交互的方式。我也更喜欢使用它,因为它快速且易于设置。本教程不会介绍如何设置您的应用程序以使用 wsgi(不过,我将在最后给出一个示例),但 django 项目有一个很好的教程。请注意,这一步非常重要。您可能以前使用 yum 安装了 mod_wsgi,但您需要下载它并使用新的 2.6 构建它,以便它与您的应用程序一起使用。
wget http://modwsgi.googlecode.com/files/mod_wsgi-2.8.tar.gz
tar -zxvf mod_wsgi-2.8.tar.gz
cd mod_wsgi-2.8
./configure --with-python=/usr/local/bin/python
make
make install
cd ..
然后您需要编辑您的 Apache httpd.conf 以加载 mod_wsgi 模块。完成后重新启动 Apache。
vi /etc/httpd/conf/httpd.conf
LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi.so
line 787
AddHandler wsgi-script .wsgi
确保您的 Apache 在模块加载后重新启动
/etc/init.d/httpd restart
为您的虚拟主机创建一个单独的目录
我喜欢将我所有的虚拟主机放在一个单独的目录中
cd /etc/httpd/conf
mkdir vhosts
cd vhosts
vi mysite.com.conf
<VirtualHost 127.0.0.1>
ServerName localhost
ErrorLog /www/django_test1/mysite/logs/error_log
CustomLog /www/django_test1/mysite/logs/access_log combined
UseCanonicalName Off
Alias /media/ "/www/django_test1/mysite/media/"
<Directory "/www/django_test1/mysite/media">
Order allow,deny
Options Indexes
Allow from all
IndexOptions FancyIndexing
</Directory>
Alias /mediaadmin/ "/opt/python2.6/lib/python2.6/site-packages/django/contrib/admin/media/"
<Directory "/opt/python2.6/lib/python2.6/site-packages/django/contrib/admin/media">
Order allow,deny
Options Indexes
Allow from all
IndexOptions FancyIndexing
</Directory>
WSGIScriptAlias / /www/django_test1/mysite.wsgi
WSGIDaemonProcess mysite processes=7 threads=1 display-name=%{GROUP}
WSGIProcessGroup mysite
WSGIApplicationGroup %{GLOBAL}
</VirtualHost>
创建你的 mod_wsgi 文件
根据我在网上进行的一些搜索,最好将您的 mod_wsgi 文件留在应用程序的父文件夹中。
mkdir /www
cd /www
mkdir django_test1
cd django_test1
vi mysite.wsgi
#!/opt/python2.6/bin/python
import os, sys
sys.path.append('/www/django_test1/mysite')
sys.path.insert(0, '/www/django_test1')
sys.path.insert(0, '/www/django_test1/mysite')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
os.environ['PYTHON_EGG_CACHE'] = '/www/django_test1/mysite/.python-eggs'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
保存文件
创建一个 .python-eggs 目录
在我的网站
mkdir .python-eggs
chmod -R 777 .python-eggs
http://mikecantelon.com/story/installing_django_on_centos_5
启动mysql服务器
/etc/rc.d/init.d/mysqld start
在 CENTOS 上安装 PIL
http://athenageek.wordpress.com/2009/06/09/easy_install-pil-not-so-easy/
安装 PIP 以使用成像
/opt/python2.6/bin/easy_install-2.6 pip
/opt/python2.6/bin/pip install http://effbot.org/downloads/Imaging-1.1.6.tar.gz
安装 GIT
http://www.bitsandpix.com/entry/git-installing-git-on-centos-5/
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
yum install git
用另一个用户配置 MySQL
mysql --user=root mysql
CREATE USER 'webdev'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'webdev'@'localhost'
IDENTIFIED BY 'password' WITH GRANT OPTION;
创建一个 Django 项目
/opt/python2.6/bin/django-admin.py startproject mysite
在您的项目中创建一个日志目录,因为 mod_wsgi 和 apache 需要此目录
cd mysite
mkdir logs
符号链接您的管理媒体文件夹
mkdir media
chmod -R 777 media
mkdir mediaadmin
ln -s /opt/python2.6/lib/python2.6/site-packages/django/contrib/admin/media /www/django_test1/mysite/mediaadmin/
配置您的 /etc/httpd/conf/httpd.conf 文件以包含您的项目基本设置
ServerAdmin admin@appelvm01.centos
HostName appelvm01.centos
ServerName 127.0.0.1
DocumentRoot "/www/django_test1/mysite"
<Directory "/www/django_test1/mysite">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
包括 VirtualHosts 配置文件
Include conf/vhosts/*.conf
将 WSGISocketPrefix 添加到 httpd.conf 文件末尾
WSGISocketPrefix /var/run/wsgi
确保主机名等于 Apache conf /etc/httpd/conf/httpd.conf 中的主机名,否则通过运行更改
hostname "new_name"
授予权限
chcon -R -h -t httpd_sys_content_t /www/django_test1/mysite
我发现这还不够好,所以我不得不关闭 SElinux
vi /etc/selinux/config
放
SELINUX=disabled
根据博客删除您的 -Indexes
http://www.thelinuxblog.com/apache-directory-index-forbidden-by-options-directive/
vi /etc/httpd/conf.d/welcome.conf
# -Indexes
Indexes
配置防火墙
sudo vi /etc/sysconfig/iptables-config
确保以下变量设置为“yes”: IPTABLES_SAVE_ON_STOP="yes" IPTABLES_SAVE_ON_RESTART="yes"
打开网络端口:
sudo /sbin/iptables -I INPUT -p tcp -m state --state NEW,ESTABLISHED --dport 80 -j ACCEPT
sudo /sbin/iptables -I INPUT -p tcp -m state --state NEW,ESTABLISHED --dport 443 -j ACCEPT
使用以下命令重新启动 iptables: sudo /sbin/service iptables stop sudo /sbin/service iptables start 确保规则仍然存在。也尝试重新启动服务器,以确保设置正常。
确保您的 MySQL 和 Apache 在重新启动后始终处于打开状态
/sbin/chkconfig --add httpd
/sbin/chkconfig --level 2345 httpd on
/sbin/chkconfig --list httpd
/sbin/chkconfig --add mysqld
/sbin/chkconfig --level 2345 mysqld on
/sbin/chkconfig --list mysqld
通过 easy_install 安装 South 以实现轻松的数据库迁移
/opt/python2.6/bin/easy_install-2.6 South
为 Rackspace/CDN 存储安装 Django-cumuls
/opt/python2.6/bin/pip install django-cumulus
/opt/python2.6/bin/pip install -r http://bitbucket.org/richleland/django-cumulus/raw/0.3.3/requirements.txt
/opt/python2.6/bin/easy_install-2.6 django-imagekit
您现在应该能够访问您的服务器 IP 地址,并且应该会看到一个欢迎屏幕!
从这里您可以开始开发您的应用程序,您应该能够启用您的管理员自动发现并设置 url,以便您可以访问管理部分。