express
默认node & npm & cnpm已安装
express生成应用
express教程地址 http://www.expressjs.com.cn/
1.安装Express 应用生成器
cnpm install express-generator -g
//express 指令
express -h
Usage: express [options] [dir]
Options:
-h, --help output usage information
-V, --version output the version number
-e, --ejs add ejs engine support (defaults to jade)
--hbs add handlebars engine support
-H, --hogan add hogan.js engine support
-c, --css <engine> add stylesheet <engine> support (less|stylus|compass|sass) (defaults to plain css)
--git add .gitignore
-f, --force force on non-empty directory
默认使用jade模板引擎,可自行配置,如:-c sass 使用sass编译样式文件
2.创建express应用
express -c sass blog //创建应用blog,使用jade模板引擎,sass样式文件
create : blog
create : blog/package.json
create : blog/app.js
create : blog/public
create : blog/public/javascripts
create : blog/public/images
create : blog/public/stylesheets
create : blog/public/stylesheets/style.sass
create : blog/routes
create : blog/routes/index.js
create : blog/routes/users.js
create : blog/views
create : blog/views/index.jade
create : blog/views/layout.jade
create : blog/views/error.jade
create : blog/bin
create : blog/bin/www
install dependencies:
> cd blog && npm install
run the app:
> SET DEBUG=blog:* & npm start
3.然后安装所有依赖包:
cd blog & cnpm install
4.启动应用
(MacOS 或 Linux 平台):
DEBUG=myapp npm start
Windows 平台使用如下命令:
set DEBUG=myapp & npm start
然后在浏览器中打开 http://localhost:3000/ 网址就可以看到这个应用了。
Cmder-安装与配置
Cmder:
官网地址:http://cmder.net/
界面图:
1:下载安装:
进入官网:http://cmder.net/
2:移动文件到你想要存放的文件目录:例如D:\Program Files
3:解压文件:
4:运行文件:
5:发送到桌面快捷键:
桌面出现图标:
6:添加至右键菜单:
首先:
添加环境变量:
本操作需要管理员权限:
Cmder.exe /REGISTER ALL
回车运行即可
GOOD LUCK!
附注:
cmder 功能极为强大,但从视窗画面上看不太出其强大实力,这里就先说下常用的功能:
如图示编号的部分说明如下:
1, Cmder常用快捷键
利用Tab,自动路径补全;
利用Ctrl+T建立新页签;利用Ctrl+W关闭页签;
利用Ctrl+Tab切换页签;
Alt+F4:关闭所有页签
Alt+Shift+1:开启cmd.exe
Alt+Shift+2:开启powershell.exe
Alt+Shift+3:开启powershell.exe (系统管理员权限)
Ctrl+1:快速切换到第1个页签
Ctrl+n:快速切换到第n个页签( n值无上限)
Alt + enter: 切换到全屏状态;
Ctr+r 历史命令搜索
2, 可在视窗内搜寻画面上出现过的任意关键字。
3, 新增页签按钮。
4, 切换页签按钮。
5, 锁定视窗,让视窗无法再输入。
6, 切换视窗是否提供卷轴功能,启动时可查询之前显示过的内容。
7, 按下滑鼠左键可开启系统选单,滑鼠右键可开启工具选项视窗。 Win+Alt+P :开启
- Cmder增加了alias功能;
他让你用短短的指令执行一些常见但指令超长又难以记忆的语法;
在其控制台输入alias可以查看。
- 主控台文字自动放大缩小功能;
你只要按下Ctrl+滑鼠滚轮就可以办到;
还有:up,向上翻历史命令;
- Cmder有极为简单的复制粘贴操作。
Ctr+V直接粘贴;
用鼠标选中你想拷贝的内容,自动就复制到剪切板;
- 4
自定义aliases;
打开Cmder目录下的config文件夹,里面的aliases文件就是我们可以配置的别名文件,只需将里面ls命令的别名按下列方式修改就可以在ls命令下显示中文。
Gulp-前端自动化
简介
gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器;她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成;使用她,我们不仅可以很愉快的编写代码,而且大大提高我们的工作效率。
快速入门
基础环境
gulp自动化工具需要node环境,以及npm,如果还未安装node,请下载安装。
gulp安装
1
2
3
4<!--全局安装-->
npm install -g gulp
<!--作为项目的开发依赖(devDependencies)安装-->
npm install --save-dev gulp文件目录结构
1 | <!--创建文件夹目录,--> |
建立package.json文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40E:\gulpbox>npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
name: (gulpbox)
version: (1.0.0)
description:gulp
entry point: (index.js)
test command:
git repository:
keywords:gulp
author: ovenliu
license: (ISC) MIT
About to write to E:\FrontDemo\gulpbox\package.json:
{
"name": "gulpbox",
"version": "1.0.0",
"description": "gulp",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"gulp"
],
"author": "ovenliu",
"license": "MIT"
}
Is this ok? (yes) yes
E:\FrontDemo\gulpbox>安装npm包依赖(本次需要安装以下npm包)
gulp (gulp本地依赖)
gulp-concat (合并文件)
gulp-imagemin (图片压缩)
gulp-jade (编译jade文件为html文件)
gulp-jshint (javascript语法检查)
gulp-minify-css (css压缩)
gulp-rename (文件重命名)
gulp-sass (编译scss文件成css文件)
gulp-uglify (javascript代码混淆压缩)
gulp-watch (文件监听)
jshint (js检查)
1 | npm install --save-dev gulp gulp-concat gulp-imagemin |
安装完成后生成node-modules目录
此时package.json文件内容变成:
1 | { |
- 新建gulpfile.js文件,并添加以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69// 引入 gulp
var gulp = require('gulp');
// 引入需要的组件
var jshint = require('gulp-jshint');
var sass = require('gulp-sass');
var cssmin=require('gulp-minify-css');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
var jade = require('gulp-jade');
var imagemin = require('gulp-imagemin');
/*js检查任务*/
gulp.task('jshints', function() {
gulp.src('./lib/js/*.js') //导入./lib/js/目录下所有的js文件
.pipe(jshint()) //对文件进行语法检查
.pipe(jshint.reporter('default')); //输出检查信息
});
/*jade转换任务*/
gulp.task('templates',function(){
gulp.src('./lib/view/*.jade') //导入./lib/view/目录下的所有jade文件
.pipe(jade()) //编译jade文件
.pipe(gulp.dest('./dist/view')); //输出到指定文件夹
})
/*Sass转换任务*/
gulp.task('sass', function() {
gulp.src('./lib/sass/*.scss') //导入./lib/sass/目录下的所有scss文件
.pipe(concat('all.scss')) //合并所有文件为all.scss
.pipe(sass()) //编译成css文件
.pipe(gulp.dest('./dist/css')) //输出到指定文件夹
.pipe(rename('all.min.css')) //重命名为all.min.css
.pipe(cssmin()) //压缩css文件
.pipe(gulp.dest('./dist/css')); //输出到指定文件夹
});
// 合并,压缩文件
gulp.task('scripts',['jshints'], function() {
gulp.src('./lib/js/*.js') //导入./lib/js/目录下的所有js文件
.pipe(concat('all.js')) //合并所有文件为all.js
.pipe(gulp.dest('./dist/js')) //输出到指定文件夹
.pipe(rename('all.min.js')) //重命名为all.min.js
.pipe(uglify()) //压缩混淆js文件
.pipe(gulp.dest('./dist/js')); //输出到指定文件夹
});
/*image照片压缩*/
gulp.task('imgmin',function(){
gulp.src('./lib/images/*') //导入./lin/images/目录下所有的文件
//此处没有限定后缀名
.pipe(imagemin()) //执行图片压缩(png/jpg/gif都行)
.pipe(gulp.dest('./dist/images')); //输出到指定文件夹
})
// 默认任务
gulp.task('default', function(){
gulp.run( 'sass', 'scripts','templates','imgmin'); //执行多个任务
});
// 监听文件变化
gulp.watch([
'./lib/js/*.js', //监听./lib/js/目录下的所有js文件
'./lib/sass/*.scss', //监听./lib/sass/目录下的所有scss文件
'./lib/view/*.jade' //监听./lib/view/目录下的所有jade文件
], function(){
gulp.run( 'default'); //文件修改后执行default任务,等同于执行了所有的任务
}); - gulpfile.js解读
gulp基本语法
此处只是针对本文需要的语法进行说明,具体的详细参数和更多用法请移步官网API
gulp.task(name[, deps], fn)
1
2
3
4
5gulp.task('taskname',['Dependencies'] function() {
// do something
});
<!--注册一个任务taskname,如果需要前置条件,
则以数组形式添加到Dependencies处,回调函数function(){}内执行各项插件-->gulp.src(globs[, options])
1
2
3
4gulp.src('view/**/*.jade')
<!--一般写为需要处理的文件路径-->
<!--view/**/*.jade 表示view文件夹内以及其子文件夹内的所有以.jade结尾的文件-->gulp.dest(path[, options])
1
2gulp.dest('./dist/images')
<!--输出文件到指定目录-->.pipe(function())
1
2
3
4
5gulp.src('./client/templates/*.jade') //导入文件路径
.pipe(jade()) //将jade文件编译成html
.pipe(gulp.dest('./build/templates')) //输出文件到指定目录
.pipe(minify()) //将文件压缩
.pipe(gulp.dest('./build/minified_templates'));//将压缩后的文件输出到指定目录gulp.watch(glob[, opts, cb])
1
2
3
4
5
6
7
8
9<!--监听文件变化-->
<!--监听glob内的文件,一旦发生变化,就执行回调函数-->
gulp.watch([
'./lib/js/*.js',
'./lib/sass/*.scss',
'./lib/view/*.jade'
], function(){
gulp.run( 'default');
});gulp.run(opts)
1
2
3
4<!--执行多个任务-->
gulp.task('default', function(){
gulp.run( 'sass', 'scripts','templates','imgmin');
});打开命令行工具,输入gulp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17E:\gulpbox>gulp
[01:24:53] Using gulpfile E:\gulpbox\gulpfile.js
[01:24:53] Starting 'default'...
gulp.run() has been deprecated. Use task dependencies or
gulp.watch task triggering instead.
[01:24:53] Starting 'sass'...
[01:24:53] Finished 'sass' after 7.88 ms
[01:24:53] Starting 'jshints'...
[01:24:53] Finished 'jshints' after 2.72 ms
[01:24:53] Starting 'scripts'...
[01:24:53] Finished 'scripts' after 1.03 ms
[01:24:53] Starting 'templates'...
[01:24:53] Finished 'templates' after 486 μs
[01:24:53] Starting 'imgmin'...
[01:24:53] Finished 'imgmin' after 774 μs
[01:24:53] Finished 'default' after 24 ms
[01:24:53] gulp-imagemin: Minified 2 images (saved 7.81 kB - 3.3%)运行完成后整个目录结构为:
深入探索
如果想要更深入学习Gulp,请移步gulp官网。
gulp官网地址:http://www.gulpjs.com.cn/
如果想学习更多的gulp功能,请移步npm官网
npm官网地址:https://www.npmjs.com/
Centos 安装nodejs
Centos 安装nodejs
此次通过nvm安装方式进行安装
nvm下载地址https://github.com/cnpm/nvm/
1.安装nvm
git clone https://github.com/cnpm/nvm.git ~/.nvm
cd ~/.nvm
git checkout `git describe --abbrev=0 --tags`
//运行下面命令
. ~/.nvm/install.sh
下面是nvm的一些用法
[root@ovensbb ~]# nvm -help
Node Version Manager
Usage:
nvm help Show this message
nvm --version Print out the latest released version of nvm
nvm install [-s] <version> Download and install a <version>, [-s] from source. Uses .nvmrc if available
nvm uninstall <version> Uninstall a version
nvm use <version> Modify PATH to use <version>. Uses .nvmrc if available
nvm run <version> [<args>] Run <version> with <args> as arguments. Uses .nvmrc if available for <version>
nvm current Display currently activated version
nvm ls List installed versions
nvm ls <version> List versions matching a given description
nvm ls-remote List remote versions available for install
nvm deactivate Undo effects of `nvm` on current shell
nvm alias [<pattern>] Show all aliases beginning with <pattern>
nvm alias <name> <version> Set an alias named <name> pointing to <version>
nvm unalias <name> Deletes the alias named <name>
nvm reinstall-packages <version> Reinstall global `npm` packages contained in <version> to current version
nvm unload Unload `nvm` from shell
nvm which [<version>] Display path to installed node version. Uses .nvmrc if available
Example:
nvm install v0.10.32 Install a specific version number
nvm use 0.10 Use the latest available 0.10.x release
nvm run 0.10.32 app.js Run app.js using node v0.10.32
nvm exec 0.10.32 node app.js Run `node app.js` with the PATH pointing to node v0.10.32
nvm alias default 0.10.32 Set default node version on a shell
Note:
to remove, delete, or uninstall nvm - just remove ~/.nvm, ~/.npm, and ~/.bower folders
2.查看node版本列表
[root@ovensbb ~]# nvm ls-remote
...
v0.12.13
v0.12.14
v0.12.15
...
v4.4.6
v4.4.7
v4.5.0(稳定版)
...
v5.4.1
v5.5.0
...
v6.2.2
v6.3.0
v6.3.1
v6.4.0
v6.5.0
v6.6.0(开发版)
...
3.安装最新开发版并检查版本
[root@ovensbb ~]# nvm install v6.6.0
######################################################################## 100.0%
Checksums empty
Now using node v6.9.0
[root@ovensbb ~]# node -v
v6.9.0
4.设置默认node
1 | nvm alias default v6.9.0 |
下载源码包编译安装
1.安装编译环境
sudo yum install gcc gcc-c++ wget
2.下载源码包
wget https://nodejs.org/dist/v4.5.0/node-v4.5.0.tar.gz
3.解压并安装
tar -zvxf node-v4.5.0.tar.gz
cd node-v4.5.0
make && make install
//检查版本
node -v
通过express创建项目
安装express
1、安装express,使用npm install express -g全局安装,不能通过 express -e nodejs-001创建项目会提示“bash: express: 未找到命令…”
2、安装express时增加generator参数:npm install -g express-generator才可以,express 已经把命令行工具分离出来了;
原因:原先的express带cli, 现在把cli拆成了单独的express-generator包. 原先的express运行生成的项目是 node app.js, 因为httpserver相关代码都在app.js里, 现在这部分代码移到了项目目录的bin/www下面, app.js 只保留实现app的逻辑代码, 你需要去运行那个bin/www。 只是很单纯的细化应用和包依赖的版本变更。
建立express工程,启动项目
1、创建工程express -e nodejs-001;
2、创建工程时候会提示需要安装依赖 cd nodejs-001 && npm install;
3、启动项目npm start,通过浏览器访问http://localhost:3000/;这里需要注意 express 4.x 无法以 node app.js 为启动方式,而是用指令 npm start 作为启动;
这里大功告成,终于学会了环境安装,接下去可以好好深入学习了,真开心!!!
centos7防火墙iptables配置
1:Firewalld防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
2:安装iptables
#先检查是否安装了iptables
service iptables status
#安装iptables
yum install -y iptables
#升级iptables
yum update iptables
#安装iptables-services
yum install iptables-services
#停止firewalld服务
systemctl stop firewalld
#禁用firewalld服务
systemctl mask firewalld
#查看iptables现有规则
iptables -L -n
#先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -i lo -j ACCEPT
#开放22端口
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
#开放21端口(FTP)
iptables -A INPUT -p tcp –dport 21 -j ACCEPT
#开放80端口(HTTP)
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
#开放3306端口(HTTP)
iptables -A INPUT -p tcp –dport 3306 -j ACCEPT
#开放443端口(HTTPS)
iptables -A INPUT -p tcp –dport 443 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp –icmp-type 8 -j ACCEPT
#允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律绿灯
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP
#如果要添加内网ip信任(接受其所有TCP请求)
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
#过滤所有非以上规则的请求
iptables -P INPUT DROP
#要封停一个IP,使用下面这条命令:
iptables -I INPUT -s ... -j DROP
#要解封一个IP,使用下面这条命令:
iptables -D INPUT -s ... -j DROP
#保存上述规则
service iptables save
重新设置iptables设置
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
=========================================================
|||||完整iptables配置|||||
==========================================================
#!/bin/sh
iptables -P INPUT ACCEPT
iptables -F
iptables -X
iptables -Z
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -p tcp –dport 21 -j ACCEPT
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
iptables -A INPUT -p tcp –dport 3306 -j ACCEPT
iptables -A INPUT -p tcp –dport 443 -j ACCEPT
iptables -A INPUT -p icmp –icmp-type 8 -j ACCEPT
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
service iptables save
systemctl restart iptables.service
=====================================================
或者 直接修改文件
vi /etc/sysconfig/iptables #编辑防火墙配置文件
Firewall configuration written by system-config-firewall
Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT
:wq! #保存退出
ft0e3USWsR85n12aYF
centos7安装git自动化网站发布
1:基础环境
1,git git安装:#yum install -y git
2:服务器端
1,创建git仓库
[root@ovensbb /]# mkdir /home/workspace
[root@ovensbb /]# cd /home/workspace/
[root@ovensbb workspace]# git init –bare wwwroot.git
初始化空的 Git 版本库于 /home/workspace/wwwroot.git/
2,创建网站根目录
[root@ovensbb workspace]# cd /
[root@ovensbb /]# mkdir -p /home/website/wwwroot
3:本地端
1,初始化本地仓库
E:\ mkdir gitwww
E:\ cd gitwww
E:\gitwww\ git init
2,克隆服务器端的仓库
E:\gitwww\ git clone ssh://root@192.168.31.56/home/workspace/wwwroot.git
4:服务器端配置hook钩子
[root@ovensbb hooks]# cd /
[root@ovensbb /]# cd /home/workspace/wwwroot.git/hooks
[root@ovensbb hooks]# cat > post-receive <<EOF
#!/bin/bash
git –work-tree=/home/website/wwwroot checkout -f
EOF
[root@ovensbb hooks]# chmod +x post-receive
5:本地推送一次
E:\gitwww\wwwroot>git remote add origin ssh://root@192.168.31.56/home/workspace/wwwroot.git
E:\gitwww\wwwroot>echo “hello gitweb” > index.html
E:\gitwww\wwwroot>git add index.html
E:\gitwww\wwwroot>git status
On branch master
Initial commit
Changes to be committed:
(use “git rm –cached
new file: index.html
E:\gitwww\wwwroot>git commit -m “my first push”
[master (root-commit) 656cc86] my first push
1 file changed, 1 insertion(+)
create mode 100644 index.html
E:\gitwww\wwwroot>git push origin master
root@192.168.31.56‘s password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 229 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://root@192.168.31.56/home/workspace/wwwroot.git
- [new branch] master -> master
6:服务器端检查
[root@ovensbb wwwroot]# cd /
[root@ovensbb /]# cd /home/website/wwwroot
[root@ovensbb wwwroot]# ls
index.html
[root@ovensbb wwwroot]# cat index.html
“hello gitweb”
————————————-大功告成————————————————-
使用ssh协议从服务器上克隆裸版本库内容,这里如果没有配置公钥的话,会提示输入密码
centos7安装mysql
1:下载mysql的repo源
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
2:安装mysql-community-release-el7-5.noarch.rpm包
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
运行截图:
3:安装mysql
sudo yum install -y mysql-server
安装完成后没有密码,需要重置密码
4:重启mysql,并添加为开机启动
systemctl restart mysql
systemctl enable mysql
5:重置密码
无密码连接mysql
sudo mysql -u root
设置密码:
SET PASSWORD FOR ‘root‘@’localhost’ = PASSWORD(‘123456’);
mysql>exit; 退出mysql
mysql -u root -p
Enter password: 输入密码
mysql >
5:数据库常用操作:
1:显示数据库
mysql> show databases;
2:创建数据库
mysql> create database mydb;
3:删除数据库
mysql> drop database mydb;
4:使用数据库
mysql> use mydb;
5:创建user表
mysql> create table user (id int(10) not null primary key auto_increment,username char(30) not null,userpwd char(100) not null default ‘123456’);
6:显示user表
mysql> show tables;
7:删除user表
mysql> mysql> drop table user;
8:插入数据
mysql> insert into user (username,userpwd) values(‘wenwen’,’123456’);
9:查询数据
mysql> select * from user;
10:删除数据
mysql> delete from user where id = 1;
PS:MYSQL语法请自行去学习,在此就不赘述。