配置 Debian 是做爲Linux Web服務器,是一個很是不錯的選擇,她是當前僅次於Centos的最受歡迎的服務器操做系統。我很是喜好在系統上使用apt/dpkg/gedbi命令去安裝和更新軟件包,這很是方便。php
安裝一個功能完善的php 服務器環境,你須要安裝一整套的配套軟件,包括一個網頁服務器,一個數據庫。在本篇文章中,咱們將安裝配置nginx, php, php-fpm, apc 和 MariaDB。html
Nginx是一個新潮的網頁服務器,它被設計成爲能承受巨大網絡流量並且使用最少的內存和CPU佔用量。在Nginx出現以前,獨步武林的網頁服務器是Apache。然而,隨着互聯網的愈來愈流行,就須要一個更快速,效率更高的網頁服務器。python
Nginx vs Apachemysql
Apache 的設計是模塊化的,具擁有不少的功能,可是大部的功能在常規的網站中都是用不上的,它的設計多是爲了迎合全部人的需求,可是最後的結果是製造了一個重量級的且包含大部分不經常使用功能的網頁服務器。 Nginx 在另外一方面是很是時髦和極速的網頁服務器,主要集中在速度、擴展性及性能上。關於它的強大的技術已經超出了本文的範圍。咱們可能在後面做一些介紹。能告訴你的信息是,這個網站就是運行在Nginx上。 如今,拋開那些更深的討論,讓咱們開始吧!linux
Debian的官方包中已經有了Nginx包,因此你不須要再去其餘地方找了,使用apt-get來安裝它。nginx
apt-get install nginx
如今運行Nginxsql
service nginx start
這時在瀏覽器中打開如下網址來訪問Nginx服務器數據庫
http://localhost/
你將看到歡迎信息ubuntu
Welcome to nginx!
重要提示瀏覽器
爲了更好的管理的Nginx服務器,這有幾樣東西須要你記住。Nginx的配置文件能在如下目錄找到
/etc/nginx root@localhost:/etc/nginx# ls conf.d koi-win naxsi.rules scgi_params uwsgi_params fastcgi_params mime.types nginx.conf sites-available win-utf koi-utf naxsi_core.rules proxy_params sites-enabled
我建議你不要修改 nginx.conf 。咱們的替代方案是給每個虛擬主機/網站建立單獨的配置文件保存在如下目錄
/etc/nginx/sites-available /etc/nginx/sites-enabled
這裏和Apache類似,sites-enabled 包含的配置文件將會被啓用,這些文件都是指向sites-available 文件夾下配置文件的符號連接。
配置一個虛擬主機
如今,咱們已經安裝好了Nginx,是時候配置一個虛擬主機了。這就是在真實的網站服務器配置你的網站。 在 /etc/nginx/sites-available 文件夾裏能看到一個名爲default的文件,它是一個建立咱們本身的配置文件的模板文件。咱們只要拷貝它並命名爲你的網站。
cp default binarytides.com root@localhost:/etc/nginx/sites-available# ls binarytides.com default
咱們選擇網站的名稱做爲配置文件的名稱,這樣咱們就能很容易的記住和維護。
如今打開binarytides.com這個配置文件,並根據你的需求進行修改。 你能看到一個server節點,以下
server { #listen 80; ## listen for ipv4; this line is default and implied #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 root /usr/share/nginx/www; index index.html index.htm; # Make site accessible from http://localhost/ server_name localhost;
第一個要配置的就是server_name,這個就是你的網站網址,好比
server_name binarytides.com
或者
server_name binarytides.com www.binarytides.com
當有人在瀏覽器中打開binarytides.com,Nginx會根據HTTP header中包含的hostname去選擇和搜索匹配的server節點,當找到匹配的server節點,將會使用這部分的配置。 網站另外一個要配置的東西是網站的根目錄。默認的目錄是/usr/share/nginx/www ,你可能但願將它改成其餘目錄。
一般的作法是給每一個虛擬主機分別創建一個目錄他,以下
/usr/share/nginx/www/binarytides.com/ /usr/share/nginx/www/google.com/
因此建立一個合適的目錄而且將根目錄設置指向到這個目錄,如
... root /usr/share/nginx/www/binarytides.com; ...
在完成以上修改後,保存配置文件,而且建立一個符號連接到 /etc/nginx/sites-enabled 目錄。
root@localhost:/etc/nginx/sites-available# ls binarytides.com default root@localhost:/etc/nginx/sites-available# cd .. root@localhost:/etc/nginx# cd sites-enabled/ root@localhost:/etc/nginx/sites-enabled# ln -s ../sites-available/binarytides.com root@localhost:/etc/nginx/sites-enabled# ls binarytides.com default root@localhost:/etc/nginx/sites-enabled#
如今測試一下你的配置文件
nginx -t nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
最後一行的輸出內容必須爲successful ,不然有錯誤會顯示。可能會有一些警告,咱們能夠在後面修正。
最後,爲了讓新配置生效,咱們須要重啓Nginx。
service nginx restart Restarting nginx: nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored nginx. root@localhost:/etc/nginx/sites-enabled#
這樣,新的配置就生效了。如今建立一個新的index.html文件到相應的虛擬主機根目錄,從瀏覽器打開它,你就能看到了。
接下來的事情要安裝的是PHP解釋器和PHP-FPM。 PHP-FPM是PHP專用的來管理處理PHP請求的FastCGI進程管理器,它兼容的大部分WEB服務器。
Nginx <== 通訊 ==> Php-FPM <== 管理 ==> php child process
首先安裝必要的包。
apt-get install php5 php5-fpm
它會自動安裝相關依賴包,若是你須要用命令行運行腳本,你能夠安裝 'php5-cli' 包
Php-fpm 以單獨的服務器運行,而且使用套接字(socket)與nginx通訊。所以,php的執行是徹底與nginx隔離的,此外因爲fpm保持php進程持續,因此它徹底支持APC。
如今,咱們看一下php-fpm配置文件,文件在
/etc/php5/fpm/
進程池(Pool)是一組具備相同的用戶/組運行PHP進程。因此若是你想每一個網站的腳本以獨立的用戶權限運行,你須要建立獨立的fpm進程池。爲了簡單起見,咱們在這隻演示單個進程池。 The pool configuration files are inside the pool.d directory. Navigate in 進程池的配置文件在pool.d目錄。以下
root@localhost:/etc/php5/fpm/pool.d# ls www.conf
www.conf也是供你建立獨立進程池的模板,它的內容差很少是這樣子的
; Start a new pool named 'www'. ; the variable $pool can we used in any directive and will be replaced by the ; pool name ('www' here) [www] ; Per pool prefix ; It only applies on the following directives: ; - 'slowlog' ; - 'listen' (unixsocket) ; - 'chroot' ; - 'chdir' ; - 'php_values' ; - 'php_admin_values' ; When not set, the global prefix (or /usr) applies instead. ; Note: This directive can also be relative to the global prefix. ; Default Value: none ;prefix = /path/to/pools/$pool ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = www-data group = www-data ; The address on which to accept FastCGI requests. ; Valid syntaxes are: ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on ; a specific port; ; 'port' - to listen on a TCP socket to all addresses on a ; specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. listen = /var/run/php5-fpm.sock ; Set listen(2) backlog. ; Default Value: 128 (-1 on FreeBSD and OpenBSD) ;listen.backlog = 128 The above thing consists of comments mostly and the most important 4 lines are
咱們在這裏不許備修改太多。只用記住套接字通訊地址,將它放到nginx的配置文件裏。打開nginx的配置文件
裏面包含一個相似下面的配置
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # fastcgi_split_path_info ^(.+\.php)(/.+)$; # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php5-fpm: # fastcgi_pass unix:/var/run/php5-fpm.sock; # fastcgi_index index.php; # include fastcgi_params; #}
去掉註釋,修改爲
location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; }
測試PHP
如今在網站根目錄下面放一個有phpinfo函數的文件
<?php phpinfo();
而後在瀏覽器中打開這個文件,你將看到的是php的信息,意味着php配置成功且運行正常。
另一點,你能夠將index.php加入你索引列表,這樣當訪問目錄時,將默認調用index.php。
root /usr/share/nginx/www/binarytides.com; index index.html index.htm index.php;
安裝apc - Alternative PHP Cache
APC是一個提升PHP腳本的執行速度的好方法。 APC編譯PHP代碼,並保存操做碼在內存中,這樣就不須要從文件中從新編譯相同的php代碼。這大大加快執行速度。除了操做碼緩存,APC還提供了一個用戶緩存來在內存中存儲PHP應用程序原始數據。 PHP5.5版本中引入了一個名爲OPcache的新功能,它實現與apc同樣的操做碼緩存,從而下降了apc的地位。 設置apc是很是簡單和快捷的,只用爲php安裝apc包。
apt-get install php-apc
而後重啓php-fpm
service php5-fpm restart
如今,刷新的phpinfo頁面,它有關APC的信息了。apc的配置文件在
/etc/php5/fpm/conf.d/20-apc.ini
這個文件能夠根據的性能優化做相應的調整。如下是我使用的配置
extension=apc.so apc.enabled=1 apc.shm_size=128M apc.ttl=3600 apc.user_ttl=7200 apc.gc_ttl=3600 apc.max_file_size=1M
查找apc參數的,以獲取更多的信息。
想在咱們來到了LEMP安裝的最後一步了,咱們要安裝的是MariaDB而不是Mysql。咱們知道Mysql如今在oracle手上,可能在不久將會商業化。因此大部分的公司開始轉向MariaDB。好消息是MariaDB兼容mysql並增長了不少的功能,因此若是你的php應用使用的是mysql,你可無縫轉換到MariaDB。
MariaDB 如今再也不debian包倉庫中,能夠從如下地址添加源
https://downloads.mariadb.org/mariadb/repositories/
根據頁面上的提示選擇相應的版本,獲取源地址。
下面就是我獲取到的命令
sudo apt-get install python-software-properties sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db sudo add-apt-repository 'deb http://mirrors.fe.up.pt/pub/mariadb/repo/10.0/debian wheezy main'
如今咱們來更新apt的緩存並安裝mariadb包
sudo apt-get update sudo apt-get install mariadb-server mariadb-client
安裝時mariadb會要求輸入root的密碼。輸入密碼,並肯定你不會忘記。
安裝完成後,檢查mariadb的版本
# mysql -V mysql Ver 15.1 Distrib 10.0.3-MariaDB, for debian-linux-gnu (x86_64) using readline 5.1
要注意的是這裏的命令和mysql的同樣,可是版本信息中顯示的是mariadb 。
網站服務器已準備就緒
如今LEMP網站服務器已經可使用了,你能夠安裝一些好比phpmyadmin去更好的管理數據庫,Phpmyadmin 已經存在debian的倉庫中,你能夠直接從那安裝。