SSI说明

一、SSI
Server Side Include,是一种基于服务端的网页制作技术,大多数(尤其是基于Unix平台)的web服务器如Netscape Enterprise Server等均支持SSI命令。
它的工作原因是:在页面内容发送到客户端之前,使用SSI指令将文本、图片或代码信息包含到网页中。对于在多个文件中重复出现内容,使用SSI是一种简便的方法,将内容存入一个包含文件中即可,不必将其输入所有文件。通过一个非常简单的语句即可调用包含文件,此语句指示Web服务器将内容插入适当网页。而且,使用包含文件时,对内容的所有更改只需在一个地方就能完成。

二、Nginx配置
ssi: 默认值off,启用ssi时将其设为on
ssi_silent_errors: 默认值off,开启后在处理SSI文件出错时不输出错误提示”[an error occurred while processing the directive]”。
ssi_types: 默认是text/html,所以如果需支持html,则不需要设置这句,如果需要支持shtml则需要设置:ssi_types text/shtml
三个参数可以放在http, server或location作用域下

三、Apache配置
AddType text/html .shtml .html
AddOutputFilter INCLUDES .shtml .html
Options Indexes FollowSymLinks INCLUDES IncludesNOEXEC

四、file和virtual
file可以包含一些指令,virtual不可以

五、语法
<!–#include virtual=”test.html” –>

&lt;!--#include file="test.html"--&gt;

参考:http://man.chinaunix.net/newsoft/ApacheManual/howto/ssi.html

http://nginx.org/en/docs/http/ngx_http_ssi_module.html

负载均衡知识汇总

一、DNS轮询
1.实现
DNS配置多个IP域名解析(A记录)

2.优点
部署简单

3.缺点
非高可用(健康监测需人工干预)
会话状态需要共享(session共享)
扩容非实时(DNS解析缓存和TTL)
暴漏较多的外网IP

备注:DNS轮询是从域名层面做负载均衡

Continue reading

Nginx配置proxy_cookie_domain

页面地址是a.com,但是要用b.com的cookie需要
proxy_set_header Cookie $http_cookie;
location / {
proxy_cookie_domain b.com a.com;  #注意别写错位置了 proxy_cookie_path / /;
proxy_pass http://b.com;
 }   
参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_domain

nginx配置Symfony

server {
    listen       80;
    server_name  blog.phpfs.com;
    root   /data/web;
    rewrite ^/app\.php/?(.*)$ /$1 permanent;
    location / {
        index app.php;
        try_files $uri @rewriteapp;
    }
    location @rewriteapp {
        rewrite ^(.*)$ /app.php/$1 last;
    }
    index  index.html index.htm index.php app.php;
    location ~ \.php {
        fastcgi_pass unix:/dev/shm/php5-fpm.sock;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ /\.ht {
        deny  all;
    }
}

 

nginx搭建wordpress

server {
    listen 80;
    root /data/blog.phpfs.com;
    server_name blog.phpfs.com;
    index index.html index.htm index.php;
    access_log /data/logs/nginx/blog.phpfs.com-access.log;
    error_log /data/logs/nginx/blog.phpfs.com-error.log;

    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }
    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
        #access_log off;
        expires 7d;
    }
    location ~ \.php {
        fastcgi_pass unix:/dev/shm/php5-fpm.sock;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }
}

 
参考:
https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

Vagrant搭建Linux环境

1、下载软件
https://www.virtualbox.org/wiki/Downloads
https://www.vagrantup.com/downloads.html
http://www.vagrantbox.es/ 下载一个镜像
2、安装virtualbox、vagrant
3、查看vagrant是否安装
vagrant -v
4、安装
vagrant box add ubuntu14.04 ubuntu14.04.box
vagrant init
vagrant box list #检查是否导入
编辑Vagrantfile配置虚拟机信息
config.vm.network :forwarded_port, guest: 80, host: 80
配置虚拟机的80到本机的80端口,其中guest是虚拟机
config.vm.network :private_network, ip: 192.168.56.100(根据自己网卡设定)
配置虚拟机IP,可以配置和物理机一样的IP(具体参考Vagrantfile)
config.vm.synced_folder “D:/www”, “/var/www/html”
目录映射
5、启动
vagrant up
6、导出镜像
vagrant package
这样就直接用这个镜像来制作虚拟机

备注

1、可能因为机器没有开启虚拟机化导致启动失败,这样可以打开gui看下提示信息

2、打开virtual box查看使用的是那块网卡上网,要设置到同一网络!

vagrant ssh登录
vagrant up (启动虚拟机)
vagrant halt (关闭虚拟机——对应就是关机)
vagrant suspend (暂停虚拟机——只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,可以执行恢复操作后继续使用)
vagrant resume (恢复虚拟机 —— 与前面的暂停相对应)
vagrant box remove centos6.6 (移除box,其中centos6.6是box名)
vagrant destroy (删除虚拟机,删除后在当前虚拟机所做进行的除开Vagrantfile中的配置都不会保留)

代理Node服务器

apache版本

        DocumentRoot /data/html/abc
        ServerName blog.phpfs.com

        ProxyPass http://127.0.01:3000/#注意Node监听的端口
        ProxyPassReverse http://127.0.0.1:3000/


nginx版本
server {  
    listen  80;  
    server_name blog.phpfs.com;  
    location / {  
        proxy_pass http://127.0.0.1:3000;  
    }  
} 

 

Centos7安装LAMP+PHPmyadmin

1、更新Centos7下载源
更新之前记得备份!!!
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
参考:http://mirrors.aliyun.com/help/centos
163的源参考:http://mirrors.163.com/.help/centos.html
2、更新本地缓存
yum clean all
yum makecache
3、安装网络工具
yum install net-tools
如果你要用ifconfig等命令的话
4、关闭firewall
systemctl stop firewalld.service
systemctl disable firewalld.service
5、关闭selinux
vi /etc/selinux/config
注释#SELINUX=enforcing
注释#SELINUXTYPE=targeted
添加SELINUX=disabled
保存退出:wq
setenforce 0#关闭selinux
6、安装apache
yum install httpd
7、安装Mariadb
yum install mariadb mariadb-server
拷贝配置文件覆盖原配置文件
cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
8、安装PHP
yum install php php-mysql php-gd php-odbc php-pear php-mbstring php-mcrypt
9、下载PHPmyadmin
wget https://files.phpmyadmin.net/phpMyAdmin/4.0.0/phpMyAdmin-4.0.0-all-languages.zip
解压到/var/www/html/phpmyadmin

10、配置站点
vi /etc/httpd/conf/httpd.conf
文件最后加入

Include vhost/*.conf
mkdir /etc/httpd/vhost
touch test.conf

DocumentRoot /var/www/html/test
ServerName test

Options FollowSymLinks
AllowOverride All


touch phpmyadmin.conf

DocumentRoot /var/www/html/phpmyadmin
ServerName phpmyadmin

Options FollowSymLinks
AllowOverride All


重启apache和mariadb
11、安装epel源
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
如果版本不一样就去这里找http://dl.fedoraproject.org/pub/epel/
rpm -ivh rpm epel-release-7-8.noarch.rpm
yum clean all
yum update
以下步骤都是在安装了epel源下进行的
12、安装mcrypt扩展
yum install php-mcrypt
13、安装redis、memcache以及扩展
yum install redis
vi /etc/redis.conf
daemonize yes#守护进程运行
redis-server /etc/redis.conf
yum install php-redis
yum install memcached
yum install php-memcached

附录:
启动|停止|重启apache systemctl start|stop|restart httpd.service
开机启动apache systemctl enable httpd.service
启动|停止|重启mariadb systemctl start|stop|restart mariadb.service
开启启动mariadb systemctl enable mariadb.service

Nginx搭建负载均衡

Nginx负载均衡的分发方式有4种: 1.轮询,默认采取此方式,Nginx会按照请求时间的先后顺序进行轮询分发,若某台Web Server宕机,Nginx自动将其摘掉。 2.weight,权重,即轮询的几率,默认为1,值越大,被分发的可能性越大,用于后端服务器性能不均的情况。 3.ip_hash,每个请求按访问ip的hash结果分配(注意一定要Nginx当做前端而且后端IP固定,不然没法确保一个ip请求落到同样的web机器) PS:一般解决Session都是用的memcache共享 4.自定义规则
upstream test.phpfs.com {
	#ip_hash;
	server 10.200.11.213:8081 down;  
	server 10.200.11.213:8082 weight=5;  
	server 10.200.11.215:8082 weight=5;
	server 10.200.11.215:8081;	 
	server 10.200.11.215:80 backup;  
}
说明:test.phpfs.com只是为了起一个名字 down 表示当前的Web Server暂时不参与负载 weight 默认为1.weight越大,负载的权重就越大。 backup:其它所有的非backup Server down或者忙的时候,请求backup机器。所以这台机器压力会最轻。 场景 机器A:10.200.11.215 机器B:10.200.11.213 A开启80,8081,8082提供web服务,模拟三台Web服务器 B开启80作为分发机,8081,8082作为另外两台Web服务器 这样的相当于后端有5台机器提供web服务! A机器80站点根目录/home/80(备用机,暂时不提供服务) A机器8081站点根目录/home/8081(权重是1) A机器8082站点根目录/home/8082(权重是5) B机器8081站点根目录/home/8081(不提供服务) B机器8082站点根目录/home/8082(权重是5) PHP-FPM监听/var/run/php5-fpm.sock 配置10.200.11.213机器 /etc/nginx/conf.d/ 80.conf	存放存放负载配置 配置如下:
#upstream
upstream test {
	#ip_hash;
    	server 10.200.11.213:8081 down;
    	server 10.200.11.213:8082 weight=5;
    	server 10.200.11.215:8082 weight=5;
	server 10.200.11.215:8081;
    	server 10.200.11.215:80 backup;
}

server {
	listen 80;
	location / {
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_buffering off;#disabled cache
	proxy_pass http://test;
	}
}
8081.conf 存放8081端口网站
server {
	listen 8081;
	root /home/8081;
	index index.php index.html index.htm;
	server_name test.phpfs.com;
	location / {
		try_files $uri $uri/ =404;
	}
	location ~ \.php$ {
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_index index.php;
		include fastcgi_params;
	}

}
8082.conf 存放8082端口网站
server {
	listen 8082;
	root /home/8082;
	index index.php index.html index.htm;
	server_name test.phpfs.com;
	location / {
		try_files $uri $uri/ =404;
	}
	location ~ \.php$ {
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_index index.php;
		include fastcgi_params;
	}

}
配置10.200.11.215机器 /etc/nginx/conf.d/	80.conf	存放80端口网站
server {
	listen 80;
	root /home/80;
	index index.php index.html index.htm;
	server_name test.phpfs.com;
	location / {
		try_files $uri $uri/ =404;
	}
	location ~ \.php$ {
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_index index.php;
		include fastcgi_params;
	}

}
8081.conf 存放8081端口网站
server {
	listen 8081;
	root /home/8081;
	index index.php index.html index.htm;
	server_name test.phpfs.com;
	location / {
		try_files $uri $uri/ =404;
	}
	location ~ \.php$ {
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_index index.php;
		include fastcgi_params;
	}

}
8082.conf 存放8082端口网站
server {
	listen 8082;
	root /home/8082;
	index index.php index.html index.htm;
	server_name test.phpfs.com;
	location / {
		try_files $uri $uri/ =404;
	}
	location ~ \.php$ {
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_index index.php;
		include fastcgi_params;
	}

}
测试域名:test.phpfs.com 绑定host:10.200.11.213	test.phpfs.com
 
									
				

	

Nginx搭建Https服务器

mkdir -p /etc/nginx/ssl
生成私钥
openssl genrsa -des3 -out server.key 1024
提示输入密码和确认密码
生成证书
openssl req -new -key server.key -out server.csr
提示输入密码,国家,省份,城市,组织等信息
生成无密码私钥
openssl rsa -in server.key -out public.key
颁发证书
openssl x509 -req -days 365 -in server.csr -signkey public.key -out server.crt
配置nginx站点

server {
    listen 443;
    ssl on;
    ssl_certificate  /etc/nginx/ssl/server.crt;
    ssl_certificate_key  /etc/nginx/ssl/public.key;
    server_name test.phpfs.com;
    root /data/html/test.phpfs.com/;
    location / {
       autoindex on;
    }
}

配置apache站点
提示:Invalid command ‘SSLEngine’, perhaps misspelled or defined by a module not included in the server configuration
Action ‘configtest’ failed.
需要启用sudo a2enmod ssl


	ServerName test.phpfs.com
	DocumentRoot /var/www/html/test
	SSLEngine on
    SSLCertificateFile /etc/nginx/ssl/server.crt
    SSLCertificateKeyFile /etc/nginx/ssl/public.key



nginx-https-1