Lnmp
網絡環境
系統版本 : CentOS release 6.6 (Final)
內核版本 : 2.6.32-504.el6.x86_64
Ip地址 :172.16.6.61/24
Nginx 版本 :nginx/1.6.2
Mysql版本5.5.43-MariaDB-log
php版本 :PHP5.4.40
xcache版本 : xcache-3.2.0.
安裝配置步驟
安裝配置nginx
1 . 安裝開發包組
編譯安裝nginx之前需要安裝開發包組"DevelopmentTools"和"Server Platform Development",還需要專門安裝pcre-devel包
# yum groupinstall"Development tools" "Server Platform Development""Desktop Platform Development" "Debug Tools" -y
# yum install pcre-devel -y
2 . 安裝編譯nginx
添加運行nginx worker 進程的用戶 和用戶組
# groupadd -r nginx
# useradd -g nginx -r nginx
解壓,編譯,安裝,nginx
# tar xvf nginx-1.6.2.tar.gz
# cd nginx-1.6.2
# ./configure--prefix=/usr/local/nginx-1.6.2 --user=nginx --group=nginx --pid-path=/var/run/nginx/nginx.pid--lock-path=/var/lock/nginx.lock --with-http_ssl_module--with-http_stub_status_module --with-http_gzip_static_module--with-http_flv_module --with-http_mp4_module--http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi
# make && makeinstall
編譯安裝時候的選項
--prefix=PATH setinstallation prefix #安裝nignx的目錄
--user=USER setnon-privileged user for worker processes #以什麼用戶的身份運行nignx
--group=GROUP setnon-privileged group for worker processes #以什麼組的身份運行nignx
--pid-path=PATH set nginx.pidpathname #nginx pid路徑
--lock-path=PATH setnginx.lock pathname #lock(鎖)路徑
--with-http_ssl_module enablengx_http_ssl_module #支持SSL功能
--with-http_flv_module enablengx_http_flv_module #支持flv的流媒體
....
切換至安裝nginx的安裝位置
# cd /usr/local/
建立nginx 符號鏈接,便於以後升級訪問維護
# ln -s nginx-1.6.2 nginx
創建編譯安裝時需要的路徑
# mkdir -pv /var/tmp/nginx/{client,proxy,fastcgi,uwsgi}
啓動nginx#nginx 默認會監聽在tcp/80
# /usr/local/nginx/sbin/nginx
# ss -lnt| grep :80
nginx的配置文件:
nginx的配置文件可分爲
(1) main配置段:全局配置段
(2)event{}: 定義event模型工作特性
(3) http {} : 定義http協議相關的配置
配置段指令:要以分號結尾,語法格式: directive value1 [value2...]
#############main 配置段################################################################
# 指定運行worker進程的用戶和組;#在編譯中指定了運行的nginx的用戶和組;編譯完成以後默認會被註釋掉.
user nginx nginx;
# worker進程的個數;通常應該略少於CPU物理核心數;可設置爲auto
worker_processes auto;
# 指定錯誤日誌存放的路徑,錯誤日誌記錄級別可選項爲:[ debug | info | notice | warn | error | crit ]
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
error_log logs/error.log crit;
# 指定 pid 存放的路徑
pid /usr/local/nginx/nginx.pid;
# 指定文件描述符數量
worker_rlimit_nofile 51200;
#############events 配置段################################################################
events
{
# 使用的網絡I/O模型,Linux系統推薦採用epoll模型,FreeBSD系統推薦採用kqueue模型
use epoll;
# 允許的連接數
worker_connections 51200;
}
#############http 配置段################################################################
http
{
include mime.types;
default_type application/octet-stream;
# 設置使用的字符集,如果一個網站有多種字符集,請不要隨便設置,應讓程序員在HTML代碼中通過Meta標籤設置
#charset gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
# 設置客戶端能夠上傳的文件大小
client_max_body_size 8m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
# 開啓gzip壓縮
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascripttext/css application/xml;
gzip_vary on;
#limit_zone crawler $binary_remote_addr 10m;
# 第一個虛擬主機
server
{
# 監聽的端口
listen 80;
# 主機名稱
server_name www.a.com;
# 訪問日誌文件存放路徑
access_log logs/a.com.access.log combined;
location /
{
# 默認首頁文件,順序從左到右,如果找不到index.html文件,則查找index.htm文件作爲首頁文件
index index.html index.htm;
# HTML網頁文件存放的目錄
root /vhosts/a.com;
}
}
# 第二個虛擬主機
server
{
# 監聽的IP和端口
listen 80;
# 主機名稱
server_name bbb.otherdomain.com;
#訪問日誌文件存放路徑
access_log logs/bbb.otherdomain.com.access.logcombined;
location /
{
# 默認首頁文件,順序從左到右,如果找不到index.html文件,則查找index.htm文件作爲首頁文件
index index.html index.htm;
# HTML網頁文件存放的目錄
root /data0/htdocs/bbb.otherdomain.com;
}
}
# 第三個虛擬主機
server
{
# 監聽的IP和端口
listen 80;
# 主機名稱
server_name www.domain.com domain.com *.domain.com;
# 訪問日誌文件存放路徑
access_log logs/bbb.domain.com.access.log combined;
location /
{
# 默認首頁文件,順序從左到右,如果找不到index.html文件,則查找index.htm文件作爲首頁文件
index index.html index.htm;
# HTML網頁文件存放的目錄
root /data0/htdocs/domain.com;
}
}
}
創建測試頁面
[root@node1 conf]# echo a.com> /vhosts/a.com/index.html
[root@node1 conf]# echo b.com> /vhosts/b.com/index.html
[root@node1 conf]# echo c.com> /vhosts/c.com/index.html
啓動nginx
# /usr/local/nginx/sbin/nginx
訪問測試頁面
[root@node1 conf]# for i inwww.a.com www.b.com www.c.com ;do curl $i ;done
a.com
b.com
c.com
安裝mariadb
安裝mariadb-5.5.43
#添加運行mysql的用戶和用戶組
groupadd -g 306 mysql
useradd -r -u 306 -g 306 -s/sbin/nologin mysql
id mysql
#uid=306(mysql)gid=306(mysql) groups=306(mysql)
安裝mariadb
tar xvfmariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/
#創建符號鏈接
ln -smariadb-5.5.43-linux-x86_64 mysql
ls -lh mysql
#lrwxrwxrwx 1 root root 27May 3 19:54 mysql ->mariadb-5.5.43-linux-x86_64
cd mysql/
cp support-files/mysql.server/etc/init.d/mysqld
chmod u+X /etc/init.d/mysqld
#創建數據目錄
mkdir /data/mydata -p
#授權mysql 爲mysql數據目錄的的屬主
chown -R root.mysql/usr/local/mariadb-5.5.43-linux-x86_64/
chown mysql.root /data/mydata
#初始化mysql
/usr/local/mysql/scripts/mysql_install_db--user=mysql --datadir=/data/mydata/
修改my.cnf 添加數據目錄的位置
\cp support-files/my-huge.cnf/etc/my.cnf
[root@localhost mysql]# vim/etc/my.cnf
[mysqld]
datadir = /data/mydata
啓動mysql
/etc/init.d/mysqld start
安裝php
PHP rpm包的依賴關係
yum install bzip2-devel -y
yum install -ylibmcrypt-devel
安裝php
tar xvf php-5.4.40.tar.bz2
cd php-5.4.40
./configure --prefix=/usr/local/php \
--with-mysql=/usr/local/mysql\
--with-openssl \
--with-mysqli=/usr/local/mysql/bin/mysql_config\
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-sockets \
--enable-fpm \
--with-mcrypt \
--with-config-file-path=/etc\
--with-config-file-scan-dir=/etc/php.d\
--with-bz2
make && make install
爲php提供配置文件 #cp 解壓的源代碼樹下的php.ini-production
cp php.ini-production/etc/php.ini
爲php-fpm提供配置文件
cd /usr/local/php/etc/
cp -a php-fpm.conf.defaultphp-fpm.conf
#爲php-fpm提供服務控制腳本,並將其添加至服務列表 #php解壓源代碼樹目錄下
cd /root/php-5.4.40
cpsapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
chmod +x/etc/rc.d/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
啓動php-fpm
/etc/init.d/php-fpm start
驗正php進程是否啓動成功
# ps aux | grep php-fpm #用於查看php進程
# netstat -tnlp | grepphp-fpm #用於查看php是否監聽在響應的套接字上
配置nginx支持php解析
vim /usr/local/nginx/conf/nginx.conf
#############main 配置段################################################################
# 指定運行worker進程的用戶和組;#在編譯中指定了運行的nginx的用戶和組;編譯完成以後默認會被註釋掉.
user nginx nginx;
# worker進程的個數;通常應該略少於CPU物理核心數;可設置爲auto
worker_processes auto;
# 指定錯誤日誌存放的路徑,錯誤日誌記錄級別可選項爲:[ debug | info | notice | warn | error | crit ]
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
error_log logs/error.log crit;
# 指定 pid 存放的路徑
pid /usr/local/nginx/nginx.pid;
# 指定文件描述符數量
worker_rlimit_nofile 51200;
#############events 配置段################################################################
events
{
# 使用的網絡I/O模型,Linux系統推薦採用epoll模型,FreeBSD系統推薦採用kqueue模型
use epoll;
# 允許的連接數
worker_connections 51200;
}
#############http 配置段################################################################
http
{
include mime.types;
default_typeapplication/octet-stream;
server_names_hash_bucket_size128;
client_header_buffer_size32k;
large_client_header_buffers 432k;
client_max_body_size 8m;
client_header_timeout 10;
client_body_timeout 10;
reset_timedout_connection on;
send_timeout 10;
sendfile on;
tcp_nopush on;
keepalive_timeout 10;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size128k;
fastcgi_temp_file_write_size256k;
limit_conn_zone$binary_remote_addr zone=addr:5m;
limit_conn addr 100;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plainapplication/x-javascripttext/css application/xml;
gzip_vary on;
gzip_proxied expired no-cacheno-store private auth;
gzip_disable "MSIE[1-6]\.";
open_file_cache max=102400inactive=30s;
open_file_cache_valid 90s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
server_tokens off;
log_format access'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
log_not_found off;
fastcgi_intercept_errors on;
include/usr/local/nginx/conf.d/*.conf;
}
# mkdir /usr/local/nginx/conf.d
# vim /usr/local/nginx/conf.d/vhost.conf
# 第一個虛擬主機
server
{
# 監聽的端口
listen 80;
# 主機名稱
server_name www.a.com;
# 訪問日誌文件存放路徑
access_log logs/a.com.access.log combined;
location /
{
# 默認首頁文件,順序從左到右,如果找不到index.html文件,則查找index.htm文件作爲首頁文件
index index.html index.htm;
# HTML網頁文件存放的目錄
root /vhosts/a.com;
}
location ~ \.php$ {
root /vhosts/a.com;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# 第二個虛擬主機
server
{
# 監聽的IP和端口
listen 80;
# 主機名稱
server_name www.b.com;
# 訪問日誌文件存放路徑
access_log logs/b.com.access.log combined;
location /
{
# 默認首頁文件,順序從左到右,如果找不到index.html文件,則查找index.htm文件作爲首頁文件
index index.html index.htm;
# HTML網頁文件存放的目錄
root /vhosts/b.com;
}
location ~ \.php$ {
root /vhosts/b.com;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# 第三個虛擬主機
server
{
# 監聽的IP和端口
listen 80;
# 主機名稱
server_name www.c.com;
# 訪問日誌文件存放路徑
access_log logs/c.com.access.log combined;
location /
{
# 默認首頁文件,順序從左到右,如果找不到index.html文件,則查找index.htm文件作爲首頁文件
index index.html index.htm;
# HTML網頁文件存放的目錄
root /vhosts/c.com;
}
location ~ \.php$ {
root /vhosts/c.com;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;
include fastcgi_params;
}
}
訪問;
安裝xcache
# tar xvfxcache-3.2.0.tar.bz2
# cd xcache-3.2.0
# /usr/local/php/bin/phpize
# ./configure --enable-xcache--with-php-config=/usr/local/php/bin/php-config
# make && makeinstall
# cp xcache.ini /etc/php.d/
配置xcache.ini
# vim /etc/php.d/xcache.ini
....
;; non-Windows example:
extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so
....
重啓啓動php-fpm
# /etc/init.d/php-fpm stop
# /etc/init.d/php-fpm start
訪問測試頁面