安裝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配置文件里的網站路徑不正確)
?
配置php和mysql
安裝php和MySQL:
sudo apt-get install php5-cli php5-cgi mysql-server php5-mysql
?
安裝FastCgi
/usr/bin/spawn-fcgi這個文件來管理 FastCgi,它原屬于lighttpd這個包里面,但 9.10 后,spawn-fcgi 被分離出來單獨成包:
sudo apt-get install spawn-fcgi
?
配置 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 +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代碼:(序列號不要抄)
listen 80; root /home/helios/mysite; server_name youdomain.com#域名 或者當地localhost; location / { uwsgi_pass 127.0.0.1:9000; include uwsgi_params; access_log off; } location /static/ { alias /home/helios/mysite/static; autoindex on; allow 127.0.0.1; deny all; } location /static/admin/ { alias /home/helios/mysite/static/admin; autoindex on; allow 127.0.0.1; deny all; } location ~ ^.+\.(gif|jpg|png|ico|jpeg)$ { expires 3d; } location ~ ^.+\.(css|js)$ { expires 12h; }?
然后
?
#vim /etc/nginx/nginx.conf
?
user helios; 把所有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我:helio_s@163.com或者yuyanget@gmail.com 或者我的博客www.younguy.tk qq也可以加我 不過要說明nginx+ubuntu+django:845262968
?
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
Fast, stable PHP opcode cachersudo apt-get install php5-xcache root@ubuntu:/home/qii# dpkg -l | grep xcach ii php5-xcache 1.2.2-5?
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模塊
這里有點奇怪的是,如果不把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
?
查看之前的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 的中文維基: http://wiki.codemongers.com/NginxChs
- Nginx 的中文站: http://www.nginx.cn
來源: http://wiki.ubuntu.org.cn/Nginx
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
