Arul 发布的文章

Node.js 是用于开发服务器端应用程序的开源的运行时环境。Node.js 应用使用 JavaScript 编写,能在任何有 Node.js 运行时的服务器上运行。它跨平台支持 Linux、Windows、OSX、IBM AIX,也包括 FreeBSD。Node.js 是 Ryan Dahl 以及在 Joyent 工作的其他开发者于 2009 年创建的。它的设计目标就是构建可扩展的网络应用程序。

Ghost 是使用 Node.js 编写的博客平台。它不仅开源,而且有很漂亮的界面设计、对用户友好并且免费。它允许你快速地在网络上发布内容,或者创建你的混合网站。

在这篇指南中我们会在 FreeBSD 上安装使用 Nginx 作为 web 服务器的 Ghost。我们会在 FreeBSD 10.2 上安装 Node.js、Npm、nginx 和 sqlite3。

第一步 - 安装 Node.js npm 和 Sqlite3

如果你想在你的服务器上运行 ghost,你必须安装 node.js。在这一部分,我们会从 freebsd 移植软件库中安装 node.js,请进入库目录 "/usr/ports/www/node" 并通过运行命令 "make" 安装。

cd /usr/ports/www/node
make install clean

如果你已经安装了 node.js,那就进入到 npm 目录并安装它。npm 是用于安装、发布和管理 node 程序的软件包管理器。

cd /usr/ports/www/npm/
make install clean

下一步,安装 sqlite3。默认情况下 ghost 使用 sqlite3 作为数据库系统,但它也支持 mysql/mariadb 和 postgresql。我们会使用 sqlite3 作为默认数据库。

cd /usr/ports/databases/sqlite3/
make install clean

如果安装完了所有软件,还有检查 node.js 和 npm 的版本:

node --version
v0.12.6

npm --version
2.11.3

sqlite3 --version
3.8.10.2

node 和 npm 版本

第二步 - 添加 Ghost 用户

我们会以普通用户 "ghost" 身份安装和运行 ghost。用 "adduser" 命令添加新用户:

adduser ghost
FILL With Your INFO

添加用户 Ghost

第三步 - 安装 Ghost

我们会把 ghost 安装到 "/var/www/" 目录,首先新建目录然后进入到安装目录:

mkdir -p /var/www/
cd /var/www/

用 wget 命令下载最新版本的 ghost:

wget --no-check-certificate https://ghost.org/zip/ghost-latest.zip

把它解压到 "ghost" 目录:

unzip -d ghost ghost-latest.zip

下一步,更改属主为 "ghost",我们会以这个用户安装和运行它。

chown -R ghost:ghost ghost/

都做完了的话,通过输入以下命令切换到 "ghost" 用户:

su - ghost

然后进入到安装目录"/var/www/ghost/":

cd /var/www/ghost/

在安装 ghost 之前,我们需要为 node.js 安装 sqlite3 模块,用 npm 命令安装:

setenv CXX c++ ; npm install sqlite3 --sqlite=/usr/local

注意: 以 “ghost” 用户运行,而不是 root 用户。

现在,我们准备好安装 ghost 了,用 npm 命令安装:

npm install --production

下一步,复制配置文件 "config.example.js" 为 "config.js",用 nano 编辑器编辑:

cp config.example.js config.js
nano -c config.js

更改 server 模块的第 25 行:

host: '0.0.0.0',

保存并退出。

现在用下面的命令运行 ghost:

npm start --production

通过访问服务器 ip 和 2368 号端口验证一下。

Ghost 安装完成

以 “ghost” 用户在 "/var/www/ghost" 目录安装了 ghost。

第四步 - 作为 FreeBSD 服务运行 Ghost

要在 freebsd 上以服务形式运行应用,你需要在 rc.d 目录添加脚本。我们会在 "/usr/local/etc/rc.d/" 目录为 ghost 创建新的服务脚本。

在创建服务脚本之前,为了以服务形式运行 ghost,我们需要安装一个 node.js 模块,用 npm 命令以 sudo/root 权限安装 forever 模块:

npm install forever -g

现在进入到 rc.d 目录并创建名为 ghost 的新文件:

cd /usr/local/etc/rc.d/
nano -c ghost

粘贴下面的服务脚本:

#!/bin/sh

# PROVIDE: ghost
# KEYWORD: shutdown
PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"

. /etc/rc.subr

name="ghost"
rcvar="ghost_enable"
extra_commands="status"

load_rc_config ghost
: ${ghost_enable:="NO"}

status_cmd="ghost_status"
start_cmd="ghost_start"
stop_cmd="ghost_stop"
restart_cmd="ghost_restart"

ghost="/var/www/ghost"
log="/var/log/ghost/ghost.log"
ghost_start() {
sudo -u ghost sh -c "cd $ghost && NODE_ENV=production forever start -al $log index.js"
}

ghost_stop() {
sudo -u ghost sh -c "cd $ghost && NODE_ENV=production forever stop index.js"
}

ghost_status() {
sudo -u ghost sh -c "NODE_ENV=production forever list"
}

ghost_restart() {
ghost_stop;
ghost_start;
}

run_rc_command "$1"

保存并退出。

下一步,给 ghost 服务脚本添加可执行权限:

chmod +x ghost

为 ghost 日志创建新的目录和文件,并把属主修改为 ghost 用户:

mkdir -p /var/www/ghost/
touch /var/www/ghost/ghost.log
chown -R /var/www/ghost/

最后,如果你想运行 ghost 服务,你需要用 sysrc 命令添加 ghost 服务到开机启动应用程序:

sysrc ghost_enable=yes

用以下命令启动 ghost:

service ghost start

其它命令:

service ghost stop
service ghost status
service ghost restart

Ghost 服务命令

第五步 - 为 Ghost 安装和配置 Nginx

默认情况下,ghost 会以独立模式运行,你可以不用 Nginx、apache 或 IIS web 服务器直接运行它。但在这篇指南中我们会安装和配置 nginx 和 ghost 一起使用。

用 pkg 命令从 freebsd 库中安装 nginx:

pkg install nginx

下一步,进入 nginx 配置目录并为 virtualhost 配置创建新的目录。

cd /usr/local/etc/nginx/
mkdir virtualhost/

进入 virtualhost 目录,用 nano 编辑器创建名为 ghost.conf 的新文件:

cd virtualhost/
nano -c ghost.conf

粘贴下面的 virtualhost 配置:

server {
listen 80;

#Your Domain
server_name ghost.me;

location ~* \.(?:ico|css|js|gif|jpe?g|png|ttf|woff)$ {
access_log off;
expires 30d;
add_header Pragma public;
add_header Cache-Control "public, mustrevalidate, proxy-revalidate";
proxy_pass http://127.0.0.1:2368;
}

location / {
add_header X-XSS-Protection "1; mode=block";
add_header Cache-Control "public, max-age=0";
add_header Content-Security-Policy "script-src 'self' ; font-src 'self' ; connect-src 'self' ; block-all-mixed-content; reflected-xss block; referrer no-referrer";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options DENY;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:2368;
}

location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }

location ~ /\.ht {
deny all;
}

}

保存并退出。

要启用 virtualhost 配置,你需要把那个文件添加到 nginx.conf。进入 nginx 配置目录并编辑 nginx.conf 文件:

cd /usr/local/etc/nginx/
nano -c nginx.conf

在最后一行的前面,包含 virtualhost 配置目录:

[......]

include virtualhost/*.conf;

}

保存并退出。

用命令 "nginx -t" 测试 nginx 配置,如果没有错误,用 sysrc 添加 nginx 到开机启动:

sysrc nginx_enable=yes

并启动 nginx:

service nginx start

现在测试所有 nginx 和 virtualhost 配置。请打开你的浏览器并输入: ghost.me

ghost.me 成功运行

Ghost.me 正在成功运行。

如果你想要检查 nginx 服务器,可以使用 "curl" 命令。

测试 ghost 和 nginx

Ghost 正在 nginx 上运行。

总结

Node.js 是 Ryan Dahl 为创建和开发可扩展服务器端应用程序创建的运行时环境。Ghost 是使用 node.js 编写的开源博客平台,它有漂亮的外观设计并且易于使用。默认情况下,ghost 是可以单独运行的 web 应用程序,并不需要类似 apache、nginx 或 IIS 之类的 web 服务器,但我们也可以和 web 服务器集成(在这篇指南中使用 Nginx)。Sqlite 是 ghost 默认使用的数据库,它还支持 msql/mariadb 和 postgresql。Ghost 能快速部署并且易于使用和配置。


via: http://linoxide.com/linux-how-to/install-ghost-nginx-freebsd-10-2/

作者:Arul 译者:ictlyh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Bugzilla 是一款开源的 Web 应用,用于 bug 跟踪系统和测试工具,由 mozilla 开发,并采用 Mozilla 公共许可证授权(MPL)。它经常被一些高科技公司如 mozilla、红帽公司和 gnome 使用。Bugzilla 起初由 Terry Weissman开发于1998年,它用 perl 语言编写,用 MySQL 作为后端数据库。它是一款旨在帮助管理软件开发的服务器软件,它有丰富的功能、高度优化的数据库、卓越的安全性、高级的搜索工具、集成了邮件功能等等。

在本教程中,我们将安装 bugzilla 5.0 ,采用 apache 作为 Web 服务器,并为它启用 SSL,然后在 freebsd 10.2 上安装 mysql 5.1 来作为数据库系统。

准备

  • FreeBSD 10.2 - 64位
  • Root 权限

第一步 - 更新系统

用 ssh 登录 freebsd 服务器,并更新软件库:

sudo su
freebsd-update fetch
freebsd-update install

第二步 - 安装并配置 Apache

在这一步我们将使用 pkg 命令从 freebsd 软件库中安装 apache,然后在 apache24 目录下编辑 "httpd.conf" 文件,来配置 apache 以启用 SSL 和 CGI 支持。

用 pkg 命令安装 apache:

pkg install apache24

进入 apache 目录并用 nano 编辑器编辑"httpd.conf"文件:

cd /usr/local/etc/apache24
nano -c httpd.conf

取消下面列出行的注释:

#第70行
LoadModule authn_socache_module libexec/apache24/mod_authn_socache.so

#第89行
LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so

#第117行
LoadModule expires_module libexec/apache24/mod_expires.so

#第141行,启用SSL
LoadModule ssl_module libexec/apache24/mod_ssl.so

#第162行,支持cgi
LoadModule cgi_module libexec/apache24/mod_cgi.so

#第174行,启用mod_rewrite
LoadModule rewrite_module libexec/apache24/mod_rewrite.so

#第219行,服务器名配置
ServerName 127.0.0.1:80

保存并退出。

接着,我们需要从 freebsd 库中安装 mod perl,并启用它:

pkg install ap24-mod_perl2

启用 mod\_perl,编辑"httpd.conf"文件并添加"Loadmodule"行:

nano -c httpd.conf

添加该行:

#第175行
LoadModule perl_module libexec/apache24/mod_perl.so

保存并退出。

在启用 apache 之前,用 sysrc 命令添加以下行作为开机启动项:

sysrc apache24_enable=yes
service apache24 start

第三步 - 安装并配置 MySQL 数据库

我们要用 mysql 5.1 来作为后端数据库并且支持 perl 模块。用 pkg 命令安装 mysql 5.1:

pkg install p5-DBD-mysql51 mysql51-server mysql51-client

现在我们要将 mysql 服务设置为开机启动,然后为 mysql 配置 root 密码。

运行以下命令来完成上述所有操作:

sysrc mysql_enable=yes
service mysql-server start
mysqladmin -u root password aqwe123

注意:

这里 mysql 密码为:aqwe123

Configure MySQL Password

以上步骤都完成之后,我们用 root 登录 mysql shell,然后为 bugzilla 安装创建一个新的数据库和用户。

用以下命令登录 mysql shell:

mysql -u root -p
password: aqwe123

添加数据库:

create database bugzilladb;
create user bugzillauser@localhost identified by 'bugzillauser@';
grant all privileges on bugzilladb.* to bugzillauser@localhost identified by 'bugzillauser@';
flush privileges;
\q

Creating Database for Bugzilla

bugzilla 的数据库创建好了,名字为"bugzilladb",用户名和密码分别为"bugzillauser"和"bugzillauser@"。

第四步 - 生成新的 SSL 证书

在 bugzilla 站点的 "ssl" 目录里生成新的自签名 SSL 证书。

前往 apache24 目录并在此创建新目录 "ssl":

cd /usr/local/etc/apache24/
mkdir ssl; cd ssl

接着,用 openssl 命令生成证书文件,然后更改其权限:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /usr/local/etc/apache24/ssl/bugzilla.key -out /usr/local/etc/apache24/ssl/bugzilla.crt
chmod 600 *

第五步 - 配置虚拟主机

我们将在 "/usr/local/www/bugzilla" 目录里安装 bugzilla,所以我们必须为它创建新的虚拟主机配置。

前往 apache 目录并为虚拟主机文件创建名为 "vhost" 的新目录:

cd /usr/local/etc/apache24/
mkdir vhost; cd vhost

现在为虚拟主机文件创建新文件 "bugzilla.conf":

nano -c bugzilla.conf

将以下配置粘贴进去:

<VirtualHost *:80>
ServerName mybugzilla.me
ServerAlias www.mybuzilla.me
DocumentRoot /usr/local/www/bugzilla
Redirect permanent / https://mybugzilla.me/
</VirtualHost>

Listen 443
<VirtualHost _default_:443>
ServerName mybugzilla.me
DocumentRoot /usr/local/www/bugzilla

ErrorLog "/var/log/mybugzilla.me-error_log"
CustomLog "/var/log/mybugzilla.me-access_log" common

SSLEngine On
SSLCertificateFile /usr/local/etc/apache24/ssl/bugzilla.crt
SSLCertificateKeyFile /usr/local/etc/apache24/ssl/bugzilla.key

<Directory "/usr/local/www/bugzilla">
AddHandler cgi-script .cgi
Options +ExecCGI
DirectoryIndex index.cgi index.html
AllowOverride Limit FileInfo Indexes Options
Require all granted
</Directory>
</VirtualHost>

保存并退出。

上述都完成之后,为 bugzilla 安装创建新目录,并在 httpd.conf 文件添加虚拟主机配置来启用 bugzilla虚拟主机。

在 "apache24" 目录下运行以下命令:

mkdir -p /usr/local/www/bugzilla
cd /usr/local/etc/apache24/
nano -c httpd.conf

文末,添加以下配置:

Include etc/apache24/vhost/*.conf

保存并退出。

现在用 "apachectl" 命令测试一下 apache 的配置并重启它:

apachectl configtest
service apache24 restart

第六步 - 安装 Bugzilla

我们可以通过下载源来手动安装 bugzilla 了,或从 freebsd 库中安装也可以。在这一步中我们将用 pkg 命令从 freebsd 库中安装 bugzilla:

pkg install bugzilla50

以上步骤都完成之后,前往 bugzilla 安装目录并安装所有 bugzilla 需要的 perl 模块。

cd /usr/local/www/bugzilla
./install-module --all

要等到所有都完成,这需要点时间。

下一步,在 bugzilla 的安装目录中执行 "checksetup.pl" 文件来生成配置文件 "localconfig"。

./checksetup.pl

你会看到一条关于数据库配置错误的消息,你得用 nano 编辑器编辑一下 "localconfig" 文件:

nano -c localconfig

现在添加第三步创建的数据库。

#第57行
$db_name = 'bugzilladb';

#第60行
$db_user = 'bugzillauser';

#第67行
$db_pass = 'bugzillauser@';

保存并退出。

然后再次运行 "checksetup.pl":

./checksetup.pl

你会收到输入邮箱名和管理员账号的提示,你只要输入你的邮箱、用户名和密码就行了。

Admin Setup

最后,我们需要把安装目录的属主改成 "www",然后用服务命令重启 apache:

cd /usr/local/www/
chown -R www:www bugzilla
service apache24 restart

现在 Bugzilla 已经安装好了,你可以通过访问 mybugzilla.me 来查看,并且将会重定向到 https 连接。

Bugzilla 首页:

Bugzilla Home

Bugzilla admin 面板:

Bugzilla Admin Page

结论

Bugzilla 是一个基于 web 的应用,并能帮助你管理软件开发,它用 perl 开发并以 MySQL 作为数据库系统。Bugzilla 帮助 mozilla、redhat、gnome 等公司完成软件开发工作。Bugzilla 有很多功能并易于配置和安装。


via: http://linoxide.com/tools/install-bugzilla-apache-ssl-freebsd-10-2/

作者:Arul 译者:ZTinoZ 校对:Caroline

本文由 LCTT 原创编译,Linux中国 荣誉推出

Nginx 是一款自由开源的 HTTP 和反向代理服务器,也可以用作 POP3/IMAP 的邮件代理服务器。Nginx 是一款高性能的 web 服务器,其特点是功能丰富,结构简单以及内存占用低。 第一个版本由 Igor Sysoev 发布于2002年,到现在有很多大型科技公司在使用,包括 Netflix、 Github、 Cloudflare、 WordPress.com 等等。

在这篇教程里我们会“在 freebsd 10.2 系统上,安装和配置 Nginx 网络服务器作为 Apache 的反向代理”。 Apache 将在8080端口上运行 PHP ,而我们会配置 Nginx 运行在80端口以接收用户/访问者的请求。如果80端口接收到用户浏览器的网页请求,那么 Nginx 会将该请求传递给运行在8080端口上的 Apache 网络服务器和 PHP。

前提条件

  • FreeBSD 10.2
  • Root 权限

步骤 1 - 更新系统

使用 SSH 认证方式登录到你的 FreeBSD 服务器,使用下面命令来更新你的系统:

freebsd-update fetch
freebsd-update install

步骤 2 - 安装 Apache

Apache 是开源的、使用范围最广的 web 服务器。在 FreeBSD 里默认没有安装 Apache, 但是我们可以直接通过 /usr/ports/www/apache24 下的 ports 或软件包来安装,也可以直接使用 pkg 命令从 FreeBSD 软件库中安装。在本教程中,我们将使用 pkg 命令从 FreeBSD 软件库中安装:

pkg install apache24

步骤 3 - 安装 PHP

一旦成功安装 Apache,接着将会安装 PHP ,它来负责处理用户对 PHP 文件的请求。我们将会用到如下的 pkg 命令来安装 PHP:

pkg install php56 mod_php56 php56-mysql php56-mysqli

步骤 4 - 配置 Apache 和 PHP

一旦所有都安装好了,我们将会配置 Apache 运行在8080端口上, 并让 PHP 与 Apache 一同工作。 要想配置Apache,我们可以编辑“httpd.conf”这个配置文件, 对于 PHP 我们只需要复制 “/usr/local/etc/”目录下的 PHP 配置文件 php.ini。

进入到“/usr/local/etc/”目录,并且复制 php.ini-production 文件到 php.ini :

cd /usr/local/etc/
cp php.ini-production php.ini

下一步,在 Apache 目录下通过编辑“httpd.conf”文件来配置 Apache:

cd /usr/local/etc/apache24
nano -c httpd.conf

端口配置在第52行 :

Listen 8080

服务器名称配置在第219行:

ServerName 127.0.0.1:8080

在第277行,添加 DirectoryIndex 文件,Apache 将用它来服务对目录的请求:

DirectoryIndex index.php index.html

在第287行下,配置 Apache ,添加脚本支持:

<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>

保存并退出。

现在用 sysrc 命令,来添加 Apache 为开机启动项目:

sysrc apache24_enable=yes

然后用下面的命令测试 Apache 的配置:

apachectl configtest

如果到这里都没有问题的话,那么就启动 Apache 吧:

service apache24 start

如果全部完毕,在“/usr/local/www/apache24/data”目录下创建一个 phpinfo 文件来验证 PHP 在 Apache 下顺利运行:

cd /usr/local/www/apache24/data
echo "<?php phpinfo(); ?>" > info.php

现在就可以访问 freebsd 的服务器 IP : 192.168.1.123:8080/info.php 。

Apache and PHP on Port 8080

Apache 及 PHP 运行在 8080 端口。

步骤 5 - 安装 Nginx

Nginx 可以以较低内存占用提供高性能的 Web 服务器和反向代理服务器。在这个步骤里,我们将会使用 Nginx 作为Apache 的反向代理,因此让我们用 pkg 命令来安装它吧:

pkg install nginx

步骤 6 - 配置 Nginx

一旦 Nginx 安装完毕,在“nginx.conf”文件里,我们需要做一个新的配置文件来替换掉原来的 nginx 配置文件。切换到“/usr/local/etc/nginx/”目录下,并且备份默认 nginx.conf 文件:

cd /usr/local/etc/nginx/
mv nginx.conf nginx.conf.oroginal

现在就可以创建一个新的 nginx 配置文件了:

nano -c nginx.conf

然后粘贴下面的配置:

user  www;
worker_processes  1;
error_log  /var/log/nginx/error.log;

events {
worker_connections  1024;
}

http {
include       mime.types;
default_type  application/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log;

sendfile        on;
keepalive_timeout  65;

# Nginx cache configuration
proxy_cache_path    /var/nginx/cache levels=1:2 keys_zone=my-cache:8m max_size=1000m inactive=600m;
proxy_temp_path     /var/nginx/cache/tmp;
proxy_cache_key     "$scheme$host$request_uri";

gzip  on;

server {
#listen       80;
server_name  _;

location /nginx_status {

stub_status on;
access_log off;
}

# redirect server error pages to the static page /50x.html
#
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   /usr/local/www/nginx-dist;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:8080
#
location ~ \.php$ {
proxy_pass   http://127.0.0.1:8080;
include /usr/local/etc/nginx/proxy.conf;
}
}

include /usr/local/etc/nginx/vhost/*;

}

保存并退出。

下一步,在 nginx 目录下面,创建一个 proxy.conf 文件,使其作为反向代理 :

cd /usr/local/etc/nginx/
nano -c proxy.conf

粘贴如下配置:

proxy_buffering         on;
proxy_redirect          off;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffers           100 8k;
add_header              X-Cache $upstream_cache_status;

保存并退出。

最后一步,为 nginx 的高速缓存创建一个“/var/nginx/cache”的新目录:

mkdir -p /var/nginx/cache

步骤 7 - 配置 Nginx 的虚拟主机

在这个步骤里面,我们需要创建一个新的虚拟主机域“saitama.me”,其文档根目录为“/usr/local/www/saitama.me”,日志文件放在“/var/log/nginx”目录下。

我们必须做的第一件事情就是创建新的目录来存放虚拟主机配置文件,我们创建的新目录名为“vhost”。创建它:

cd /usr/local/etc/nginx/
mkdir vhost

创建好 vhost 目录,然后我们就进入这个目录并创建一个新的虚拟主机文件。这里我取名为“saitama.conf”:

cd vhost/
nano -c saitama.conf

粘贴如下虚拟主机的配置:

server {
# Replace with your freebsd IP
listen 192.168.1.123:80;

# Document Root
root /usr/local/www/saitama.me;
index index.php index.html index.htm;

# Domain
server_name www.saitama.me saitama.me;

# Error and Access log file
error_log  /var/log/nginx/saitama-error.log;
access_log /var/log/nginx/saitama-access.log main;

# Reverse Proxy Configuration
location ~ \.php$ {
proxy_pass http://127.0.0.1:8080;
include /usr/local/etc/nginx/proxy.conf;

# Cache configuration
proxy_cache my-cache;
proxy_cache_valid 10s;
proxy_no_cache $cookie_PHPSESSID;
proxy_cache_bypass $cookie_PHPSESSID;
proxy_cache_key "$scheme$host$request_uri";

}

# Disable Cache for the file type html, json
location ~* .(?:manifest|appcache|html?|xml|json)$ {
expires -1;
}

# Enable Cache the file 30 days
location ~* .(jpg|png|gif|jpeg|css|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ {
proxy_cache_valid 200 120m;
expires 30d;
proxy_cache my-cache;
access_log off;
}

}

保存并退出。

下一步,为 nginx 和虚拟主机创建一个新的日志目录“/var/log/”:

mkdir -p /var/log/nginx/

如果一切顺利,在文件的根目录下创建目录 saitama.me 用作文档根:

cd /usr/local/www/
mkdir saitama.me

步骤 8 - 测试

在这个步骤里面,我们只是测试我们的 nginx 和虚拟主机的配置。

用如下命令测试 nginx 的配置:

nginx -t

如果一切都没有问题,用 sysrc 命令添加 nginx 为开机启动项,并且启动 nginx 和重启 apache:

sysrc nginx_enable=yes
service nginx start
service apache24 restart

一切完毕后,在 saitama.me 目录下,添加一个新的 phpinfo 文件来验证 php 的正常运行:

cd /usr/local/www/saitama.me
echo "<?php phpinfo(); ?>" > info.php

然后访问这个域名: www.saitama.me/info.php

Virtualhost Configured saitamame

Nginx 作为 Apache 的反向代理运行了,PHP 也同样工作了。

这是另一个结果:

测试无缓存的 .html 文件。

curl -I www.saitama.me

html with no-cache

测试有三十天缓存的 .css 文件。

curl -I www.saitama.me/test.css

css file 30day cache

测试缓存的 .php 文件:

curl -I www.saitama.me/info.php

PHP file cached

全部搞定。

总结

Nginx 是最受欢迎的 HTTP 和反向代理服务器,拥有丰富的功能、高性能、低内存/RAM 占用。Nginx 也用于缓存, 我们可以在网络上缓存静态文件使得网页加速,并且缓存用户请求的 php 文件。 Nginx 容易配置和使用,可以将它用作 HTTP 服务器或者 apache 的反向代理。


via: http://linoxide.com/linux-how-to/install-nginx-reverse-proxy-apache-freebsd-10-2/

作者:Arul 译者:KnightJoker 校对:Carolinewxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

DNSCrypt 是一个用于对 DNS 客户端和 DNS 解析器之间通信进行加密和验证的协议。它可以阻止 DNS 欺骗或中间人攻击。 DNSCrypt 可用于大多数的操作系统,包括 Linux,Windows,MacOSX ,Android 和 iOS。而在本教程中我使用的是内核为4.1的 archlinux。

Unbound 是用来解析收到的任意 DNS 查询的 DNS 缓存服务器。如果用户请求一个新的查询,unbound 会将其存储到缓存中,并且当用户再次请求相同的请求时,unbound 将采用已经保存的缓存。这将比第一次请求查询更快。

现在我将尝试安装“DNSCrypt”,以确保 DNS 的通信的安全,并用“Unbound”加速。

第一步 - 安装 yaourt

Yaourt 是AUR(ARCH 用户仓库)的辅助工具之一,它可以使用户能够很容易地从 AUR 安装程序。 Yaourt 和 pacman 使用相同的语法,你可以使用 yaourt 安装该程序。下面是安装 yaourt 的简单方法:

1、 用 nano 或者 vi 编辑 arch 仓库配置文件,存放在“/etc/pacman.conf”中。

$ nano /etc/pacman.conf

2、 在 yaourt 仓库底部添加,粘贴下面的脚本:

[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch

3、 用“Ctrl + x”,接着用“Y”保存。

4、 接着升级仓库数据库并用pacman安装yaourt:

$ sudo pacman -Sy yaourt

第二步 - 安装 DNSCrypt 和 Unbound

DNSCrypt 和 unbound 就在 archlinux 仓库中,你可以用下面的 pacman 命令安装:

$ sudo pacman -S dnscrypt-proxy unbound

接着在安装的过程中按下“Y”。

第三步 - 安装 dnscrypt-autoinstall

Dnscrypt-autoinstall 是一个在基于 Linux 的系统上自动安装和配置 DNSCrypt 的脚本。DNSCrypt 在 AUR 中,因此你必须使用“yaourt”命令来安装它。

$ yaourt -S dnscrypt-autoinstall

注意 :

-S = 这和 pacman -S 安装程序一样。

第四步 - 运行 dnscrypt-autoinstall

用 root 权限运行“dnscrypt-autoinstall”来自动配置 DNSCrypt。

$ sudo dnscrypt-autoinstall

下一步中按下“回车”,接着输入"Y"来选择你想使用的 DNS 提供者,我这里使用不带日志和 DNSSEC 的 DNSCrypt.eu。

DNSCrypt autoinstall

第五步 - 配置 DNSCrypt 和 Unbound

1、 打开 dnscrypt 的“/etc/conf.d/dnscrypt-config” ,确认配置文件中“DNSCRYPTLOCALIP”指向本地ip,“DNSCRYPTLOCALPORT”根据你本人的意愿配置,我是用的是40端口。

$ nano /etc/conf.d/dnscrypt-config

DNSCRYPT_LOCALIP=127.0.0.1
DNSCRYPT_LOCALIP2=127.0.0.2
DNSCRYPT_LOCALPORT=40

DNSCrypt Configuration

保存并退出。

2、 现在你用 nano 编辑器编辑“/etc/unbound/”下 unbound 的配置文件:

$ nano /etc/unbound/unbound.conf

3、 在脚本最后添加下面的行:

do-not-query-localhost: no
forward-zone:
name: "."
forward-addr: 127.0.0.1@40

确保forward-addr和DNSCrypt中的“DNSCRYPT\_LOCALPORT”一致。如你所见,用的是40端口。

Unbound Configuration

接着保存并退出。

第六步 - 运行 DNSCrypt 和 Unbound,接着添加到开机启动中

请用 root 权限运行 DNSCrypt 和 unbound,你可以用 systemctl 命令来运行:

$ sudo systemctl start dnscrypt-proxy unbound

将服务添加到启动中。你可以运行“systemctl enable”:

$ sudo systemctl enable dnscrypt-proxy unbound

命令将会创建软链接到“/usr/lib/systemd/system/”目录的服务。

第七步 - 配置 resolv.conf 并重启所有服务

resolv.conf 是一个在 linux 中用于配置 DNS 解析器的文件。它是一个由管理员创建的纯文本,因此你必须用 root 权限编辑并让它不能被其他人修改。

用 nano 编辑器编辑:

$ nano /etc/resolv.conf

并添加本地IP “127.0.0.1”。现在用“chattr”命令使他只读:

$ chattr +i /etc/resolv.conf

注意:

如果你想要重新编辑,用“chattr -i /etc/resolv.conf”加入写权限。

现在你需要重启 DNSCrypt 和 unbound 和网络;

$ sudo systemctl restart dnscrypt-proxy unbound netctl

如果你看到错误,检查配置文件。

测试

1、 测试 DNSCrypt

你可以通过 https://dnsleaktest.com/ 来确认 DNSCrypt,点击“标准测试”或者“扩展测试”,然后等待程序运行结束。

现在你可以看到 DNSCrypt.eu 就已经与作为 DNS 提供商的 DNSCrypt 协同工作了。

Testing DNSCrypt

2、 测试 Unbound

现在你应该确保 unbound 可以正确地与“dig”和“drill”命令一起工作。

这是 dig 命令的结果:

$ dig linoxide.com

我们现在看下结果,“Query time”是“533 msec”:

;; Query time: 533 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Aug 30 14:48:19 WIB 2015
;; MSG SIZE rcvd: 188

再次输入命令,我们看到“Query time”是“0 msec”。

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Aug 30 14:51:05 WIB 2015
;; MSG SIZE rcvd: 188

Unbound Test

DNSCrypt 对 DNS 客户端和解析端之间的通讯加密做的很好,并且 Unbound 通过缓存让相同的请求在另一次请求同速度更快。

总结

DNSCrypt 是一个可以加密 DNS 客户端和 DNS 解析器之间的数据流的协议。 DNSCrypt 可以在不同的操作系统上运行,无论是移动端或桌面端。选择 DNS 提供商还包括一些重要的事情,应选择那些提供 DNSSEC 同时没有日志的。Unbound 可被用作 DNS 缓存,从而加快解析过程,因为 Unbound 将请求缓存,那么接下来客户端请求相同的查询时,unbound 将从缓存中取出保存的值。 DNSCrypt 和 Unbound 是针对安全性和速度的一个强大的组合。


via: http://linoxide.com/tools/install-dnscrypt-unbound-archlinux/

作者:Arul 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出