FreeBSD下NGINX 1.8+PHP5.6 +PERL 5.20 +Mysql 5.6+FTP 环境搭建与优化

FreeBSD下NGINX 1.8+PHP5.6 +PERL 5.20 +Mysql 5.6+FTP 环境搭建与优化

为什么选择FreeBSD做为os,这里不再讲,具体可以看这里《Free BSD,Linux之比较》

附件提供了已做了优化后的配置文件,下载直接可以使用。

#安装perl 支持
--------------------------------------
cd /usr/ports/lang/perl5.20 && make config

#安装完以后发现新版本的5.20的perl改变了目录,这里做个链接。
ln -s /usr/local/bin/perl /usr/bin/perl

#安装perl支持组件(perl on nginx)
cd /usr/ports/databases/rrdtool && make install clean
cd /usr/ports/databases/p5-DBD-mysql && make install clean
cd /usr/ports/devel/p5-File-Tail && make install clean
cd /usr/ports/devel/p5-Time-HiRes && make install clean
cd /usr/ports/graphics/p5-GD && make install clean
cd /usr/ports/sysutils/p5-Unix-Syslog && make install clean
cd /usr/ports/www/p5-LWP-UserAgent-WithCache && make install clean
cd /usr/ports/dns/p5-Net-DNS && make install clean
cd /usr/ports/security/p5-Digest-HMAC && make install clean
cd /usr/ports/security/p5-Digest-MD5 && make install clean
cd /usr/ports/security/p5-Digest-Perl-MD5 && make install clean
cd /usr/ports/security/p5-Digest-SHA1 && make install clean
cd /usr/ports/net-mgmt/p5-Net-IP && make install clean
cd /usr/ports/lang/p5-ExtUtils-F77 && make install clean
cd /usr/ports/www/p5-FCGI && make install clean
cd /usr/ports/www/p5-FCGI-ProcManager && make install clean
--------------------------------------

#安装nginx(组件根据自已需要勾选)
--------------------------------------
cd /usr/ports/www/nginx && make config

#安装php 5.6 on nginx(组件根据自已需要勾选)
cd /usr/ports/lang/php56 && make config

#安装php 5.6的扩展库(组件根据自已需要勾选)
cd /usr/ports/lang/php56-extensions && make config

#安装php常用的支持库
cd /usr/ports/databases/php5-redis && make install clean
cd /usr/ports/databases/pecl-memcache && make install clean
cd /usr/ports/graphics/ImageMagick && make install clean
cd /usr/ports/graphics/pecl-imagick && make install clean
cd /usr/ports/graphics/php-magickwand && make install clean

#安装常用的缓存及数据服务
cd /usr/ports/databases/redis && make install clean
cd /usr/ports/databases/memcached && make install clean
cd /usr/ports/www/xcache && make install clean
cd /usr/ports/databases/mysql56-client && make install clean
--------------------------------------

#将服务加入开机启动项
--------------------------------------
vi /etc/rc.conf

#############################
sendmail_enable=”NO”
sendmail_submit_enable=”NO”
sendmail_outbound_enable=”NO”
sendmail_msp_queue_enable=”NO”
############################
mysql_enable=”YES”
memcached_enable=”YES”
redis_enable=”YES”
############################
php_fpm_enable=”YES”
perl_fcgi_enable=”YES”
nginx_enable=”YES”
############################
pureftpd_enable=”YES”

#先启动redis和memcached服务,这两个无需配置,默认即可。
/usr/local/etc/rc.d/redis restart
/usr/local/etc/rc.d/memcached restart
--------------------------------------

#配置nginx
--------------------------------------
#下载配置脚本:附件 nginx-config.zip
#解压后获取文件(vhosts_params、nginx.conf、mime.types、fastcgi_params、domain.com)

目录结构

nginx /

|—— vhosts_params
|—— nginx.conf
|—— mime.types
|—— fastcgi_params
|——……..
|——vhosts
|——domain.com
|——……

#将 vhosts_params、nginx.conf、mime.types、fastcgi_params 文件移动到如下目录
mv vhosts_params /usr/local/etc/nginx/
mv fastcgi_params /usr/local/etc/nginx/
mv nginx.conf /usr/local/etc/nginx/
mv mime.types /usr/local/etc/nginx/

#然后进入nginx下建立 vhosts 目录
#vhosts目录以后放置 虚拟站点的配置文件
cd /usr/local/etc/nginx/
mkdir vhosts

#将 domain.com 移动到 /usr/local/etc/nginx/vhosts/ 目下
mv domain.com /usr/local/etc/nginx/vhosts/

#有关domain.com 的配置说明
server
{
listen 80;
#server_name _; #这个是所有域名均可访问
server_name abc.domain.com; #这个是指定域名访问

index index.html index.htm index.php index.cgi;
root /usr/local/www/abc.domain.com; #网站文件的目录位置

include vhosts_params;
}

#有关 vhosts_params文件的说明
#vhosts_params 文件是我建立的一个配置文件,主要方便后面做多个虚拟主机时可以快速的引用。

location ~* ^.+.gzjs$ { #支持对js、css等脚本的压缩
add_header Content-Encoding gzip;
gzip off;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { #将图片文件本地缓存30天
expires 30d;
}

location ~ .*\.(js|css)?$ { #将js css文件本地缓存30天
expires 1h;
}

location ~ \.php$ { #php-fcgi的配置,支持php文件
gzip off;
fastcgi_pass unix:/var/run/php-fcgi.sock;
fastcgi_index index.php;
include fastcgi_params;
# fastcgi_cache ngx_fcgi_cache;
# fastcgi_cache_key $scheme$request_method$host$request_uri;
}

location ~ .*\.(pl|cgi)?$ { #perl-fcgi的配置,支持cgi pl文件
gzip off;
fastcgi_pass unix:/var/tmp/perl-fcgi.sock;
fastcgi_index index.cgi;
include fastcgi_params;
# fastcgi_cache ngx_fcgi_cache;
# fastcgi_cache_key $scheme$request_method$host$request_uri;
}

location ~ ^/nginxstatus/ { #打开nginxstatus状态显示
stub_status on;
}

error_page 404 = /404/; #定义404错误的信息

--------------------------------------

#配置nginx支持 php
--------------------------------------
#下载配置脚本:附件 php-config.zip
#替换原有的配置文件
mv php-fpm.conf /usr/local/etc/
mv php.ini /usr/local/etc/

#启动nginx和php-fpm
/usr/local/etc/rc.d/php-fpm restart
/usr/local/etc/rc.d/nginx restart

vi /usr/local/www/domain.com/phptest.php

#访问查看php情况:http://domain.com/phptest.php

--------------------------------------

阅读更多

FreeBSD 平台 OpenVPN 的安装、配置客户端和服务端

OpenVPN 开源,好用,而且免费,感谢 OpenVPN 团队开发此产品。

简介

OpenVPN允许参与创建VPN的单点使用公开密钥、电子证书、或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。目前OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Windows 2000/XP/Vista/Windows 7以及Android上运行,并包含了许多安全性的功能。它并不是一个基于Web的VPN软件,也不与IPsec及其他VPN软件包兼容。

加密

OpenVPN使用OpenSSL库加密数据与控制信息:它使用了OpenSSL的加密以及验证功能,意味着,它能够使用任何OpenSSL支持的算法。它提供了可选的数据包HMAC功能以提高连接的安全性。此外,OpenSSL的硬件加速也能提高它的性能。

验证

OpenVPN提供了多种身份验证方式,用以确认参与连接双方的身份,包括:预享私钥,第三方证书以及用户名/密码组合。预享密钥最为简单,但同时它只能用于创建点对点的VPN;基于PKI的第三方证书提供了最完善的功能,但是需要额外的精力去维护一个PKI证书体系。OpenVPN2.0后引入了用户名/口令组合的身份验证方式,它可以省略客户端证书,但是仍有一份服务器证书需要被用作加密。

网络

OpenVPN所有的通信都基于一个单一的IP端口,默认且推荐使用UDP协议通讯,同时TCP也被支持。OpenVPN连接能通过大多数的代理服务器,并且能够在NAT的环境中很好地工作。服务端具有向客户端“推送”某些网络配置信息的功能,这些信息包括:IP地址、路由设置等。OpenVPN提供了两种虚拟网络接口:通用Tun/Tap驱动,通过它们,可以创建三层IP隧道,或者虚拟二层以太网,后者可以传送任何类型的二层以太网络数据。传送的数据可通过LZO算法压缩。IANA(Internet Assigned Numbers Authority)指定给OpenVPN的官方端口为1194。OpenVPN 2.0以后版本每个进程可以同时管理数个并发的隧道。

OpenVPN使用通用网络协议(TCP与UDP)的特点使它成为IPsec等协议的理想替代,尤其是在ISP(Internet service provider)过滤某些特定VPN协议的情况下。

安全

OpenVPN与生俱来便具备了许多安全特性:它在用户空间运行,无须对内核及网络协议栈作修改;初始完毕后以chroot方式运行,放弃root权限;使用mlockall以防止敏感数据交换到磁盘。

OpenVPN通过PKCS#11支持硬件加密标识,如智能卡。

FreeBSD平台版本选择10.0,安装过程掠过,我们从FreeBSD安装完毕开始。

有两种方法安装OpenVPN:pkg二进制安装和ports源代码安装。

pkg安装

使用pkg命令直接安装二进制版本,安装简单,也不用花太久时间(不会超过5分钟),但没有提供配置示范文档,需要完全自己编写,不过也可上官网查询

有一点要注意,如果源码(prots)安装不成功(通常是被GFW给墙),可以试试 pkg 安装,pkg 安装虽不一定是最新的,但起码可以成功安装。

确认网络正常后直接输入 pkg install openvpn即可开始安装,通常pkg会下载并安装当前最新的版本。 

ports安装

ports是源代码安装,需下载源代码和编译源代码,全脚本自动完成,但安装需要略花些时间(10~20分钟),但在执行ports安装前,最好先更新一下ports树,以便安装最新版本,在类UNIX社区,这是传统的安装形式之一。

1.下载最新的 ports包更新ports树,如果无需更新可从第3步开始。

#portsnap fetch

或者跳过第2步一次完成释放

#portsnap fetch extract

2.将下载好的 ports包释放到 /usr/ports。

#portsnap extract

3.如果ports已经是最新。

进入ports树中openvpn所在的目录

#cd /usr/ports/searchs/openvpn

4.开始安装,首先是自动下载相关文件并编译,最后自动完成安装。

#make install clean

发生错误的话,可以用 make config 重新配置再编译、或者 make deinstall 删除安装,如果文件无法下载可以手动下载需要的文件存于 /usr/ports/distfiles 目录再进行编译。

OpenVPN安装的组件,包括其他相关程序的组件,默认选择即可。

安装完毕,见下图: 

证书制作

安装完毕后,开始配置,主要是生成证书和配置的文件修改。

注:以下是一些相关的目录:

证书生成工具

/usr/local/share/easy-rsa

配置文件示范所在位置。

/usr/local/share/examples/openvpn

:: 进入证书生成目录

#cd /usr/local/share/easy-rsa

:: 设置证书制作环境(默认vars不正常,环境变量手动输入),Telnet终端的话,直接粘贴即可。

#setenv KEY_CONFIG   /usr/local/share/easy-rsa/openssl-1.0.0.cnf

#setenv KEY_DIR       /usr/local/share/easy-rsa/keys

#setenv KEY_SIZE      1024

#setenv KEY_COUNTRY  CN

#setenv KEY_PROVINCE  AA

#setenv KEY_CITY       BB

#setenv KEY_ORG       “COMPANY”

#setenv KEY_EMAIL     “user@host.domain”

#setenv OPENSSL       “openssl”

 

:: 初始化

#./clean-all

 

:: 生成证书

#./build-ca

:: 创建服务端证书

#./build-key-server server

:: 创建客户端证书

#./build-key client

:: 创建客户端证书,若有多个客户端需要分开证书的话则使用

#./build-key client1

:: 完成证书制作

#./build-dh

证书制作完毕,得到一些文件,但如果参数填写不恰当,可能生成一些0字节的crt文件,那么就得重新生成证书。生成结束后,可按照如下表格分别将文件拷贝到客户端和服务端的相应目录中(测试时全部放一起也没关系)。

下表列出各类文件部署的位置:

文件名 位置 目的 保密
ca.crt server + all clients Root CA certificate NO
ca.key key signing machine only Root CA key YES
dh{n}.pem server only Diffie Hellman parameters NO
server.crt server only Server Certificate NO
server.key server only Server Key YES
client1.crt client1 only Client1 Certificate NO
client1.key client1 only Client1 Key YES
client2.crt client2 only Client2 Certificate NO
client2.key client2 only Client2 Key YES
client3.crt client3 only Client3 Certificate NO
client3.key client3 only Client3 Key YES


BSD
客户端配置

阅读更多