个人工具

“Nginx”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
安装eAccelerator
安装FastCgi
 
(未显示27个用户的46个中间版本)
第8行: 第8行:
 
* 日志放在了/var/log/nginx中
 
* 日志放在了/var/log/nginx中
 
* 并已经在/etc/init.d/下创建了启动脚本nginx
 
* 并已经在/etc/init.d/下创建了启动脚本nginx
* 默认的虚拟主机的目录设置在了/var/www/nginx-default
+
* 默认的虚拟主机的目录设置在了/var/www/nginx-default (有的版本 默认的虚拟主机的目录设置在了/var/www, 请参考/etc/nginx/sites-available里的配置)
  
 
==启动nginx==
 
==启动nginx==
第15行: 第15行:
 
</nowiki></pre>
 
</nowiki></pre>
 
然后就可以访问了,http://localhost/ , 一切正常!如果不能访问,先不要继续,看看是什么原因,解决之后再继续。
 
然后就可以访问了,http://localhost/ , 一切正常!如果不能访问,先不要继续,看看是什么原因,解决之后再继续。
 +
启动时候若显示端口80被占用:
 +
Starting nginx: [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
 +
修改文件:/etc/nginx/sites-available/default,去掉  listen  前面的  # 号 , # 号在该文件里是注释的意思 , 并且把  listen 后面的 80 端口号改为自己的端口,访问是需要添加端口号。
 +
 +
(安装完后如出现403错误,那可能是nginx配置文件里的网站路径不正确)
 
{|
 
{|
 
|[[Image:Nginxdefault.png|thumb|center|500px|nginx默认页面]]
 
|[[Image:Nginxdefault.png|thumb|center|500px|nginx默认页面]]
第28行: 第33行:
  
 
===安装FastCgi===
 
===安装FastCgi===
/usr/bin/spawn-fcgi这个文件来管理 FastCgi,它原属于lighttpd这个包里面,但 9.10 后,spawn-fcgi 被分离出来单独成包:
 
 
<pre><nowiki>
 
<pre><nowiki>
sudo apt-get install spawn-fcgi
+
sudo apt-get install php5-fpm
 
</nowiki></pre>
 
</nowiki></pre>
  
第36行: 第40行:
  
 
修改nginx的配置文件:/etc/nginx/sites-available/default
 
修改nginx的配置文件:/etc/nginx/sites-available/default
修改主机名:
+
修改主机名
 
<pre><nowiki>
 
<pre><nowiki>
 
  server_name localhost;
 
  server_name localhost;
第47行: 第51行:
 
<pre><nowiki>
 
<pre><nowiki>
 
location ~ \.php$ {
 
location ~ \.php$ {
 +
include /etc/nginx/fastcgi_params; #需放在第一行,否则会出错
 
fastcgi_pass 127.0.0.1:9000;
 
fastcgi_pass 127.0.0.1:9000;
 
fastcgi_index index.php;
 
fastcgi_index index.php;
 
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
 
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
 
 
}
 
}
 
</nowiki></pre>
 
</nowiki></pre>
第63行: 第67行:
 
</nowiki></pre>
 
</nowiki></pre>
 
为了让php-cgi开机自启动:
 
为了让php-cgi开机自启动:
<pre><nowiki>
+
Ubuntu开机之后会执行/etc/rc.local文件中的脚本
cd /etc/init.d
+
所以我们可以直接在/etc/rc.local中添加启动脚本。
cp nginx php-cgi
+
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi
vim php-cgi
+
添加到语句:exit 0 前面才行
</nowiki></pre>
+
替换nginx为php-cgi
+
 
+
 
+
并修改相应部分为:
+
<pre><nowiki>
+
DAEMON=/usr/bin/spawn-fcgi
+
DAEMON_OPTS="-a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi"
+
...
+
stop)
+
echo -n "Stopping $DESC: "
+
pkill -9 php-cgi
+
echo "$NAME."
+
</nowiki></pre>
+
然后运行rcconf设置php-cgi为开机自启动
+
  
 
创建、测试phpinfo:
 
创建、测试phpinfo:
第90行: 第79行:
 
|[[Image:Nginxphpinfo.png|thumb|center|600px|Nginx phpinfo页面]]
 
|[[Image:Nginxphpinfo.png|thumb|center|600px|Nginx phpinfo页面]]
 
|}
 
|}
 +
 +
==安装nginx +uwsgi+ Django==
 +
这次采用 uwsgi 1.2+django1.4+nginx1.1.19+ubuntu12.04组合进行安装
 +
 +
首先注意 要安装比较新的软件 如果你是ubuntu11.04和11.10 因为内核不同 所以安装软件版本不同
 +
 +
1.首先 安装nginx:
 +
sudo apt-get install nginx
 +
2.然后:
 +
进行uwsgi的安装之前 要安装其他几个:
 +
sudo apt-get install mysql-server libxml2 libxml2-dev python-dev libpcre3 libpcre3-dev python-MySQLdb
 +
3.进行uwsgi的安装:
 +
可能由于软件版本不够新吧 ppa里头安装后出现502错误 所以
 +
用软件包安装:
 +
#wget http://projects.unbit.it/downloads/uwsgi-1.2.tar.gz
 +
#tar zxvf uwsgi-1.2.tar.gz
 +
#cd uwsgi-1.2
 +
#make
 +
#cp uwsgi /usr/bin
 +
注:如果在MAKE 过程中出现如:(Python.h:没有那个文件或目录)
 +
        解决方法:sudo apt-get install python-dev
 +
4.安装django
 +
之前我用ubuntu源安装.由于admin管理的静态问题.所以我还是改用下载安装比较好.
 +
google下django
 +
然后进入下载  https://www.djangoproject.com/download/
 +
用chrome下载默认/home/helios/下载   
 +
然后cd
 +
然后cd 下载
 +
接着  tar xzvf Django-1.4.tar.gz
 +
cd Django-1.4
 +
sudo python setup.py install
 +
这是最新版本.copy官网的安装方法.
 +
接着 sudo cp django/bin/django-admin.py /usr/bin/
 +
接下来 sudo mv /usr/bin/django-admin.py /usr/bin/django-admin
 +
这是为了和源安装在操作上保持一致  但是不知道有没有问题.暂时没有发现问题.有问题大家可以上来补教程.
 +
可以了.
 +
安装好了.
 +
---------------------建立项目------------------------
 +
1.cd
 +
2.django-admin startproject mysite
 +
 +
|-mysite
 +
|--mysite,manage.py
 +
|---__init__.py ,settings.py,  urls.py
 +
 +
现在 就是刚刚说的admin静态文件的问题.
 +
我现在把刚刚下载的django安装包的解压文件夹里头  /home/helios/下载/Django-1.4/django/contrib/admin下static文件夹直接复制到mysite下
 +
 +
 +
这样保持localhost/admin可以出现正常页面不再是没有样式的了.
 +
------------------------------------另一种解决admin静态方法问题--------
 +
sudo chmod -R 777 文件夹路径.这个是给予文件夹下所有子文件子文件夹权限.
 +
 +
那么可以从源安装django了
 +
sudo apt-get install python-django
 +
然后
 +
mkdir /home/helios/mysite/static/admin
 +
cp -rf /usr/lib/python2.7/dist-packages/django/contrib/admin/media /home/helios/mysite/static/admin
 +
sudo chmod -R 777 /home/helios/mysite/static/admin
 +
这样就ok了
 +
 +
== 配置 nginx uwsgi django ==
 +
 +
交代下环境:
 +
  我的电脑用户名:helios;
 +
 +
----
 +
 +
  #sudo vim /etc/nginx/sites-available/default
 +
出现nginx代码:(序列号不要抄)
 +
<br>1.
 +
  listen  80;
 +
2.
 +
  root    /home/helios/mysite;
 +
3.
 +
  server_name    youdomain.com#域名 或者当地localhost;
 +
4.
 +
  location / {
 +
                uwsgi_pass    127.0.0.1:9000;
 +
                include uwsgi_params;
 +
                access_log  off;
 +
  }
 +
5.
 +
  location /static/ {
 +
                alias /home/helios/mysite/static;
 +
                autoindex on;
 +
                allow 127.0.0.1;
 +
                deny all;
 +
  }
 +
6.
 +
  location /static/admin/ {
 +
                alias /home/helios/mysite/static/admin;
 +
                autoindex on;
 +
                allow 127.0.0.1;
 +
                deny all;
 +
  }
 +
7.
 +
  location ~ ^.+\.(gif|jpg|png|ico|jpeg)$ {
 +
                expires 3d;
 +
  }
 +
8.
 +
  location ~ ^.+\.(css|js)$ {
 +
                expires 12h;
 +
  }
 +
<br>然后
 +
  #vim /etc/nginx/nginx.conf
 +
1.
 +
  user  helios;
 +
2.
 +
  把所有gzip开头的前面#号都去掉,除了Gzip setting
 +
现在 把nginx配置都配好了
 +
 +
== uwsgi配置 ==
 +
  #cd /home/helios/mysite
 +
  #vim wsgi.py
 +
写上
 +
  import os
 +
  import sys from django.core.handlers.wsgi
 +
  import WSGIHandler
 +
 
 +
  sys.path.append("/home/helios/mysite")
 +
  os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"
 +
  application = WSGIHandler()
 +
完了以后
 +
  #vim wsgi.xml
 +
写上
 +
  <uwsgi>
 +
    <socket>127.0.0.1:9000</socket>
 +
    <listen>80</listen>
 +
    <master>true</master>
 +
    <pidfile>/var/run/nginx.pid</pidfile>
 +
    <processes>8</processes>
 +
    <pythonpath>/home/helios/mysite</pythonpath>
 +
    <pythonpath>/home/helios/</pythonpath>
 +
    <module>wsgi</module>
 +
    <profiler>true</profiler>
 +
    <memory-report>true</memory-report>
 +
    <enable-threads>true</enable-threads>
 +
    <logdate>true</logdate>
 +
    #这个是程序占用大小,不能太小,太大暂时还不知道
 +
    #在测试过程中,我的电脑300以下目测不行。
 +
    #也可以删除这段,因为在测试过程中,如果这段设置太小
 +
    #会出现问题libgcc_s.so.1 must be installed for pthread_cancel to work
 +
    #只有在 ubuntu 12.04测试过,其他系统还不清楚
 +
    #为了不容易出错可以删掉,但是这个提示给有需要的朋友
 +
    <limit-as>300</limit-as>
 +
    #自己建立文件夹 然后创建空文件django.log这个灵活的
 +
    <daemonize>/home/helios/mysite/log/django.log</daemonize>
 +
  </uwsgi>
 +
 +
----
 +
 +
== 配置django ==
 +
 +
刚刚配置nginx里头有看到这两段把:
 +
 +
 +
 +
location /static/ {
 +
 +
                root /home/helios/mysite;
 +
                access_log  off;
 +
}
 +
location /static/admin/ {
 +
                root /home/helios/mysite/static;
 +
                access_log off;
 +
 +
}
 +
好了 现在终端:
 +
 +
#cd /home/helios/mysite
 +
#vim settings.py
 +
 +
看到
 +
ADMIN_MEDIA_PREFIX
 +
STATIC_URL
 +
这两个参数 就是指向这里 如果还有问题
 +
我的参数不是这俩 另外的 你可以参考:
 +
MEDIA_ROOT = '/home/helios/mysite/static'
 +
MEDIA_URL = '/static/'
 +
ADMIN_MEDIA_PREFIX = '/static/admin/'
 +
然后 数据库问题:
 +
我的是mysql数据库:
 +
终端
 +
#cd /home/helios/mysite
 +
#mysql -h localhost -u root -p
 +
Enter password******
 +
>create database mysite default character set utf8;(因为要记录中文 所以默认utf8)
 +
>quit
 +
#vim settings.py
 +
DATABASES = {
 +
    'default': {
 +
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
 +
        'NAME': 'mysite',                      # Or path to database file if using sqlite3.
 +
        'USER': 'root',                      # Not used with sqlite3.
 +
        'PASSWORD': '*******',                  # Not used with sqlite3.
 +
        'HOST': 'localhost',                      # Set to empty string for localhost. Not used with sqlite3.
 +
        'PORT': '3306',                      # Set to empty string for default. Not used with sqlite3.
 +
    }
 +
 +
最后 还有一些:
 +
语言:
 +
LANGUAGE_CODE = 'zh-cn'
 +
时间:
 +
TIME_ZONE = 'Asia/Shanghai'
 +
 +
其他关于django的配置 朋友们可以去网络搜索django教程或者官网去看看
 +
我的博客上面有个类似懒人安装的脚本 有兴趣可以去看看更详细的教程 http://sishengbang.tk
 +
如果我的这些步骤还有问题可以mail我:[email protected]或者[email protected]
 +
或者我的博客www.younguy.tk
 +
qq也可以加我 不过要说明nginx+ubuntu+django:845262968
 +
新建一个github项目:一个tornado+django+php+nginx+mysql的部署并且包括源代码
 +
https://github.com/yuyangit/BMProject
  
 
==no input file specified错误==
 
==no input file specified错误==
<pre>sudo vi /etc/nginx/sites-avaiable/default</pre>
+
<pre>sudo vi /etc/nginx/sites-available/default</pre>
 
其中这个字段
 
其中这个字段
 
<pre>location ~ \.php$ {
 
<pre>location ~ \.php$ {
第103行: 第305行:
 
<pre>fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;</pre>
 
<pre>fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;</pre>
 
/var/www/nginx-default 改为你的网站根目录,一般就是改成这个。
 
/var/www/nginx-default 改为你的网站根目录,一般就是改成这个。
 +
server 字段下root 目录和网站根目录保持一致
 +
 
==安装Zend Optimizer==
 
==安装Zend Optimizer==
 
要求PHP版本为5.2,不支持Ubuntu10.04的PHP5.3,请参照[[PHP5.2]]。
 
要求PHP版本为5.2,不支持Ubuntu10.04的PHP5.3,请参照[[PHP5.2]]。
 +
(Zend 5.5支持PHP5.3,下载地址:http://downloads.zend.com/guard/5.5.0/ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz)
  
 
下载 [http://www.zend.com/en/products/guard/downloads Zend Optimizer]。
 
下载 [http://www.zend.com/en/products/guard/downloads Zend Optimizer]。
第160行: 第365行:
 
<pre>sudo apt-get install php5-dev</pre>
 
<pre>sudo apt-get install php5-dev</pre>
 
下载 [http://www.eaccelerator.net/ eAccelerator]
 
下载 [http://www.eaccelerator.net/ eAccelerator]
<pre>wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2</pre>
+
<pre>wget http://sourceforge.net/projects/eaccelerator/files/eaccelerator/eAccelerator%200.9.6.1/eaccelerator-0.9.6.1.tar.bz2</pre>
 
<pre>tar jxvf eaccelerator-0.9.6.1.tar.bz2</pre>
 
<pre>tar jxvf eaccelerator-0.9.6.1.tar.bz2</pre>
 
<pre>cd eaccelerator-0.9.6.1 </pre>
 
<pre>cd eaccelerator-0.9.6.1 </pre>
第167行: 第372行:
 
sudo make</pre>  
 
sudo make</pre>  
 
<pre>qii@ubuntu:~/tmp/eaccelerator-0.9.6.1$ sudo make install
 
<pre>qii@ubuntu:~/tmp/eaccelerator-0.9.6.1$ sudo make install
Installing shared extensions:    /usr/lib/php5/20060613+lfs/
+
Installing shared extensions:    /usr/lib/php5/20090626+lfs/
 
</pre>
 
</pre>
修改php.ini文件,安装为Zend扩展:
+
修改php.ini文件,安装为Zend扩展,最好放在开头,放到[zend]之前,免的出莫名其妙的问题:
 
<pre>sudo vi /etc/php5/cgi/php.ini</pre>
 
<pre>sudo vi /etc/php5/cgi/php.ini</pre>
<pre>zend_extension="/usr/lib/php5/20060613+lfs/eaccelerator.so"  
+
<pre>[eaccelerator]
 +
zend_extension="/usr/lib/php5/20090626+lfs/eaccelerator.so"
 
eaccelerator.shm_size="16"  
 
eaccelerator.shm_size="16"  
eaccelerator.cache_dir="/var/cache/eaccelerator"  
+
eaccelerator.cache_dir="/tmp/eaccelerator"  
 
eaccelerator.enable="1"  
 
eaccelerator.enable="1"  
 
eaccelerator.optimizer="1"  
 
eaccelerator.optimizer="1"  
第188行: 第394行:
 
创建cache缓存目录
 
创建cache缓存目录
 
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator"  这里定义cache路径</pre>
 
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator"  这里定义cache路径</pre>
本来默认值是/tmp/eaccelerator,这非常简单因为任何人都对该目录可写,但是并不明智,因为重启后系统会自动清理该目录。一个更好的地方是/var/cache/eaccelerator。创建该目录并确保它对eAccelerator的使用者可写(通常该用户是你的网络服务器运行者,可能是www-data)。
+
默认值是/tmp/eaccelerator,这非常简单因为任何人都对该目录可写,但是并不明智,因为重启后系统会自动清理该目录。一个更好的地方是/var/cache/eaccelerator。创建该目录并确保它对eAccelerator的使用者可写(通常该用户是你的网络服务器运行者,可能是www-data)。
 
+
使用默认值的话这样继续:
 +
<pre>mkdir /tmp/eaccelerator</pre>
 +
<pre>chmod 777 /tmp/eaccelerator</pre>
 +
改成 /var/cache/eaccelerator的话这样继续,先改php.ini
 +
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator" </pre>
 +
<pre>sudo mkdir /var/cache/eaccelerator
 +
sudo chown root:www-data /var/cache/eaccelerator
 +
sudo chmod u=rwx,g=rwx,o= /var/cache/eaccelerator</pre>
 
复制控制文件control.php到网站根目录
 
复制控制文件control.php到网站根目录
 
<pre>sudo cp control.php /var/www/nginx-default/</pre>
 
<pre>sudo cp control.php /var/www/nginx-default/</pre>
第208行: 第421行:
 
     with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
 
     with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
 
     </pre>
 
     </pre>
 +
 +
==屏蔽迅雷==
 +
新建
 +
<pre>/etc/nginx/agent.conf</pre>
 +
<pre>if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)") { return 404; }
 +
</pre>
 +
注意的是,空格和括弧需要使用“\”进行转义。
 +
 +
然后site配置中
 +
<pre>include /etc/nginx/agent.conf;</pre>
 +
迅雷usera-gent和这种做法失效的情况见[[Apache#屏蔽迅雷]]
 +
==参考==
 +
[http://luy.li/2009/10/31/nginx-block-user_agent/ nginx 禁止某个 User_Agent 的方法]
  
 
==了解更多==
 
==了解更多==

2015年11月17日 (二) 18:07的最新版本

安装nginx

sudo apt-get install nginx

Ubuntu安装之后的文件结构大致为:

  • 所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下
  • 程序文件在/usr/sbin/nginx
  • 日志放在了/var/log/nginx中
  • 并已经在/etc/init.d/下创建了启动脚本nginx
  • 默认的虚拟主机的目录设置在了/var/www/nginx-default (有的版本 默认的虚拟主机的目录设置在了/var/www, 请参考/etc/nginx/sites-available里的配置)

启动nginx

sudo /etc/init.d/nginx start

然后就可以访问了,http://localhost/ , 一切正常!如果不能访问,先不要继续,看看是什么原因,解决之后再继续。 启动时候若显示端口80被占用: Starting nginx: [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) 修改文件:/etc/nginx/sites-available/default,去掉 listen 前面的 # 号 , # 号在该文件里是注释的意思 , 并且把 listen 后面的 80 端口号改为自己的端口,访问是需要添加端口号。

(安装完后如出现403错误,那可能是nginx配置文件里的网站路径不正确)

nginx默认页面

配置php和mysql

安装Php和mysql

安装php和MySQL:

sudo apt-get install php5-cli php5-cgi mysql-server php5-mysql

安装FastCgi

sudo apt-get install php5-fpm

配置 nginx

修改nginx的配置文件:/etc/nginx/sites-available/default 修改主机名

 server_name localhost;

修改index的一行修改为:

index index.php index.html index.htm;

去掉下面部分的注释用于支持 php 脚本:

location ~ \.php$ {
include /etc/nginx/fastcgi_params; #需放在第一行,否则会出错
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
}

重新启动nginx:

/etc/init.d/nginx stop
/etc/init.d/nginx start

启动fastcgi php:

spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

为了让php-cgi开机自启动: Ubuntu开机之后会执行/etc/rc.local文件中的脚本 所以我们可以直接在/etc/rc.local中添加启动脚本。 spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi 添加到语句:exit 0 前面才行

创建、测试phpinfo:

sudo vi /var/www/nginx-default/info.php
<?php phpinfo(); ?>

打开 http://localhost/info.php

Nginx phpinfo页面

安装nginx +uwsgi+ Django

这次采用 uwsgi 1.2+django1.4+nginx1.1.19+ubuntu12.04组合进行安装

首先注意 要安装比较新的软件 如果你是ubuntu11.04和11.10 因为内核不同 所以安装软件版本不同

1.首先 安装nginx: sudo apt-get install nginx 2.然后: 进行uwsgi的安装之前 要安装其他几个: sudo apt-get install mysql-server libxml2 libxml2-dev python-dev libpcre3 libpcre3-dev python-MySQLdb 3.进行uwsgi的安装: 可能由于软件版本不够新吧 ppa里头安装后出现502错误 所以 用软件包安装:

  1. wget http://projects.unbit.it/downloads/uwsgi-1.2.tar.gz
  2. tar zxvf uwsgi-1.2.tar.gz
  3. cd uwsgi-1.2
  4. make
  5. cp uwsgi /usr/bin

注:如果在MAKE 过程中出现如:(Python.h:没有那个文件或目录)

       解决方法:sudo apt-get install python-dev 

4.安装django 之前我用ubuntu源安装.由于admin管理的静态问题.所以我还是改用下载安装比较好. google下django 然后进入下载 https://www.djangoproject.com/download/ 用chrome下载默认/home/helios/下载 然后cd 然后cd 下载 接着 tar xzvf Django-1.4.tar.gz cd Django-1.4 sudo python setup.py install 这是最新版本.copy官网的安装方法. 接着 sudo cp django/bin/django-admin.py /usr/bin/ 接下来 sudo mv /usr/bin/django-admin.py /usr/bin/django-admin 这是为了和源安装在操作上保持一致 但是不知道有没有问题.暂时没有发现问题.有问题大家可以上来补教程. 可以了. 安装好了.


建立项目------------------------

1.cd 2.django-admin startproject mysite

|-mysite |--mysite,manage.py |---__init__.py ,settings.py, urls.py

现在 就是刚刚说的admin静态文件的问题. 我现在把刚刚下载的django安装包的解压文件夹里头 /home/helios/下载/Django-1.4/django/contrib/admin下static文件夹直接复制到mysite下


这样保持localhost/admin可以出现正常页面不再是没有样式的了.


另一种解决admin静态方法问题--------

sudo chmod -R 777 文件夹路径.这个是给予文件夹下所有子文件子文件夹权限.

那么可以从源安装django了 sudo apt-get install python-django 然后 mkdir /home/helios/mysite/static/admin cp -rf /usr/lib/python2.7/dist-packages/django/contrib/admin/media /home/helios/mysite/static/admin sudo chmod -R 777 /home/helios/mysite/static/admin 这样就ok了

配置 nginx uwsgi django

交代下环境:

 我的电脑用户名:helios;

 #sudo vim /etc/nginx/sites-available/default

出现nginx代码:(序列号不要抄)
1.

 listen   80;

2.

 root     /home/helios/mysite;

3.

 server_name    youdomain.com#域名 或者当地localhost;

4.

 location / {
               uwsgi_pass    127.0.0.1:9000;
               include uwsgi_params;
               access_log  off;
 }

5.

 location /static/ {
               alias /home/helios/mysite/static;
               autoindex on;
               allow 127.0.0.1;
               deny all;
 }

6.

 location /static/admin/ {
               alias /home/helios/mysite/static/admin;
               autoindex on;
               allow 127.0.0.1;
               deny all;
 }

7.

 location ~ ^.+\.(gif|jpg|png|ico|jpeg)$ {
               expires 3d;
 }

8.

 location ~ ^.+\.(css|js)$ {
               expires 12h;
 }


然后

 #vim /etc/nginx/nginx.conf

1.

 user  helios;

2.

 把所有gzip开头的前面#号都去掉,除了Gzip setting

现在 把nginx配置都配好了

uwsgi配置

 #cd /home/helios/mysite
 #vim wsgi.py

写上

 import os
 import sys from django.core.handlers.wsgi 
 import WSGIHandler
 
 sys.path.append("/home/helios/mysite")
 os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"
 application = WSGIHandler()

完了以后

 #vim wsgi.xml

写上

 <uwsgi>
   <socket>127.0.0.1:9000</socket>
   <listen>80</listen>
   <master>true</master>
   <pidfile>/var/run/nginx.pid</pidfile>
   <processes>8</processes>
   <pythonpath>/home/helios/mysite</pythonpath>
   <pythonpath>/home/helios/</pythonpath>
   <module>wsgi</module>
   <profiler>true</profiler>
   <memory-report>true</memory-report>
   <enable-threads>true</enable-threads>
   <logdate>true</logdate>
   #这个是程序占用大小,不能太小,太大暂时还不知道 
   #在测试过程中,我的电脑300以下目测不行。
   #也可以删除这段,因为在测试过程中,如果这段设置太小
   #会出现问题libgcc_s.so.1 must be installed for pthread_cancel to work 
   #只有在 ubuntu 12.04测试过,其他系统还不清楚
   #为了不容易出错可以删掉,但是这个提示给有需要的朋友
   <limit-as>300</limit-as>
   #自己建立文件夹 然后创建空文件django.log这个灵活的
   <daemonize>/home/helios/mysite/log/django.log</daemonize>
 </uwsgi>

配置django

刚刚配置nginx里头有看到这两段把:


location /static/ {

               root /home/helios/mysite;
               access_log  off;

} location /static/admin/ {

               root /home/helios/mysite/static;
               access_log off;

} 好了 现在终端:

  1. cd /home/helios/mysite
  2. vim settings.py

看到 ADMIN_MEDIA_PREFIX STATIC_URL 这两个参数 就是指向这里 如果还有问题 我的参数不是这俩 另外的 你可以参考: MEDIA_ROOT = '/home/helios/mysite/static' MEDIA_URL = '/static/' ADMIN_MEDIA_PREFIX = '/static/admin/' 然后 数据库问题: 我的是mysql数据库: 终端

  1. cd /home/helios/mysite
  2. mysql -h localhost -u root -p

Enter password****** >create database mysite default character set utf8;(因为要记录中文 所以默认utf8) >quit

  1. vim settings.py

DATABASES = {

   'default': {
       'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
       'NAME': 'mysite',                      # Or path to database file if using sqlite3.
       'USER': 'root',                      # Not used with sqlite3.
       'PASSWORD': '*******',                  # Not used with sqlite3.
       'HOST': 'localhost',                      # Set to empty string for localhost. Not used with sqlite3.
       'PORT': '3306',                      # Set to empty string for default. Not used with sqlite3.
   }

最后 还有一些: 语言: LANGUAGE_CODE = 'zh-cn' 时间: TIME_ZONE = 'Asia/Shanghai'

其他关于django的配置 朋友们可以去网络搜索django教程或者官网去看看 我的博客上面有个类似懒人安装的脚本 有兴趣可以去看看更详细的教程 http://sishengbang.tk 如果我的这些步骤还有问题可以mail我:[email protected]或者[email protected] 或者我的博客www.younguy.tk qq也可以加我 不过要说明nginx+ubuntu+django:845262968 新建一个github项目:一个tornado+django+php+nginx+mysql的部署并且包括源代码 https://github.com/yuyangit/BMProject

no input file specified错误

sudo vi /etc/nginx/sites-available/default

其中这个字段

location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include fastcgi_params;

注意

fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;

/var/www/nginx-default 改为你的网站根目录,一般就是改成这个。 server 字段下root 目录和网站根目录保持一致

安装Zend Optimizer

要求PHP版本为5.2,不支持Ubuntu10.04的PHP5.3,请参照PHP5.2。 (Zend 5.5支持PHP5.3,下载地址:http://downloads.zend.com/guard/5.5.0/ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz)

下载 Zend Optimizer。 直接贴下载地址,参考版本号改(这是32位的),不然主页要注册才能下

 http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz 
tar zxvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
cd ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp
sudo mkdir /usr/local/zend
sudo cp ZendOptimizer.so /usr/local/zend 

编辑php.ini

sudo gedit /etc/php5/cgi/php.ini

开头加入,注意标点符号要英文。

[Zend Optimizer]
zend_optimizer.optimization_level=1  
zend_extension="/usr/local/zend/ZendOptimizer.so"

关闭php-cgi

sudo killall -HUP php-cgi

重启php-cgi

spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

不需要重启nginx

还是上面那个phpinfo文件,要能看到如下信息

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
    with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies

安裝XCache

sudo apt-get install php5-xcache
root@ubuntu:/home/qii# dpkg -l | grep xcach
ii  php5-xcache                          1.2.2-5                                         Fast, stable PHP opcode cacher

xcache配置文件路径是

/etc/php5/conf.d/xcache.ini

编辑php.ini

sudo gedit /etc/php5/cgi/php.ini

把xcache.ini的内容加入到php.ini。

关闭php-cgi

sudo killall -HUP php-cgi

重启php-cgi

spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

不需要重启nginx 检查安装是否成功

root@ubuntu:/home/qii# php -v
PHP 5.2.10-2ubuntu6 with Suhosin-Patch 0.9.7 (cli) (built: Oct 23 2009 16:30:10) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
    with XCache v1.2.2, Copyright (c) 2005-2007, by mOo

还有前面info.php页应该有XCache模块

info页面的XCache模块

这里有点奇怪的是,如果不把xcache.ini的内容加入php.ini,apache也能载入XCache,但info.php上没XCache模块。

安装eAccelerator

sudo apt-get install php5-dev

下载 eAccelerator

wget http://sourceforge.net/projects/eaccelerator/files/eaccelerator/eAccelerator%200.9.6.1/eaccelerator-0.9.6.1.tar.bz2
tar jxvf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1 
phpize
sudo ./configure -enable-eaccelerator=shared
sudo make
qii@ubuntu:~/tmp/eaccelerator-0.9.6.1$ sudo make install
Installing shared extensions:     /usr/lib/php5/20090626+lfs/

修改php.ini文件,安装为Zend扩展,最好放在开头,放到[zend]之前,免的出莫名其妙的问题:

sudo vi /etc/php5/cgi/php.ini
[eaccelerator]
zend_extension="/usr/lib/php5/20090626+lfs/eaccelerator.so"  
eaccelerator.shm_size="16" 
eaccelerator.cache_dir="/tmp/eaccelerator" 
eaccelerator.enable="1" 
eaccelerator.optimizer="1" 
eaccelerator.check_mtime="1" 
eaccelerator.debug="0" 
eaccelerator.filter="" 
eaccelerator.shm_max="0" 
eaccelerator.shm_ttl="0" 
eaccelerator.shm_prune_period="0" 
eaccelerator.shm_only="0" 
eaccelerator.compress="1" 
eaccelerator.compress_level="9" 
eaccelerator.allowed_admin_path="/var/www/nginx-default/control.php"

创建cache缓存目录

eaccelerator.cache_dir="/var/cache/eaccelerator"   这里定义cache路径

默认值是/tmp/eaccelerator,这非常简单因为任何人都对该目录可写,但是并不明智,因为重启后系统会自动清理该目录。一个更好的地方是/var/cache/eaccelerator。创建该目录并确保它对eAccelerator的使用者可写(通常该用户是你的网络服务器运行者,可能是www-data)。 使用默认值的话这样继续:

mkdir /tmp/eaccelerator
chmod 777 /tmp/eaccelerator

改成 /var/cache/eaccelerator的话这样继续,先改php.ini

eaccelerator.cache_dir="/var/cache/eaccelerator" 
sudo mkdir /var/cache/eaccelerator
sudo chown root:www-data /var/cache/eaccelerator
sudo chmod u=rwx,g=rwx,o= /var/cache/eaccelerator

复制控制文件control.php到网站根目录

sudo cp control.php /var/www/nginx-default/

修改control.php的$user和$pw,默认是admin和eAccelerator

sudo vi /var/www/nginx-default/control.php 

关闭php-cgi

sudo killall -HUP php-cgi

重启php-cgi

spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

不需要重启nginx 打开 http://localhost/control.php

eAccelerator control.php页面

查看之前的info.php页面,有下列字段:

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
    with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
    

屏蔽迅雷

新建

/etc/nginx/agent.conf
if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)") { return 404; }

注意的是,空格和括弧需要使用“\”进行转义。

然后site配置中

include /etc/nginx/agent.conf;

迅雷usera-gent和这种做法失效的情况见Apache#屏蔽迅雷

参考

nginx 禁止某个 User_Agent 的方法

了解更多

  1. Nginx 的中文维基:http://wiki.codemongers.com/NginxChs
  2. Nginx 的中文站: http://www.nginx.cn