标签 FREEBSD 下的文章

golang hugo markdown caddy nginx freebsd

https://golang.org/doc/install 

http://gohugo.io/overview/installing/

go build -o hugo main.go

export GOROOT=$HOME/go

export PATH=$PATH:$GOROOT/bin
hugo version
hugo new site u.zhaoweifeng.cn
mkdir themes
cd themes
git clone https://github.com/spf13/hyde.git
cd ..

vi config.toml

 以下是portsnap的几种简单用法:

 
    * 第一次使用可以:portsnap fetch extract
    * 以后使用只要:portsnap fetch update 
    * 放在cron里运行:portsnap cron
另外:
更新ports后,如果运行make search name=xxx不成功,请在/usr/ports下运行make fetchindex。
 
 
 
'
 
 

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" 安装。

  1. cd/usr/ports/www/node
  2. makeinstall clean

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

  1. cd/usr/ports/www/npm/
  2. makeinstall clean

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

  1. cd/usr/ports/databases/sqlite3/
  2. makeinstall clean

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

  1. node--version
  2. v0.12.6
  3.  
  4. npm--version
  5. 2.11.3
  6.  
  7. sqlite3--version
  8. 3.8.10.2

node 和 npm 版本

node 和 npm 版本

第二步 - 添加 Ghost 用户

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

  1. adduser ghost
  2. FILLWithYourINFO

添加用户 Ghost

添加用户 Ghost

第三步 - 安装 Ghost

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

  1. mkdir-p/var/www/
  2. cd/var/www/

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

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

把它解压到 "ghost" 目录:

  1. unzip-d ghost ghost-latest.zip

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

  1. chown-R ghost:ghost ghost/

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

  1. su-ghost

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

  1. cd/var/www/ghost/

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

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

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

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

  1. npm install--production

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

  1. cpconfig.example.js config.js
  2. nano-c config.js

更改 server 模块的第 25 行:

  1. host:'0.0.0.0',

保存并退出。

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

  1. npm start--production

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

Ghost 安装完成

Ghost 安装完成

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

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

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

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

  1. npm install forever-g

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

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

粘贴下面的服务脚本:

  1. #!/bin/sh
  2.  
  3. #PROVIDE:ghost
  4. #KEYWORD:shutdown
  5. PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
  6.  
  7. ./etc/rc.subr
  8.  
  9. name="ghost"
  10. rcvar="ghost_enable"
  11. extra_commands="status"
  12.  
  13. load_rc_config ghost
  14. :${ghost_enable:="NO"}
  15.  
  16. status_cmd="ghost_status"
  17. start_cmd="ghost_start"
  18. stop_cmd="ghost_stop"
  19. restart_cmd="ghost_restart"
  20.  
  21. ghost="/var/www/ghost"
  22. log="/var/log/ghost/ghost.log"
  23. ghost_start(){
  24. sudo-u ghost sh-c"cd $ghost && NODE_ENV=production forever start -al $log index.js"
  25. }
  26.  
  27. ghost_stop(){
  28. sudo-u ghost sh-c"cd $ghost && NODE_ENV=production forever stop index.js"
  29. }
  30.  
  31. ghost_status(){
  32. sudo-u ghost sh-c"NODE_ENV=production forever list"
  33. }
  34.  
  35. ghost_restart(){
  36. ghost_stop;
  37. ghost_start;
  38. }
  39.  
  40. run_rc_command"$1"

保存并退出。

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

  1. chmod+x ghost

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

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

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

  1. sysrc ghost_enable=yes

用以下命令启动 ghost:

  1. service ghost start

其它命令:

  1. service ghost stop
  2. service ghost status
  3. service ghost restart

Ghost 服务命令

Ghost 服务命令

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

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

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

  1. pkg install nginx

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

  1. cd/usr/local/etc/nginx/
  2. mkdirvirtualhost/

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

  1. cdvirtualhost/
  2. nano-c ghost.conf

粘贴下面的 virtualhost 配置:

  1. server{
  2. listen80;
  3.  
  4. #YourDomain
  5. server_name ghost.me;
  6.  
  7. location~*\.(?:ico|css|js|gif|jpe?g|png|ttf|woff)${
  8. access_log off;
  9. expires30d;
  10. add_headerPragmapublic;
  11. add_headerCache-Control"public, mustrevalidate, proxy-revalidate";
  12. proxy_pass http://127.0.0.1:2368;
  13. }
  14.  
  15. location/{
  16. add_header X-XSS-Protection"1; mode=block";
  17. add_headerCache-Control"public, max-age=0";
  18. add_headerContent-Security-Policy"script-src 'self' ; font-src 'self' ; connect-src 'self' ; block-all-mixed-content; reflected-xss block; referrer no-referrer";
  19. add_header X-Content-Type-Optionsnosniff;
  20. add_header X-Frame-OptionsDENY;
  21. proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
  22. proxy_set_headerHost$http_host;
  23. proxy_set_header X-Forwarded-Proto$scheme;
  24. proxy_pass http://127.0.0.1:2368;
  25. }
  26.  
  27. location=/robots.txt{access_log off;log_not_found off;}
  28. location=/favicon.ico{access_log off;log_not_found off;}
  29.  
  30. location~/\.ht{
  31. deny all;
  32. }
  33.  
  34. }

保存并退出。

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

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

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

  1. [......]
  2.  
  3. includevirtualhost/*.conf;
  4.  
  5. }

保存并退出。

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

  1. sysrc nginx_enable=yes

并启动 nginx:

  1. service nginx start

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

ghost.me 成功运行

ghost.me 成功运行

Ghost.me 正在成功运行。

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

测试 ghost 和 nginx

测试 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 能快速部署并且易于使用和配置。

 FreeBsd 更新ports 的简单方法

 
以下就是portsnap的几种简单用法:
 
    * 第一次使用可以:portsnap fetch extract
    * 以后使用只要:portsnap fetch update 
    * 放在cron里运行:portsnap cron
另外:
更新ports后,如果运行make search name=xxx不成功,请在/usr/ports下运行make fetchindex。
 
 
感觉FreeBSD 6.0最方便的改进就是增加了portsnap这个很方便的升级port tree软件,
以前用恼人的portupgrade做port tree升级的时候总是感觉有点缺陷,方便性不够,
而且做成crontab总是担心。
现在FreeBSD 6.0下有了portsnap这个方便的工具,升级port tree就十分方便。
 
以下就是portsnap的几种简单用法:
第一次使用可以:portsnap fetch extract
以后使用只要:portsnap fetch update 
放在cron里运行:portsnap cron
 
以下对比是portgrade的麻烦几步:
/usr/ports/sysutils/portgrade/make install clean
/usr/ports/net/cvsup/cvsup-without-gui/make install clean
vi ports-supfile
cvsup -g -L 2 ports-supfile
portsdb -Uu
pkgdb -F
portupgrade -acCv
  portsnap的服务器列表配置文件在/etc/portsnap.conf只要修改SERVERNAME=这个选项可以用离你最近的portsnap服务器。
  portsnap真的十分方便,用FreeBSD 6.0的朋友们都用portsnap来升级port tree吧,一起丢弃麻烦的portupgrade。
 
 
地址: portsnap.hshh.org
使用方法: 
/etc/portsnap.conf 里面更改
SERVERNAME=portsnap.hshh.org
portsnap简介: 
portsnap从6.0开始引进系统,给与用户方便的更新系统ports 
portsnap的命令比较少 
fetch 获取数据 
extract 释放全部ports 
update 更新ports 
第一次使用可以 portsnap fetch extract 
以后使用可以 portsnap fetch update 
如果写在cron可以用 portsnap cron update
 
 
 
 
Freebsd 下如何最有效率的安装软件
FreeBSD的默认下载工具是fetch,既慢又不好用。在FreeBSD下安装软件有一些很有效率的方式,下面就给大家介绍一下。
 
Ports机制
 
首先,FreeBSD下最有特色的软件安装和升级机制就是ports,既方便又高效。下面我们从ports套件的安装开始讲起,让你细致的了解有关ports的每一个细节
 
一、ports套件的安装
 
①我的FreeBSD 8.0-release是最小化安装,所以既没有ports,也没有/usr/ports目录。选择启用ports的话,需要在root下输入"sysinstall"来安装它:
 
输入sysinstall --> 选择Configure --> Distributions --> ports,然后安装即可。
 
②ports的默认路径是/usr/ports。这个ports的根目录下面有很多的文件夹及子文件夹,组成一个树状目录,包含大量ports下的软件。比如mail是邮件服务软件,games是游戏,www代表web服务软件,databases则是数据库软件。
 
[root@bsd01 /usr/ports]# cd www
[root@bsd01 /usr/ports/www]# ls -d apache*
apache-contrib apache13 apache13-modssl+ipv6
apache-forrest apache13+ipv6 apache13-ssl
apache-jserv apache13-modperl apache20
apache-mode.el apache13-modssl apache22
如果你需要安装什么软件,只要进入当前目录,然后“make install clean”即可。
 
[root@bsd01 ~]# cd /usr/ports/www/apache22
[root@bsd01 /usr/ports/www/apache22] make install clean
/usr/ports/distfiles是存放软件包的文件夹。ports会先检查/usr/ports/distfiles目录内有没有这个软件包,如果没有它就会自动从网上下载安装。
 
二、加速ports的升级速度
 
ports从网上下载软件包自动安装,那么从那里下载呢?首先,我们需要安装axel来取代默认的下载工具fetch,这样可以提高ports的安装速度:
 
cd /usr/ports/ftp/axel
make install
然后,我们需要一个源地址管理。跟ubuntu上的/etc/source.list文件一样,freebsd用的文件是/etc/make.conf,我们可以修改其文件,达到加速下载的目的。
 
#修改 /et/make.conf
vi /etc/make.conf
#加入以下内容
FETCH_CMD=axel
FETCH_BEFORE_ARGS= -n 10 -a
FETCH_AFTER_ARGS=
DISABLE_SIZE=yes
MASTER_SITE_OVERRIDE?=\
http://ports.hshh.org/${DIST_SUBDIR}/\
http://ports.cn.freebsd.org/${DIST_SUBDIR}/\
ftp://ftp.freeBSDchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=${MASTER_SITE_BACKUP}       
这样处理后,在公司的网络环境下,FreeBSD的下载速度明显提高了,有时居然能达到1M/s,这样升级及安装软件方便极了;呵呵,终于可以摆脱fetch的龟速了。
 
三、更新ports目录树
 
既然ports的树目录全部下载到本地,那么即使FreeBSD有新的软件包或者添置了新的软件,本地目录树也不会更新。所以,我们每隔一段时间需要更新本地目录树。我来介绍一种在FreeBSD中方便、快捷的更新ports的方法:使用portsnap来更新ports目录树。
 
①配置portsnap:
 
我们使用portsnap,首先要设置一下它的配置文件,位于/etc/portsnap.conf:
 
[root@bsd01 /usr/ports]# vi /etc/portsnap.conf
 
SERVERNAME=portsnap.freebsd.org
 
修改成:
 
SERVERNAME=portsnap.hshh.org
 
这个是他的更新服务器。另外还有几个国内比较快的portsnap服务器:
 
portsnap.hshh.org
 
portsnap2.hshh.org
 
portsnap3.hshh.org (网通)
 
portsnap4.hshh.org
 
②首次使用portsnap:
 
在你的FreeBSD首次使用portsnap必须执行下面2步:
 
[root@bsd01 ~]# portsnap fetch
[root@bsd01 ~]# portsnap extract
portsnap fecth是从网上获取portsnap快照的最新压缩包,听闻这个压缩包官方没小时更新一次。
 
portsnap extract 则是把这个压缩包创立到/usr/ports。哪怕你以前已经手工安装了ports,他也会重新创立一次。
 
(注:这2步可以合成使用,指令为 [root@bsd01 ~]# portsnap fetch extract)
 
③以后使用portsnap更新,只需要执行下面2步:
 
[root@bsd01 ~]# portsnap fetch
[root@bsd01 ~]# portsnap update
同样,这2步可以合成使用:[root@bsd01 ~]# portsnap fetch update
 
portsnap第一次运行extract命令时,可能需要一段时间,以后更新使用update的时候,速度就快很多了。

 1、查看 CPU:

sysctlhw.modelhw.ncpu
dmesg|grep"CPU:"

2、查看内存:
dmesg|grep "real memory"|awk -F '[()]' '{print$2,$4,$7,$8}'
查看 swap:
top|grep"Swap:"|awk'{print$1,$2}'

3、查看硬盘:

diskinfo‐vt/dev/ad0
disklable/dev/ad0s2#查看分区信息
看硬盘大小:
dmesg|grep"sector"|awk'{print$1,$2}'
diskinfo‐v/dev/da0|grep"inbytes"|awk‐F'[()]''{print$2}'

4、查看服务器品牌:

dmesg|grep"ACPIAPIC"

5、挂载文件系统:

fat32:mount_msdosfs‐Lzh_CN.eucCN/dev/ad0s1/mnt
ntfs:mount_ntfs‐CeucCn/dev/ad0s1/mnt
cdrom:mount_cd9660/dev/acd0/mnt
注:ntfs 在 FreeBSD 中只能读无法写入

6、给文件添加或禁用系统禁删标志(目录不适用):

chflagssunlinkfile1
chflagsnosunlinkfile1

7、初始化磁盘:

fdisk‐BIad1

8、建立 FreeBSD 分区:

disklabel‐B‐w‐rad1s1auto
9、建立逻辑分区:
disklabel‐ead1s1
10、格式化分区,创建文件系统:
newfs/dev/ad1s1e
11、显示 PCI 硬件信息:
pciconf‐lv
12、开启 Linux二进制兼容支持(启用这一功能最简单的方法是载入linuxKLD模块):
kldloadlinux
让 Linux 兼容在系统初始化时自动启用,在/etc/rc.conf 中中入:
linux_enable="YES"
13、检查 KLD 模块是否加载:
kldstat
14、在内核中静态链接进 Linux 二进制兼容模式,在内核配置文件里面加入:
optionsCOMPAT_LINUX
15、设置网卡 em0 的 IP 地址:
ifconfigem0inet192.0.2.10netmask255.255.255.0
16、给网卡 em0 设置添加一个别名 IP 地址:
ifconfigem0inet192.168.51.45/24add
17、删除网卡的别名 IP 地址:
ifconfigem0inet192.168.51.45‐alias
18、设置网卡 em0 的工作模式为 100baseTX 全双式:
ifconfigem0media100baseTXmediaoptfull‐duplex 19、当/usr/local/etc/rc.d 下的脚本无法自动启动时,可尝试在/etc/rc.conf 中加入一行:
local_startup="/usr/local/etc/rc.d"

20、在 ports 中寻找需要的软件,进入/usr/ports 目录执行:
makesearchname=lsof或echo/usr/ports/*/*lsof*或whereislsof
makesearchkey=关键字#在名字、注释、描述中搜索关键字

21、使用 package 方式安装管理软件,使用以下命令:

pkg_addlsof‐4.56.4.tgz#安装软件包
pkg_info#列出已安装所有软件包
pkg_version#统计所有安装的软件版本,比较本地 package 的版本与 ports 目录中的当前 版本是否一致
pkg_deletelsof‐4.56.4#删除软件包,需提供完整包名

22、使用 CVSup 协议更新本地 ports:(将 cvsup.FreeBSD.org 改为离得较近的 CVSup 服务 器)
csup‐L2‐hcvsup.FreeBSD.org/usr/share/examples/cvsup/ports‐supfile

23、一些 shell 会缓存环境变量 PATH 中指定的目录里的可执行文件,以加快查找速度,这 会造成一些新安装的命令无法运行,执行以下命令,然后才能运行新安装的那些命令:
rehash或hash‐r

24、当不是所有时间都能上网时,可在/usr/ports 下执行以下命令,所有需要的文件都将 被下载:(此命令可以在下级目录中执行,如/usr/ports/comms/nmp)
makefetch#只下载所需要文件,不下载依赖包
makefetch‐recursive#连同依赖包一起下载

25、改变默认的 Ports 目录:
makeWRKDIRPREFIX=/usr/home/example/portsinstall#在/usr/home/example/ports 中编译 port,安装到/usr/local
makePREFIX=/usr/home/example/localinstall#在/usr/ports 中编译 port,安装到 /usr/home/example/local
makeWRKDIRPREFIX=../portsPREFIX=../localinstall#在../ports 中编译 port,安装到../local

26、使用 portsclean 工具清除临时目录和 distfiles 目录:
portsclean‐C#清除安装时的临时目录
portsclean‐D#清除 distfiles 目录下所有 port 都不引用的文件
portsclean‐DD#删除目前安装的 port 没有使用的源码包文件

27、强制手动检测 SCSI 设备,SCSI 总线扫描:
camcontrolrescanall
28、显示 SCSI 设备列表:
camcontroldevlist
29、利用管道修改用户密码:
echo"password"|pwusermodroot‐h0
30、sed 插入行:
sed‐i‐E'/serviceport/a\\
apexport:18306\\
'/home/xiyou/config
31、用 freebsd 的 MBR 覆盖现有的 MBR:
fdisk‐B‐b/boot/boot0device
32、根据一个新的文件重新构建用户列表:
pwd_mkdb‐p/etc/master.passwd.new#‐p 即为生成新的/etc/passwd
33、取时间:
date‐v‐1d+%Y%m%d#Freebsd 取昨天日期方法
date‐v‐1w+%Y%m%d#Freebsd 取上周今日方法
date‐v‐1m+%Y%m%d#Freebsd 取上个月今日方法
date‐v‐1y+%Y%m%d#Freebsd 取去年今日的方法
34、以 xiyou 用户身份执行命令或脚本:
su‐xiyou‐c"cd/home/xiyou/script;./start_apex.sh&" 35、tar 打包时排除某个子目录:
tarzcvfApex09010702.tgz‐‐exclude=ApexItemServer/hook_logApexItemServer
注:上例是使用 GUN 版本的 tar 程序格式,否则‐‐exclude 参数应放在最后

36、锁住终端:
lock‐np#‐n永不超时,‐p使用系统密码作为开启终端的密匙
37、显示 ATA 设备列表:
atacontrollist
38、查看网络流量:
systat‐if1#1 表示 1 秒刷新屏幕一次,Traffic流量peak峰值average平均值
netstat1
39、查看硬盘详细分区实时读写状况:
gstat
40、进单用户模式也需要密码:
a
.vi/etc/ttys找到 whengoingtosingle‐use
rmode
b.修改 consolenoneunknownoff 后面的 secure,改为 insecure
c.存盘退出
41、在 FreeBSD5.X 以上加载,卸载 ISO 文件:
mount:
mdconfig‐a‐tvnode‐fmyisofile.iso#屏幕输出 md0 或者类似的设备名
mount‐tcd9660/dev/md0/mnt
umount:
umount/mnt
mdconfig‐d‐u0#‐u 后面的数字和前面的 md?中的数字一致
mdconfig‐l#可以列出关于配置 md?设备的信息 42、更新配置文件,比如编辑了.cshrc 等文件,就需要用 source 命令:
source.cshrc
43、修复 UFS 文件系统分区:
fsck_ufs/dev/ad1
44、pf 防火墙
pfctl‐e#启动 pf 防火墙
pfctl‐d#停止 pf 防火墙
pfctl‐sa|grepStatus#查看状态
pfctl‐f/etc/pf.conf#载入pf.conf文件
pfctl‐nf/etc/pf.conf#检查配置文件错误,但不载入
pfctl‐Nf/etc/pf.conf#只载入文件中的 NAT 规则
pfctl‐Rf/etc/pf.conf#只载入文件中的过滤规则
pfctl‐sn#显示当前的 NAT 规则
pfctl‐sr#显示当前的过滤规则
pfctl‐ss#显示当前的状态表
pfctl‐si#显示过滤状态和计数
pfctl‐sa#显示任何可显示的
pfctl‐thttp_table‐Tshow#查看动态表
pfctl‐thttp_table‐Tadd192.168.1.X#添加一个 IP 到表
pfctl‐thttp_table‐Tdel192.168.1.X#从表中删除 IP
45、系统优化+防止 ddos
加载文件修改
#vi/boot/loader.conf#加入如下文本
kern.dfldsiz="2147483648"#Settheinitialdatasizelimit
kern.maxdsiz="2147483648"#Setthemaxdatasize kern.ipc.nmbclusters="0"#Setthenumberofmbufclusters
kern.ipc.nsfbufs="66560"#Setthenumberofsendfile(2)bufs
##解释:
a.第一,第二行主要是为了突破 1G 内存设置的
b.第三行其实是 bsd 的一个 bug,当系统并发达到一个数量级的时候,系统会 crash, 这个是非常糟糕的事情,所幸更改了这个参数后,在高并发的时候,基本可以没有类似情 况,当然非常 bt 的情况,还得进一步想办法
c.第四行是读取的文件数,如果你下载的文件比较大,且比较多,加大这个参数,是非 常爽的
Sysctl 修改

#vi/etc/rc.local
sysctlkern.ipc.maxsockets=100000##增加并发的 socket,对于 ddos 很有用
sysctlkern.ipc.somaxconn=65535##打开文件数
sysctlnet.inet.tcp.msl=2500##timeout 时间

加速 ports 安装

#vi /etc/make.conf##加入如下
MASTER_SITE_OVERRIDE?=http://ports.hshh.org/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=http://ports.cn.freebsd.org/${DIST_SUBDIR}/

Freebsd 颜色显示
secureCRT 设置:仿真:终端‐>linux>勾选 ANSI 颜色‐‐>确定

#vi/etc/csh.cshrc##加入如下
setenvLSCOLORSExGxFxdxCxegedabagExEx
setenvCLICOLORyes
#cd/usr/ports/edit/vim;makeinstall
#echo"syntaxon">/root/.vimrc
#echo"aliasvivim">>/root/.cshrc ##颜色主要是靠 vim 来显示的,因此需要安装 vim,然后把 vialias 成 vim 就可以了

46、查看系统状态
fstat#报告系统中打开文件的信息
pstat‐T#显示这几个系统表的状态,包括当前使用的和可以利用的系统表空间,因此可以 用来检查系统在当前负载下是使用多大的系统表,帮助进行优化系统性能
systat#缺省情况下 systat 是报告处理器的使用率,包括总利用状态、空闲使用率和各个 进程的使用率
通过指定参数,systat 也能进行 I/O 的统计、虚存的统计、网络的统计等,这些参数 包括‐iostat,‐vmstat,‐mbufs,‐netstat,‐ip,‐icmp,‐tcp,‐swap 等

kldstat‐v#显示内核加载的模块
klsdstat‐mipfilter#显示指定模块
pnpinfo#即插即用设备
devinfo‐u#显示设备占用的 IRQ 和内存地址

使用 portsnap 生级 port 的目录树,建议使用;我没做这步,使用 port 安装 vim 系统报错。
①配置 portsnap:
我们使用 portsnap,首先要设置一下它的配置文件,位于/etc/portsnap.conf:
[root@bsd01/usr/ports]#vi/etc/portsnap.conf
把 SERVERNAME=portsnap.freebsd.org
修改成:
SERVERNAME=portsnap.hshh.org
在你的 freebsd 首次使用 portsnap 必须执行下面 2 步:

[root@bsd01~]#portsnap fetch
[root@bsd01~]#portsnap extract

#这 2 步可以合成使用:

[root@bsd01~]#portsnap fetch extract #portsnapfecth 是从网上获取 portsnap 快照的最新压缩包,听闻这个压缩包官方没小时更 新一次。

#portsnapextract则是把这个压缩包创立到/usr/ports。哪怕你以前已经手工安装了 ports, 他也会重新创立一次。
③以后使用 portsnap 更新 ports:
以后更新,只需要执行下面 2 步:

[root@bsd01~]#portsnap fetch
[root@bsd01~]#portsnap update

这 2 步可以合成使用:

[root@bsd01~]#portsnap fetch update

portsnap 第一次运行 extract 命令时,可能需要一段时间,以后更新使用 update 的时候, 速度就块很多了。

 以下是portsnap的几种简单用法:

 
    * 第一次使用可以:portsnap fetch extract
    * 以后使用只要:portsnap fetch update 
    * 放在cron里运行:portsnap cron
另外:
更新ports后,如果运行make search name=xxx不成功,请在/usr/ports下运行make fetchindex。
 
 
 
'
 
 

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" 安装。

  1. cd/usr/ports/www/node
  2. makeinstall clean

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

  1. cd/usr/ports/www/npm/
  2. makeinstall clean

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

  1. cd/usr/ports/databases/sqlite3/
  2. makeinstall clean

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

  1. node--version
  2. v0.12.6
  3.  
  4. npm--version
  5. 2.11.3
  6.  
  7. sqlite3--version
  8. 3.8.10.2

node 和 npm 版本

node 和 npm 版本

第二步 - 添加 Ghost 用户

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

  1. adduser ghost
  2. FILLWithYourINFO

添加用户 Ghost

添加用户 Ghost

第三步 - 安装 Ghost

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

  1. mkdir-p/var/www/
  2. cd/var/www/

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

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

把它解压到 "ghost" 目录:

  1. unzip-d ghost ghost-latest.zip

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

  1. chown-R ghost:ghost ghost/

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

  1. su-ghost

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

  1. cd/var/www/ghost/

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

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

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

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

  1. npm install--production

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

  1. cpconfig.example.js config.js
  2. nano-c config.js

更改 server 模块的第 25 行:

  1. host:'0.0.0.0',

保存并退出。

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

  1. npm start--production

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

Ghost 安装完成

Ghost 安装完成

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

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

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

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

  1. npm install forever-g

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

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

粘贴下面的服务脚本:

  1. #!/bin/sh
  2.  
  3. #PROVIDE:ghost
  4. #KEYWORD:shutdown
  5. PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
  6.  
  7. ./etc/rc.subr
  8.  
  9. name="ghost"
  10. rcvar="ghost_enable"
  11. extra_commands="status"
  12.  
  13. load_rc_config ghost
  14. :${ghost_enable:="NO"}
  15.  
  16. status_cmd="ghost_status"
  17. start_cmd="ghost_start"
  18. stop_cmd="ghost_stop"
  19. restart_cmd="ghost_restart"
  20.  
  21. ghost="/var/www/ghost"
  22. log="/var/log/ghost/ghost.log"
  23. ghost_start(){
  24. sudo-u ghost sh-c"cd $ghost && NODE_ENV=production forever start -al $log index.js"
  25. }
  26.  
  27. ghost_stop(){
  28. sudo-u ghost sh-c"cd $ghost && NODE_ENV=production forever stop index.js"
  29. }
  30.  
  31. ghost_status(){
  32. sudo-u ghost sh-c"NODE_ENV=production forever list"
  33. }
  34.  
  35. ghost_restart(){
  36. ghost_stop;
  37. ghost_start;
  38. }
  39.  
  40. run_rc_command"$1"

保存并退出。

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

  1. chmod+x ghost

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

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

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

  1. sysrc ghost_enable=yes

用以下命令启动 ghost:

  1. service ghost start

其它命令:

  1. service ghost stop
  2. service ghost status
  3. service ghost restart

Ghost 服务命令

Ghost 服务命令

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

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

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

  1. pkg install nginx

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

  1. cd/usr/local/etc/nginx/
  2. mkdirvirtualhost/

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

  1. cdvirtualhost/
  2. nano-c ghost.conf

粘贴下面的 virtualhost 配置:

  1. server{
  2. listen80;
  3.  
  4. #YourDomain
  5. server_name ghost.me;
  6.  
  7. location~*\.(?:ico|css|js|gif|jpe?g|png|ttf|woff)${
  8. access_log off;
  9. expires30d;
  10. add_headerPragmapublic;
  11. add_headerCache-Control"public, mustrevalidate, proxy-revalidate";
  12. proxy_pass http://127.0.0.1:2368;
  13. }
  14.  
  15. location/{
  16. add_header X-XSS-Protection"1; mode=block";
  17. add_headerCache-Control"public, max-age=0";
  18. add_headerContent-Security-Policy"script-src 'self' ; font-src 'self' ; connect-src 'self' ; block-all-mixed-content; reflected-xss block; referrer no-referrer";
  19. add_header X-Content-Type-Optionsnosniff;
  20. add_header X-Frame-OptionsDENY;
  21. proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
  22. proxy_set_headerHost$http_host;
  23. proxy_set_header X-Forwarded-Proto$scheme;
  24. proxy_pass http://127.0.0.1:2368;
  25. }
  26.  
  27. location=/robots.txt{access_log off;log_not_found off;}
  28. location=/favicon.ico{access_log off;log_not_found off;}
  29.  
  30. location~/\.ht{
  31. deny all;
  32. }
  33.  
  34. }

保存并退出。

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

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

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

  1. [......]
  2.  
  3. includevirtualhost/*.conf;
  4.  
  5. }

保存并退出。

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

  1. sysrc nginx_enable=yes

并启动 nginx:

  1. service nginx start

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

ghost.me 成功运行

ghost.me 成功运行

Ghost.me 正在成功运行。

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

测试 ghost 和 nginx

测试 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 能快速部署并且易于使用和配置。