您的位置:首页 > 其它

ros多线ADSL的端口映射、外网通过DDNS访问路由,网银等若干问题方法

2014-02-09 14:14 1166 查看
环境:
Ubuntu 12.04
Python 2.7.3
Django 1.6

安装所需软件:
Apache2
Python
Pip
VirtualEnv
mod_WSGI(Apache模块)
MySQL

1.更新系统
apt-get update
apt-get upgrade

2.修改主机名
echo "pythonlife" > /etc/hostname
hostname -F /etc/hostname
echo -e "\n127.0.0.1 pythonlife.local pythonlife\n" >> /etc/hosts

3.基础软件安装
apt-get -y install apache2-mpm-worker apache2-dev
apt-get -y install python python-dev python-setuptools
easy_install pip
easy_install virtualenv
easy_install virtualenvwrapper

4.安装并启用mod_WSGI
wget http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz tar xvfz mod_wsgi-3.4.tar.gz
cd mod_wsgi-3.4
./configure
make
make install
echo "LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so" > /etc/apache2/mods-available/wsgi.load
a2enmod wsgi
a2dissite default

5.安装并配置MySQL数据库
注意:把命令里的DATABSENAME换成Django项目采用的数据库名,DATABASEUSER与PASSWORD是你需要创建的数据库用户的用户名与密码。
apt-get -y install mysql-server mysql-client
echo "CREATE DATABASE DATABASENAME;" | mysql -u root -p
echo "CREATE USER 'DATABASEUSER'@'localhost' IDENTIFIED BY 'PASSWORD';" | mysql -u root -p
echo "GRANT ALL PRIVILEGES ON DATABASENAME.* TO 'DATABASEUSER'@'localhost';" | mysql -u root -p
echo "FLUSH PRIVILEGES;" | mysql -u root -p

6.安装Python与Django
通过VirtualEnv搭建一个虚拟Python环境,然后在这个虚拟环境中用pip安装Django
cd /srv/
mkdir -p my_project/app my_project/app/conf/apache
mkdir -p my_project/logs my_project/run/eggs
virtualenv my_project/venv
/srv/my_project/venv/bin/pip install django

7.创建Django项目
pushd my_project/app/
/srv/my_project/venv/bin/python /srv/my_project/venv/bin/django-admin.py startproject webapp
popd

8.配置mod_WSGI
mkdir -p my_project/app/webapp/site_media
mkdir -p my_project/app/templates
cd my_project/app/conf/apache/
修改配置文件
sudo vim django.wsgi

把下面的代码粘贴进编辑器。(在Vim粘贴前最好:set paste)
import os
import sys

root_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..'))
sys.path.insert(0, os.path.abspath(os.path.join(root_path, 'venv/lib/python2.7/site-packages/')))
sys.path.insert(0, os.path.abspath(os.path.join(root_path, 'app')))
sys.path.insert(0, os.path.abspath(os.path.join(root_path, 'app', 'webapp')))

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

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

9.创建新用户
创建一个新用户来运行Apache的mod_WSGI进程。记得修改命令中的USERNAME
useradd --system --no-create-home --home-dir /srv/my_project/ --user-group USERNAME
chsh -s /bin/bash USERNAME

10.配置apche站点
记得替换dinever.com为你自己的域名
sudo vim /etc/apache2/sites-available/dinever.com
黏贴下面的代码,记得修改其中的DOMAIN、USER、静态文件目录与、媒体文件目录
<VirtualHost *:80>
ServerAdmin root@DOMAIN
ServerName DOMAIN

Alias /site_media/ /srv/my_project/app/webapp/site_media/
Alias / /srv/my_project/venv/lib/python2.7/site-packages/django/contrib/admin/
Alias /robots.txt /srv/my_project/app/webapp/site_media/robots.txt
Alias /favicon.ico /srv/my_project/app/webapp/site_media/favicon.ico

CustomLog "|/usr/sbin/rotatelogs /srv/my_project/logs/access.log.%Y%m%d-%H%M%S 5M" combined
ErrorLog "|/usr/sbin/rotatelogs /srv/my_project/logs/error.log.%Y%m%d-%H%M%S 5M"
LogLevel warn

WSGIDaemonProcess DOMAIN user=USER group=USER processes=1 threads=15 maximum-requests=10000 python-path=/srv/my_project/venv/lib/python2.7/site-packages python-eggs=/srv/my_project/run/eggs
WSGIProcessGroup DOMAIN
WSGIScriptAlias / /srv/my_project/app/conf/apache/django.wsgi

<Directory /srv/my_project/app/webapp/site_media>
Order deny,allow
Allow from all
Options -Indexes FollowSymLinks
</Directory>

<Directory /srv/my_project/app/conf/apache>
Order deny,allow
Allow from all
</Directory>

</VirtualHost>
然后启用这个新的站点配置文件
2ensite DOMAIN

11.安装Python的MySQLdb模块
若想让Django操作MySQL数据库,Python下的MySQLdb模块是必装的
apt-get build-dep python-mysqldb
/srv/my_project/venv/bin/pip install MySQL-python

12.配置Django项目
cd ../../
cd webapp/webapp/
vim settings.py
添加
MEDIA_ROOT=/srv/my_project/app/webapp/site_media
TEMPLATE_DIRS=/srv/my_project/app/templates

13.修改权限然后重启Apache
chown -R USERNAME:USERNAME /srv/my_project/
service apache2 restart

安装完后可能会报错
warning: NameVirtualHost *:80 has no VirtualHosts
这是由于VirtualHost *:80或NameVirtualHost *:80在apache的.conf定义了两次,注释掉一次就可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: