學習筆記—Ubuntu上搭建web伺服器
Note from 2014-06-28 17:57:14.400
Ubuntu 14.04 LTS 安裝 LNMP NginxPHP5 (PHP-FPM)MySQL
利用http://www.linuxidc.com/Linux/2014-05/102351.htm 文件做為安裝的參考文件,並錄製視訊來完成整個安裝和測試
============
1 安裝前的提示
修改自己的主機名 並記錄下你的IP,方便後面測試使用。
另外,安裝中我們使用root使用者,先進行使用者切換
命令:sudo su (輸入密碼就可以了,這樣做可以減少後面安裝軟體時經常輸入密碼)
2 安裝mysql 5資料庫
命令是:
apt-get install mysql-server mysql-client
安裝過程中會訪問建立root賬號的密碼,連續輸入兩次:
提示如下:
New password for the MYSQL “root” user: 輸入你的密碼
Repeat password for the MYSQL “root” user:再輸入一次
3 安裝Nginx
在安裝Nginx前,先檢查一下是否安裝了apache 2,安裝了再刪除,命令如下:
server apache2 stop
update-rc.d -f apache2 remove
apt-get remove apache2
apt-get install nginx
啟動nginx,service nginx start
測試是否啟動成功: 在瀏覽器裡輸入
http://localhost or http://ip ,
如果出現welcome to nginx! 頁面就是安裝成功了!!!
Note:在Ubuntu 14.04中預設的根目錄為
/usr/share/nginx/html
4 安裝PHP 5
我們必須通過PHP-FPM才能讓PHP5正常工作,安裝命令:
apt-get install php5-fpm
php-fpm是一個守護程式
5 配置nginx
使用vi開啟配置檔案/etc/nginx/nginx.conf,命令如下:
vi /etc/nginx/nginx.conf
配置不是很容易明白,可以參考相關網頁,如:
http://wiki.nginx.org/NginxFullExample
我們調整:工作程式數:
worker_processes 4;
keepalive_timeout 2;
預設虛擬主機設定檔案/etc/nginx/sites-available/default 命令如下:
vi /etc/nginx/sites-available/default
配置如下:
server {
listen 80;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ /index.html;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
location /doc/ {
alias /usr/share/doc/;
autoindex on;
allow 127.0.0.1;
allow ::1;
deny all;
}
# Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
#location /RequestDenied {
# proxy_pass http://127.0.0.1:8080;
#}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ .php$ {
try_files $uri =404;
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;
}
# deny access to .htaccess files, if Apache`s document root
# concurs with nginx`s one
#
location ~ /.ht {
deny all;
}
}
取消同時偵聽ipv4 和ipv6的80埠
erver_name _; 預設主機名 (當然你可以修改,例如修改為: www.example.com).
index主頁這一行我們加入 index.php。
PHP 重要配置配置 location ~ .php$ {} 這幾行我們需要啟動,反註釋掉。另外再新增一行:try_files $uri =404。
(其他配置檢視http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP 和 http://forum.nginx.org/read.php?2,88845,page=3).
儲存檔案並重新載入 nginx 命令:
service nginx reload
如果載入失敗,直接用刪除所有配置內容,用上面的資訊替換。
開啟配置檔案 /etc/php5/fpm/php.ini…
vi /etc/php5/fpm/php.ini
… 如下設定 cgi.fix_pathinfo=0:
[…]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP`s
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting
; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0
[…]
重新載入 PHP-FPM:
service php5-fpm reload
現在建立一個探針檔案儲存在 /usr/share/nginx/html目錄下
vi /usr/share/nginx/html/info.php
<?php
phpinfo();
?>
瀏覽器下訪問探針檔案 (e.g. http://localhost/info.php):
正如你看到的 PHP5 正在執行,並且是通過 FPM/FastCGI,向下滾動,我們看看那些模組已經啟動,MySQL是沒有列出這意味著我們沒有MySQL支援PHP5。
6 下面讓 PHP5 支援 MySQL
先搜尋一下,看看那些模組支援:
apt-cache search php5
然後使用下面的命令安裝:
apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
APC是一個自由和開放的PHP操作碼快取器快取和優化PHP的中間程式碼。這是類似於其他PHP操作碼cachers,如eAccelerator、XCache。這是強烈建議有一個安裝加速你的PHP頁面。
使用下面的命令安裝 APC:
apt-get install php-apc
現在重新載入 PHP-FPM:
service php5-fpm reload
重新整理 http://localhost/info.php 向下滾動看看模組是否支援:
7 讓 PHP-FPM 使用 TCP 連線
預設情況下 PHP-FPM 偵聽的是 /var/run/php5-fpm.sock,要讓 PHP-FPM 使用 TCP 連線,需要開啟編輯配置檔案 /etc/php5/fpm/pool.d/www.conf…
vi /etc/php5/fpm/pool.d/www.conf
按照下面的修改資訊
[…]
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
[…]
這將使php-fpm偵聽埠9000上的IP 127.0.0.1(localhost)。確保你使用的埠不在你的系統上使用。
重新載入 PHP-FPM:
service php5-fpm reload
下面通過配置 nginx 修改主機,更改這一行註釋掉 fastcgi_pass unix:/var/run/php5-fpm.sock; 這一行反註釋 fastcgi_pass 127.0.0.1:9000;,按照下面的設定:
vi /etc/nginx/sites-available/default
[…]
location ~ .php$ {
try_files $uri =404;
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;
}
[…]
重新載入 nginx:
service nginx reload
8 CGI/Perl Scripts
如果你想 Nginx支援 CGI/Perl 指令碼服務,可閱讀此教程 Serving CGI Scripts With Nginx On Debian Squeeze/Ubuntu 11.04
推薦的方法是使用fcgiwrap(4章)
——————————-
另外收藏ubuntu 12.04 下lamp安裝配置教程,這個我在32位的14.04上安裝成功:
參考:http://www.linuxidc.com/Linux/2012-05/61079.htm
命令如下:
1 lamp 安裝:
sudo apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql
根目錄在/var/www
修改目錄許可權:sudo chmod 777 /var/www/
2 phpmyadmin 安裝:
sudo apt-get install phpmyadmin
安裝過程中web server:apache2
配置密碼
建立與apache2的連線:
sudo ln -s /usr/share/phpmyadmin /var/www
測試:http://localhost/phpmyadmin
3 Apache 配置:
啟用mod_rewirte模組: sudo a2enmod rewrite
重啟:sudo /etc/init.d/apache2 restart
測試:test.php
內容如下:
<?php
$link=mysql_connect(“localhost”,”root”,”mysql_password”);
if(!$link){
die(`could not connect:`,mysql_error());
}
else echo “mysql已經正確配置”;
mysql_close($link);
?>
測試時出現中文亂碼解決方法如下:
sudo gedit /etc/apache2/apache2.conf
在最後新增: addDefaultCharset UTF-8
儲存,並重啟apache 就可以了
===========================
Ubuntu+Nginx+Mysql+Php(ubuntu 12.04)
來自:http://forum.ubuntu.org.cn/viewtopic.php?f=54&t=241301&sid=65af77cf69180787da232f3343ca2fb8
——————-
由於最新的php整合了fpm,ubuntu12.04及以上版本安裝更簡單了,安裝過程如下:
1、安裝網站系統
程式碼:
sudo apt-get install nginx php5-common php5-fpm php-apc php5-mysql php5-gd mysql-server
2、修改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;
}
3、重啟系統、上傳檔案,網站建立成功!試試吧!
附:系統及部分軟體管理操作
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
Ubuntu 14.04 LTS 安裝 LNMP NginxPHP5 (PHP-FPM)MySQL
利用http://www.linuxidc.com/Linux/2014-05/102351.htm 文件做為安裝的參考文件,並錄製視訊來完成整個安裝和測試
============
1 安裝前的提示
修改自己的主機名 並記錄下你的IP,方便後面測試使用。
另外,安裝中我們使用root使用者,先進行使用者切換
命令:sudo su (輸入密碼就可以了,這樣做可以減少後面安裝軟體時經常輸入密碼)
2 安裝mysql 5資料庫
命令是:
apt-get install mysql-server mysql-client
安裝過程中會訪問建立root賬號的密碼,連續輸入兩次:
提示如下:
New password for the MYSQL “root” user: 輸入你的密碼
Repeat password for the MYSQL “root” user:再輸入一次
3 安裝Nginx
在安裝Nginx前,先檢查一下是否安裝了apache 2,安裝了再刪除,命令如下:
server apache2 stop
update-rc.d -f apache2 remove
apt-get remove apache2
apt-get install nginx
啟動nginx,service nginx start
測試是否啟動成功: 在瀏覽器裡輸入
http://localhost or http://ip ,
如果出現welcome to nginx! 頁面就是安裝成功了!!!
Note:在Ubuntu 14.04中預設的根目錄為
/usr/share/nginx/html
4 安裝PHP 5
我們必須通過PHP-FPM才能讓PHP5正常工作,安裝命令:
apt-get install php5-fpm
php-fpm是一個守護程式
5 配置nginx
使用vi開啟配置檔案/etc/nginx/nginx.conf,命令如下:
vi /etc/nginx/nginx.conf
配置不是很容易明白,可以參考相關網頁,如:
http://wiki.nginx.org/NginxFullExample
我們調整:工作程式數:
worker_processes 4;
keepalive_timeout 2;
預設虛擬主機設定檔案/etc/nginx/sites-available/default 命令如下:
vi /etc/nginx/sites-available/default
配置如下:
server {
listen 80;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ /index.html;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
location /doc/ {
alias /usr/share/doc/;
autoindex on;
allow 127.0.0.1;
allow ::1;
deny all;
}
# Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
#location /RequestDenied {
# proxy_pass http://127.0.0.1:8080;
#}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ .php$ {
try_files $uri =404;
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;
}
# deny access to .htaccess files, if Apache`s document root
# concurs with nginx`s one
#
location ~ /.ht {
deny all;
}
}
取消同時偵聽ipv4 和ipv6的80埠
erver_name _; 預設主機名 (當然你可以修改,例如修改為: www.example.com).
index主頁這一行我們加入 index.php。
PHP 重要配置配置 location ~ .php$ {} 這幾行我們需要啟動,反註釋掉。另外再新增一行:try_files $uri =404。
(其他配置檢視http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP 和 http://forum.nginx.org/read.php?2,88845,page=3).
儲存檔案並重新載入 nginx 命令:
service nginx reload
如果載入失敗,直接用刪除所有配置內容,用上面的資訊替換。
開啟配置檔案 /etc/php5/fpm/php.ini…
vi /etc/php5/fpm/php.ini
… 如下設定 cgi.fix_pathinfo=0:
[…]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP`s
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting
; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0
[…]
重新載入 PHP-FPM:
service php5-fpm reload
現在建立一個探針檔案儲存在 /usr/share/nginx/html目錄下
vi /usr/share/nginx/html/info.php
<?php
phpinfo();
?>
瀏覽器下訪問探針檔案 (e.g. http://localhost/info.php):
正如你看到的 PHP5 正在執行,並且是通過 FPM/FastCGI,向下滾動,我們看看那些模組已經啟動,MySQL是沒有列出這意味著我們沒有MySQL支援PHP5。
6 下面讓 PHP5 支援 MySQL
先搜尋一下,看看那些模組支援:
apt-cache search php5
然後使用下面的命令安裝:
apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
APC是一個自由和開放的PHP操作碼快取器快取和優化PHP的中間程式碼。這是類似於其他PHP操作碼cachers,如eAccelerator、XCache。這是強烈建議有一個安裝加速你的PHP頁面。
使用下面的命令安裝 APC:
apt-get install php-apc
現在重新載入 PHP-FPM:
service php5-fpm reload
重新整理 http://localhost/info.php 向下滾動看看模組是否支援:
7 讓 PHP-FPM 使用 TCP 連線
預設情況下 PHP-FPM 偵聽的是 /var/run/php5-fpm.sock,要讓 PHP-FPM 使用 TCP 連線,需要開啟編輯配置檔案 /etc/php5/fpm/pool.d/www.conf…
vi /etc/php5/fpm/pool.d/www.conf
按照下面的修改資訊
[…]
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
[…]
這將使php-fpm偵聽埠9000上的IP 127.0.0.1(localhost)。確保你使用的埠不在你的系統上使用。
重新載入 PHP-FPM:
service php5-fpm reload
下面通過配置 nginx 修改主機,更改這一行註釋掉 fastcgi_pass unix:/var/run/php5-fpm.sock; 這一行反註釋 fastcgi_pass 127.0.0.1:9000;,按照下面的設定:
vi /etc/nginx/sites-available/default
[…]
location ~ .php$ {
try_files $uri =404;
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;
}
[…]
重新載入 nginx:
service nginx reload
8 CGI/Perl Scripts
如果你想 Nginx支援 CGI/Perl 指令碼服務,可閱讀此教程 Serving CGI Scripts With Nginx On Debian Squeeze/Ubuntu 11.04
推薦的方法是使用fcgiwrap(4章)
——————————-
另外收藏ubuntu 12.04 下lamp安裝配置教程,這個我在32位的14.04上安裝成功:
參考:http://www.linuxidc.com/Linux/2012-05/61079.htm
命令如下:
1 lamp 安裝:
sudo apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql
根目錄在/var/www
修改目錄許可權:sudo chmod 777 /var/www/
2 phpmyadmin 安裝:
sudo apt-get install phpmyadmin
安裝過程中web server:apache2
配置密碼
建立與apache2的連線:
sudo ln -s /usr/share/phpmyadmin /var/www
測試:http://localhost/phpmyadmin
3 Apache 配置:
啟用mod_rewirte模組: sudo a2enmod rewrite
重啟:sudo /etc/init.d/apache2 restart
測試:test.php
內容如下:
<?php
$link=mysql_connect(“localhost”,”root”,”mysql_password”);
if(!$link){
die(`could not connect:`,mysql_error());
}
else echo “mysql已經正確配置”;
mysql_close($link);
?>
測試時出現中文亂碼解決方法如下:
sudo gedit /etc/apache2/apache2.conf
在最後新增: addDefaultCharset UTF-8
儲存,並重啟apache 就可以了
===========================
Ubuntu+Nginx+Mysql+Php(ubuntu 12.04)
來自:http://forum.ubuntu.org.cn/viewtopic.php?f=54&t=241301&sid=65af77cf69180787da232f3343ca2fb8
——————-
由於最新的php整合了fpm,ubuntu12.04及以上版本安裝更簡單了,安裝過程如下:
1、安裝網站系統
程式碼:
sudo apt-get install nginx php5-common php5-fpm php-apc php5-mysql php5-gd mysql-server
2、修改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;
}
3、重啟系統、上傳檔案,網站建立成功!試試吧!
附:系統及部分軟體管理操作
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
===============================
本文轉自孤舟夜航之家部落格51CTO部落格,原文連結http://blog.51cto.com/cysky/1432038如需轉載請自行聯絡原作者
cysky
相關文章
- 【Web】Web 階段學習筆記Web筆記
- Linux 學習筆記(二):搭建個人Git伺服器Linux筆記Git伺服器
- Web 開發學習筆記(1) — 搭建你的第一個 Web ServerWeb筆記Server
- Lua 學習筆記(上)筆記
- 【Web技術學習】PHP學習筆記WebPHP筆記
- Web基礎學習筆記Web筆記
- Web Bundles 學習筆記Web筆記
- Web之http學習筆記WebHTTP筆記
- Ubuntu 搭建 GitLab 筆記UbuntuGitlab筆記
- Ubuntu20.04搭建web伺服器UbuntuWeb伺服器
- JavaScript入門學習學習筆記(上)JavaScript筆記
- Django Book 學習筆記(上)Django筆記
- QTP學習筆記(上)薦QT筆記
- 《學習筆記》.NET Core API搭建筆記API
- 學習筆記:MQTT環境搭建筆記MQQT
- CAS學習筆記一:CAS 授權伺服器簡易搭建筆記伺服器
- 奢侈地用ubuntu(純個人學習筆記)Ubuntu筆記
- webpack 學習筆記:使用 babel(上)Web筆記Babel
- webpack 學習筆記:核心概念(上)Web筆記
- webpack 學習筆記:引入 CSS(上)Web筆記CSS
- ZooKeeper學習筆記一:叢集搭建筆記
- Android環境搭建學習筆記Android筆記
- React學習筆記1:環境搭建React筆記
- Web開發學習筆記——HTTP 概述Web筆記HTTP
- Redis學習筆記(十一) 伺服器Redis筆記伺服器
- JAVA學習筆記—JAVA WEB(二)JAVA WEB核心(下)Java筆記Web
- 好程式設計師web前端培訓學習筆記Vue學習筆記一程式設計師Web前端筆記Vue
- Nginx學習筆記(反向代理&搭建叢集)Nginx筆記
- perl學習筆記--搭建開發環境筆記開發環境
- Redis學習筆記(十七) 叢集(上)Redis筆記
- 飛機的 PHP 學習筆記七:WebPHP筆記Web
- go實戰web入門學習筆記GoWeb筆記
- 學習筆記--Web基礎day04筆記Web
- web前端培訓分享node學習筆記Web前端筆記
- web前端學習筆記(CSS盒子的定位)Web前端筆記CSS
- Spring web Flow2學習筆記SpringWeb筆記
- HTML5學習筆記 Web儲存HTML筆記Web
- 狂神說Java Web學習筆記_CookieJavaWeb筆記Cookie