2015年11月

如果在安装 npm 的各种包时,总是需要 sudo 才能完成安装的话,那是因为你的 npm 包安装目录的权限问题,你可以通过下面两种方式的任何一种解决:

方法一:修改 npm 默认安装目录的权限

  1. 找到 npm 默认安装目录:

    npm config get prefix

    很多系统都应该是 /usr/local ,如果目录是 /usr 的话,请不要使用此方法,改用方法二。

  2. 将该目录的所有者改成当前用户即可(就是你啦):

    sudo chown -R `whoami` <directory>

如果你不想修改目录的权限,你可以单独修改下面这些子目录即可:

  • lib/node_modules
  • bin
  • share

方法二:修改 npm 默认的安装目录至另一个目录

很多时候,可能因为各种各样的原因,你并不想或者根本就不能修改默认目录的所有者,那么,改变 npm 的默认安装目录将是最好的选择了:

  1. 创建一个新的目录,比如下面这样:

    make ~/.npm-global
  2. 设置 npm 使用刚才新建的目录:

    npm config set prefix '~/.npm-global'
  3. 创建或者打开现有的 ~/.profile 文件,添加下面这一行:

    export PATH=~/.npm-glopbal/bin:$PATH
  4. 保存之后返回至命令行,更新系统变量:

    source ~/.profile

现在你可以直接通过下面这行命令全局安装一下 jshint 试试。

npm install -g jshint

安装

全局安装

如果你希望以命令行的方式在任何一个目录启动 Browsersync,那么需要你全局安,使用下面这行命令即可:

npm install -g browser-sync

本地安装

本地安装则是直接将 Browsersync 直接安装至你的项目中,这是应该优先选择的方式,安装完成之后,便将 Browsersync 作为你的项目的一个依赖添加至 package.json 文件中,这样所有的人都会在使用你的项目时,自动安装 Browsersync。

npm install browser-sync --save-dev
不管是全局安装,还是本地安装,请都不要使用 sudo,如果你在安装过程中告诉你需要使用 sudo,你可以通过 《修复 npm 的权限》这篇文章修复,很简单,只需要一分钟不到。

Gulp.js 配合

安装

在你的项目中安装 browsersyncgulp

npm install browser-sync gulp --save-dev

然后在 gulpfile.js 中添加如下代码:

var gulp = require('gulp');

var browserSync = require('browser-sync').create();

// 服务本地静态文件
gulp.task('browser-sync', function() {
    browserSync.init({
        server: {
            baseDir: './www/'
        }
    })
});

// 代理你的其它的项目
gulp.task('browser-sync', function() {
  browserSync.init({
      proxy: "yourlocal.dev"
  })
});

之后,在你的项目中即可以使用以下方式直接打开开发服务器了:

gulp browser-sync

SASSCSS 注入

Browsersync 支持数据流,所以你可以在一个特定的时间点重载页面,比如你修改了某个CSS文件或者HTML(注意,你需要在 gulp.dest 之后再调用 .stream)。

var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var sass = require('gulp-sass');

// 服务本地静态文件
gulp.task('browser-sync', function() {
    browserSync.init({
        server: {
            baseDir: './www/'
        }
    });

    gulp.watch('./scss/*.scss', ['sass']);
    gulp.watch('./www/*.html').on('change', browserSync.reload);
});

gulp.task('sass', function() {
    return gulp.src('scss/*.scss')
    .pipe(sass())
    .pipe(gulp.dest('www/css'))
    .pipe(browserSync.stream());
});

gulp.task('default', ['browser-sync']);

与比对应的项目目录结构如下:

project/
    scss/
        main.scss
    www/
        index.html
        css/
            main.css
    gulpfile.js

ruby-sasssourcemap

如果使用了 gulp-ruby-sass ,并且开启了 sourcemap: true ,附加的 .map 文件也会被生成,如下:

var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var sass = require('gulp-ruby-sass');
var sourcemaps = require('gulp-sourcemaps');

// 服务本地静态文件
gulp.task('browser-sync', ['sass'], function() {
    // 初始化 browser-sync
    browserSync.init({
        // 设置服务器
        server: {
            // 根目录为 ./www/
            baseDir: './www/'
        }
    });

    // 观察 ./scss 目录下所有 scss 文件的变更,同时将变更通知给 sass task
    gulp.watch('./scss/*.scss', ['sass']);
    // 观察 ./www 目录下的所有 .html 文件,当其修改时, browser-sync 重新加载(reload)
    gulp.watch('./www/*.html').on('change', browserSync.reload);
});

// sass 任务
gulp.task('sass', function() {
  return sass('scss/*.scss', {
      sourcemap: true
  }).on('error', function(err){
      console.error('Error!', err.message);
  }).pipe(sourcemaps.write('./www/css', {
      includeContent: false,
      sourceRoot: 'scss'
  })).pipe(browserSync.stream({
      match: '**/*.css'
  }))
});

gulp.task('default', ['browser-sync']);

Phalcon 是一个用 C 语言编写的,号称是速度最快、占用资源最少的 PHP 框架。它以一个 PHP 扩展的形式安装,与 CodeIgniter、CakePHP 等框架有显著的不同。

Phalcon 在 Windows 上的安装很简单,只要在官方网站上找到对应 PHP 版本的 DLL,放进 PHP 目录,然后在 php.ini 里加上就行了。但在 Linux 和 Mac 上需要自己编译。

在 Mac 上做 PHP 开发,很多人都用 MAMP。情况比较麻烦,因为除了 MAMP 以外,OS X 还自带了一个 PHP;而且 MAMP 没有自带 PHP 的源码。所以需要一些额外的步骤。

准备编译环境

首先,你得有一个包管理器,比如 Homebrew,用来安装一些工具。另外,还要安装 Xcode 或者只安装它的命令行工具,才能进行编译。

接下来,用 Homebrew安装一些工具:

$ brew install autoconf automake libtool

修改环境变量

现在,如果你在终端使用 PHP,实际上用的是 OS X 自带的那个:

$ which php
/usr/bin/php

修改环境变量,让终端调用 MAMP 里的 PHP:

$ export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
$ which php
/Applications/MAMP/bin/php/php5.6.10/bin/php

下载 PHP 源码

php --version 获得 PHP 的版本,然后在 php.net 下载对应的源码包。

$ php --version
PHP 5.6.10 (cli) (built: Jul  6 2015 14:28:54) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies

$ curl http://cn2.php.net/distributions/php-5.6.10.tar.bz2 | tar -xj
$ mkdir /Applications/MAMP/bin/php/php5.6.10/include
$ mv php-5.6.10/ /Applications/MAMP/bin/php/php5.6.10/php
$ cd /Applications/MAMP/bin/php/php5.6.10/php/
$ ./configure

安装 Phalcon

$ curl -L -o cphalcon-master.zip https://github.com/phalcon/cphalcon/archive/master.zip
$ unzip cphalcon-master.zip
$ cd cphalcon-master/build
$ sudo ./install

修改 MAMP PHP 配置文件模板

打开 MAMP,点击 File -> File -> Edit Template -> php 5.6.10 php.ini ,添加如下一行:

extension=phalcon.so

重启服务后,即可通过 phpinfo() 函数看到已安装的 Phalcon 信息。

介绍

很多软件都必须服务器提供了 Java 支持,本文将指导你完成在 Ubuntu 服务器如何安装与管理多版本的 Java.

安装默认的 JRE/JDK

这是被推荐的,也是最简单的方式,默认情况下,在 Ubuntu 12.04 上面,会安装 OpenJDK 6,而在 Ubuntu 12.10+ 上面,会安装 OpenJDK 7

通过 apt-get 工具安装 Java 很简单,首先更新包索引:

sudo apt-get update

安装检查你的服务器上面是否已经安装了 Java:

java -version

如果该命令返回 『The program java can be found in the following packages』,则表明你的服务器上面还没有安装任何版本的 Java,那么,执行下面这行命令即可安装默认版本的 Java:

sudo apt-get install default-jre

这会安装 Java 运行时环境(JRE),如果你需要安装 Java 开发工具包(JDK)来构建或编译 Java 程序(比如 Apache Ant,Apache Maven 等),那么执行下面这行命令:

sudo apt-get install default-jdk

这人安装 Java 需要的所有内容。

其它的步骤,都是可选的,而且应该在你需要的时候才执行。

安装 OpenJDK 7 (可选)

要安装 OpenJDK 7 ,执行下面的命令:

sudo apt-get install openjdk-7-jre 

这会安装 Java 运行时环境 (JRE),如果你需要安装 Java 开发工具包,则执行下面的命令:

sudo apt-get install openjdk-7-jdk

安装 Orache JDK (可选)

Orache JDK 是官方的 JDK,但是它现在已经不再被是 Ubuntu 的默认安装选项了。但是你还仍然可以通过 apt-get 安装它,要安装任何版本的 Oracle JDK,都需要先执行下面的命令:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

根据你要安装的 JDK 版本的不同,选择下面不同的命令执行:

Oracle JDK 6

这是一个很古老的版本,但是同样可以安装

sudo apt-get install oracle-java6-installer

Oracle JDK 7

这是最新的稳定发布版本:

sudo apt-get install oracle-java7-installer

Oracle JDK 8

这是一个开发者预览版:

sudo apt-get install oracle-java8-installer

多版本安装 (可选)

如果你的系统中安装了多个版本的 Java,那么你可以随时设置并切换默认版本的 Java,执行下面的命令:

sudo update-alternatives --config java

如果你的系统中安装了多个版本,那么通常会有如下这样的返回结果:

There are 2 choices for the alternative java (providing /usr/bin/java).

Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-oracle/jre/bin/java          1062      auto mode
  1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          1062      manual mode

Press enter to keep the current choice[*], or type selection number:

你现在就可以通过输入每一个版本前面的序号来设置默认的 Java 版本,这种默认版本的设置方法,对于 Java 编译器 javac 同样适用:

sudo update-alternatives --config javac

同样的,keytooljavadoc 以及 jarsigner 等均可以通过此种方法来设置默认版本。

设置 JAVA_HOME 环境变量

有一些程序需要系统提供一个 JAVA_HOME 环境变量,首先找到当前系统安装了哪些版本的Java。

sudo update-alternatives --config java

返回如下这样的结果:

There are 2 choices for the alternative java (providing /usr/bin/java).

Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-oracle/jre/bin/java          1062      auto mode
  1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          1062      manual mode

Press enter to keep the current choice[*], or type selection number:

那么,安装路径就有下面这些:

/usr/lib/jvm/java-7-oracle

/usr/lib/jvm/java-6-openjdk-amd64

/usr/lib/jvm/java-7-oracle

复制你需要版本的路径,然后编辑:/etc/environment 文件:

sudo nano /etc/environment

在该文件中,添加下面这一行(同时将 YOUR_PATH 改为你刚才复制的路径):

JAVA_HOME="YOUR_PATH"

然后,重新加载该文件:

source /etc/environment

测试设置是否正确,可以执行下面这行命令:

echo $JAVA_HOME

如果成功显示了你设置的路径,则表示设置成功。