把我架設lnmp網站的過程寫出來,希望對想架設網站的朋友有所協助,如有更好的辦法請提出來。
之所以用nginx沒用apache,是因為nginx的效率更高一些,尤其是對一些低配置的伺服器,比如我在單位256M記憶體的舊機器上架設的伺服器。
1、安裝ubuntu server 10.04或10.10,其中安裝語言選的en,時區shanghai,服務只安裝ssh,其他全部用預設就行。
提示:以上安裝過程完成後,建議用其他電腦登入伺服器,windows系統可以用putty,linux系統直接在終端用命令就可以:
代碼:
ssh 登入名稱@伺服器ip
因為以下過程得輸入大量命令和代碼,在客戶機上直接粘貼即可(在windows下的putty中單擊右鍵即可把剪貼簿中的內容粘貼到終端)。
2、添加源:
代碼: 複製代碼 代碼如下:sudo vi /etc/apt/sources.list
lucid(10.04)的源添加如下:
代碼: 複製代碼 代碼如下:deb http://archive.ubuntu.com/ubuntu/ lucid main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ lucid-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ lucid-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ lucid main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ lucid-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ lucid-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse
deb http://ppa.launchpad.net/nginx/stable/ubuntu lucid main
deb http://ppa.launchpad.net/brianmercer/php/ubuntu lucid main
maverick(10.10)的源:
代碼: 複製代碼 代碼如下:deb http://archive.ubuntu.com/ubuntu/ maverick main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ maverick-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ maverick-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ maverick-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ maverick main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ maverick-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ maverick-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ maverick-backports main restricted universe multiverse
deb http://ppa.launchpad.net/nginx/stable/ubuntu maverick main
最後一行為nginx的ppa源,需要添加key,在終端運行:
代碼: 複製代碼 代碼如下:sudo apt-key adv --keyserver keyserver.Ubuntu.com --recv-keys C300EE8C
3、更新
代碼: 複製代碼 代碼如下:sudo apt-get update
4、安裝網站系統
代碼: 複製代碼 代碼如下:sudo apt-get install nginx php5-common php5-dev php5-cgi php5-fpm php-apc php5-mysql php5-curl php5-gd php5-idn php-pear php5-mcrypt php5-memcache php5-ming php5-recode php5-tidy php5-xmlrpc php5-xsl mysql-server
上面為必選安裝,以下php組件為可選安裝,一般網站程式可能用不著:
代碼: 複製代碼 代碼如下:sudo apt-get install php5-imagick php5-imap php5-recode php5-snmp php5-sqlite php5-xmlrpc php5-suhosin php5-odbc php5-ladp
5、修改nginx設定檔
代碼: 複製代碼 代碼如下:sudo vi /etc/nginx/sites-enabled/default
把其中的:
代碼: 複製代碼 代碼如下:location / {
root /var/www;
index index.html index.htm;
}
改為:
代碼: 複製代碼 代碼如下:location / {
root /var/www/nginx-default;
index index.php index.html index.htm;
}
其中的:
代碼:
#location ~ \.php$ {
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# include fastcgi_params;
#}
改為:
代碼: 複製代碼 代碼如下:location ~ \.php$ {
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;
}
6、更改網站目錄權屬:
代碼:
sudo chown -R ubuntu nginx-default/
註:其中的ubuntu為系統登入使用者名稱。
7、安裝ZendGuardLoader及eaccelerator:
代碼: 複製代碼 代碼如下:sudo mkdir /usr/zend
mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator
wget http://phpcj.googlecode.com/files/ZendGuardLoader.so
sudo mv ZendGuardLoader.so /usr/zend/ZendGuardLoader.so
wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2
tar xvjf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1
cp control.php /var/www/nginx-default/control.php //複製控製程序到網站目錄,通過http://網站名/control.php訪問,預設帳號為admin,密碼為eAccelertor,可編輯此檔案修改。
phpize
sudo ./configure --enable-eaccelerator=shared
sudo make
sudo make install
sudo vi /etc/php5/fpm/php.ini
在設定檔最後加上:
代碼: 複製代碼 代碼如下:zend_extension=/usr/zend/ZendGuardLoader.so
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path=
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"
8、(可選步驟)安裝phpmyadmin:
代碼: 複製代碼 代碼如下:wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.3.9/phpMyAdmin-3.3.9-all-languages.tar.bz2
tar xvjf phpMyAdmin-3.3.9-all-languages.tar.bz2
mv phpMyAdmin-3.3.9-all-languages /var/www/nginx-default/phpmyadmin
cd /var/www/nginx-default/phpmyadmin
cp config.sample.inc.php config.inc.php
vi config.inc.php
將其中的:
代碼: 複製代碼 代碼如下:$cfg['blowfish_secret'] = '';
改為:
代碼: 複製代碼 代碼如下:$cfg['blowfish_secret'] = 'web';
下面的:
代碼: 複製代碼 代碼如下:// $cfg['Servers'][$i]['controluser'] = 'pma';
// $cfg['Servers'][$i]['controlpass'] = 'pmapass';
// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
// $cfg['Servers'][$i]['relation'] = 'pma_relation';
// $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
// $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
// $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
// $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
// $cfg['Servers'][$i]['history'] = 'pma_history';
// $cfg['Servers'][$i]['tracking'] = 'pma_tracking';
// $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
// $cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf';
將//全部刪除,然後將其中的:
代碼: 複製代碼 代碼如下:$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';
pma和pmapass改為你的mysql使用者名稱和密碼,最後登入phpmyadmin,將phpmyadmin/scripts目錄中的creat_tables.sql檔案匯入mysql。
9、重啟系統、上傳檔案,網站建立成功!試試吧!
檔案上傳建議用filezilla(http://filezilla-project.org/),免費的開源ftp軟體,windows和linux都可以用,支援ssh的22連接埠。
附:系統及部分軟體管理操作
1、作業系統:
代碼: 複製代碼 代碼如下:sudo reboot now //重啟系統
sudo halt //關閉系統
2、nginx配置修改及生效:
代碼: 複製代碼 代碼如下:sudo vi /etc/nginx/nginx.conf //修改配置
sudo vi /etc/nginx/sites-enabled/default //修改配置
sudo service nginx restart //重啟nginx
3、php配置修改及生效:
代碼: 複製代碼 代碼如下:sudo vi /etc/php5/fpm/php.ini //修改配置
sudo service php5-fpm restart //重啟fastcgi進程
3、網站目錄:
代碼: 複製代碼 代碼如下:/var/www/nginx-default
4、eaccelerator管理:
代碼: 複製代碼 代碼如下:http://你的網站/control.php
5、修複nginx+php出現的重大漏洞、修改上傳檔案大小(可以看你自己的情況)
代碼: 複製代碼 代碼如下:sudo vi /etc/php5/fpm/php.ini
cgi.fix_pathinfo = 0 //修複漏洞
upload_max_filesize = 2M改為5M //修改上傳檔案大小
6、設定防火牆
代碼: 複製代碼 代碼如下:sudo ufw enable
sudo ufw default deny
sudo ufw allow 80
sudo ufw allow 22
7、啟動php5-fpm時,出現:
代碼: 複製代碼 代碼如下:PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/fpm/conf.d/ming.ini on line 1 in Unknown on line 0
[WARNING] [pool www] pm.start_servers is not set. It's been set to 20.
的提示,第一行的原因是在設定檔中已用;代替#來進行注釋。修改以下檔案:
代碼: 複製代碼 代碼如下:vi /etc/php5/fpm/conf.d/ming.ini
將#改為;即可。
第二行原因是/etc/php5/fpm/pool.d/www.conf設定檔中的
代碼:
;pm.start_servers = 20
去掉前面的;即可。
8、Discuz後台啟動 URL靜態化,會提示 404 Not Found的解決辦法:
在niginx中開啟Rewrite,在伺服器設定檔nignx.conf中寫入以下內容,然後重啟nginx。
代碼: 複製代碼 代碼如下:rewrite ^/archiver/((fid|tid)-[w-]+.html)$ /archiver/index.php?$1 last;
rewrite ^/forum-([0-9]+)-([0-9]+).html$ /forumdisplay.php?fid=$1&page=$2 last;
rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+).html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
rewrite ^/space-(username|uid)-(.+).html$ /space.php?$1=$2 last;
rewrite ^/tag-(.+).html$ /tag.php?name=$1 last;
break;
以下內容來自:http://www.vpsee.com/2011/04/some-nginx-rewrite-examples-for-subdirectories/,未測試。
Discuz! 7.2 安裝在子目錄 /bbs 下:
代碼: 複製代碼 代碼如下:rewrite ^/bbs/archiver/((fid|tid)-[\w\-]+\.html)$ /bbs/archiver/index.php?$1 last;
rewrite ^/bbs/forum-([0-9]+)-([0-9]+)\.html$ /bbs/forumdisplay.php?fid=$1&page=$2 last;
rewrite ^/bbs/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /bbs/viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
rewrite ^/bbs/space-(username|uid)-(.+)\.html$ /bbs/space.php?$1=$2 last;
rewrite ^/bbs/tag-(.+)\.html$ /bbs/tag.php?name=$1 last;
Discuz! X1.5 安裝在子目錄 /bbs 下:
代碼: 複製代碼 代碼如下:rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;
rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;
rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;
rewrite ^([^\.]*)/([a-z]+)-(.+)\.html$ $1/$2.php?rewrite=$3 last;
if (!-e $request_filename) {
return 404;
}