Nodejs安装node-gyp失败

最近在Windows下面 npm install -g node-gyp 的时候出现了找不到VCBuild.exe的错误。

搜索后发现可以直接npm install -g windows-build-tools 安装VS的编译环境,省去安装VS的麻烦。

安装完成之后发现仍旧报错。发现有个人说vs2010开始就没有vcbuild.exe了换成了msbuild.exe

估计是版本问题

执行npm config set msvs_version 2015 –global 解决

重新安装无误

svn:externals文件(夹)链接,FlashDevelop开启SVN插件

  • 使用svn:externals建立文件(夹)链接

在实际开发常常出现这样的情况:同一文件(文件夹)在不同的项目中使用,如果复制多份,维护会变得非常麻烦。

虽然windows可以使用mklink(linux可以使用ln)创建软连接,但是提交到svn会变成两份不同的文件,svn不能识别软连接。

此时使用svn:externals可以方便的解决这个问题,svn:externals是用来建立文件(夹)链接,或者叫文件(夹)引用,或者映射什么的….总之作用就是svn上的一个文件,在多处使用,修改后update,即会同步更新。这样管理项目的公用代码就很方便了,今天刚好用到,就记录下来

1、在任意SVN目录右键,选择 TortoiseSVN -> Properties。

2、选择new -> externals

3、出现的界面里面,Local path代表本地文件或者文件夹的名称,URL是SVN地址。

关键的地方到了,如果Local path设置为css(一个文件夹),URL设置 http://keenwon.com/css(一个文件夹)。那么会在当前目录建立一个CSS文件夹,指向http://keenwon.com/css。同理,如果Local path设置为style.css,URL设置为http://keenwon.com/css/style.css,就会在本目录建立一个style.css文件,指向http://keenwon.com/css/style.css。

这样,可以做到文件(夹)的同步更新。另外要注意上面设置的URL是否有权限。

注意:不能在给两个不同的仓库加svn:externals。也就是说,当前目录是http://example.com下的,你不能外链http://google.com下的文件,http://example.com下的可以随便引用。

  • FlashDevelop开启SVN插件

Tools->Program Settings…->选择SourceControl。

在右边的SVN栏里面:

修改Enable SVN 为True
SVN Path 为TortoiseSVN安装目录下面的\bin\svn.exe(注意:可能找不到svn.exe,是因为安装的时候没有勾选CMD Line Tools,需要重新安装一下TortoiseSVN,注意全部勾选安装选项)
TortoiseSVN Proc Path 这个一般都正确。

重启FlashDevelop即可。

CentOS 7 搭建LEMP环境

注:E指engineX,即nginx

安装nginx

yum install nginx
systemctl enable nginx
systemctl start nginx
curl http://127.0.0.1

安装php

yum install php php-mysql php-fpm

 

编辑/etc/php.ini,修改:

cgi.fix_pathinfo=0

编辑/etc/php-fpm.d/www.conf,修改:

listen = /run/php-fpm/php-fpm.sock
...
listen.owner = nginx
listen.group = nginx
...
user = nginx
group = nginx
systemctl enable php-fpm
systemctl start php-fpm

vim /etc/nginx/default.d/default.conf,粘贴以下内容

index index.php index.html index.htm;
server_name your domain name or IP; 
# pass the PHP scripts to FastCGI server listening on the php-fpm socket 
location ~ \.php$ { 
try_files $uri =404; 
fastcgi_pass unix:/run/php-fpm/php-fpm.sock; 
fastcgi_index index.php; 
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
include fastcgi_params; 
}
重启nginx: systemctl restart nginx

安装MySQL/MariaDB

yum install mariadb mariadb-server
systemctl enable mariadb
systemctl start mariadb

配置安全:

mysql_secure_installation

重启mariadb:systemctl restart mariadb

测试nginx配置文件命令

nginx -t

nginx session问题
mkdir /var/lib/php/session
chown -R nginx:nginx /var/lib/php/session
Call to undefined function mb_strlen(); 问题
yum install php-mbstring
然后systemctl restart php-fpm
php 显示不了验证码
yum install php-gd
php创建xml失败
yum install php-xml
最后 systemctl restart php-fpm
如果使用firewalld防火墙,则使用以下命令开启http服务
配置防火墙在public区域永久开放http服务
firewall-cmd –permanent –zone=public –add-service=http

谷歌Material Design动画设计

无意中发现了Google Material Design 这样一个项目。

地址:https://material.google.com/

主要看了其中motion部分,觉得它的设计真的非常不错。

material design重视动画效果,它反复强调一点:动画不只是装饰,它有含义,能表达元素、界面之间的关系,具备功能上的作用。

easing

动画要贴近真实世界,就要重视easing。物理世界中的运动和变化都是有加速和减速过程的,忽然开始、忽然停止的匀速动画显得机械而不真实。考虑动画的easing,要先考虑它在现实世界中的运动规律。

水波反馈

所有可点击的元素,都应该有这样的反馈效果。通过这个动画,将点击的位置与所操作的元素关联起来,体现了material design动画的功能性。

转场效果

通过过渡动画,表达界面之间的空间与层级关系,并且跨界面传递信息。

从父界面进入子界面,需要抬升子元素的海拔高度,并展开至整个屏幕,反之亦然。

多个相似元素,动画的设计要有先后次序,起到引导视线的作用。

相似元素的运动,要符合统一的规律。

通过图标的变化和一些细节来达到令人愉悦的效果。

摘自:http://colachan.com/post/3416

在CentOS 7上安装Redis

Redis是一个开源的,先进的 key-value 存储可用于构建高性能,可扩展的 Web 应用程序的解决方案。Redis官方网网站是:http://www.redis.io/

安装编译工具

yum install gcc make -y

官网下载页下载最新版本的redis

curl http://download.redis.io/releases/redis-3.2.3.tar.gz -o redis-3.2.3.tar.gz

解压压缩包

tar zxvf redis-3.2.3.tar.gz

进入刚刚解压的文件夹,后面的cp命令拷贝redis相关的配置文件都是相对于该目录

cd redis-3.2.3

编译

make

安装

make install

创建redis配置目录

mkdir /etc/redis

创建工作与数据目录

mkdir -p /var/lib/redis

设置系统参数

设置内存分配策略

sysctl -w vm.overcommit_memory=1

优化somaxconn

sysctl -w net.core.somaxconn=512

禁用transparent huge pages

echo never > /sys/kernel/mm/transparent_hugepage/enabled

上面3个配置只是临时生效,重启会丢失,如果要永久修改则按如下处理:

编辑/etc/sysctl.conf,添加下面两行

net.core.somaxconn=512
vm.overcommit_memory=1

使之立即生效

sysctl -p

禁用透明大页(transparent huge pages)参考
https://docs.mongodb.com/manual/tutorial/transparent-huge-pages/

Redis配置

拷贝配置

cp redis.conf /etc/redis/redis.conf

编辑配置参数

vi /etc/redis/redis.conf

设置为守护进程修改daemonize no为

daemonize yes

检查pidfile

pidfile /var/run/redis_6379.pid

检查端口

port 6379

日志等级

loglevel notice

日志文件

logfile /var/log/redis/redis.log

持久化目录

dir /var/lib/redis

安全上可以考虑使用unixsocket

unixsocket /tmp/redis.sock
unixsocketperm 700

命令行测试的时候就使用

redis-cli -s /tmp/redis.sock

可以设置密码

requirepass “bTFBx1NYYWRMTUEyNHhsCg”

配置完毕,保存退出。

添加用户

useradd redis

更改目录权限

chown -R redis:redis /var/lib/redis
chown -R redis:redis /var/log/redis

设置开机启动

cp utils/redis_init_script /etc/init.d/redis

编辑服务

vi /etc/systemd/system/redis.service

粘贴以下代码

[Unit]
Description=Redis server

[Service]
User=redis
Group=redis
Type=forking
ExecStart=/etc/init.d/redis start
ExecStop=/etc/init.d/redis stop

[Install]
WantedBy=multi-user.target

开机启动

systemctl enable redis

启动服务

systemctl start redis

【完】

MongoDB从2.x升级到3.x后启动失败

今天把MongoDB从2.6升级到了3.2,升级后使用命令直接启动可以,但是使用systemctl启动服务总是失败。

提示:Failed to start SYSV …

折腾了好一会,原来是mongodb2.6的用户是mongodb,而mongodb3.2的用户是mongod,导致没有权限访问原来的文件,从而启动失败。

而直接用命令行启动,因为是root账户登录的,可以访问其他账户的文件,而不存在权限问题。

解决方法:
修改目录所有权

chown -R mongod:mongod /var/log/mongodb
chown -R mongod:mongod /var/lib/mongo

除了journalctl -xe 查看日志,还要注意查看/var/log/mongodb/下面的日志,好发现问题。

【注意】升级注意做好数据升级操作,参考网络上其他文章

升级后,进入mongo shell,如果有警告

** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always.'
**        We suggest setting it to 'never'

参考https://docs.mongodb.com/manual/tutorial/transparent-huge-pages/

CentOS 7 搭建ShadowSocks(ss)服务器

在搭建ss服务器之前,先谈一下CentOS 7与CentOS 6在主要使用上的区别。
1、服务管理由service命令变为systemctl命令。支持start、stop和status 3种动作。
2、防火墙由iptables变为firewalld。使用firewall-cmd进行操作。
firewalld的配置请参考如何在RHEL/CentOS 7以及Fedora中配置FirewallD

注意在查找资料的时候,搜索词应该加上CentOS 7,如: CentOS 7 安装ss服务器。减少搜索到CentOS6内容的机会。以免采用了iptables而使过程不顺利。

安装Shadowsocks

#安装 python setup tools
yum install python-setuptools -y
#安装pip
easy_install pip
#升级 pip
pip install –upgrade pip
#安装 shadowsocks
pip install shadowsocks

配置Shadowsocks

vi /etc/shadowsocks-libev/config.json

然后对照下面的修改

{
“server”:”0.0.0.0″,
“server_port”:8989,
“local_address”: “127.0.0.1”,
“local_port”:1080,
“password”:”mypassword”,
“timeout”:300,
“method”:”aes-256-cfb”,
“fast_open”: false,
“workers”: 1
}

将上面的mypassword替换成你的密码,server_port也是可以修改的,例如8980,method是加密方式,如果想在路由器上运行的话可以改成rc4-md5这样路由器的负荷会小一些,同时加密的安全性也不错。

创建 shadowsocks 服务, 随系统启动

vim /usr/lib/systemd/system/shadowsocks.service

写入下面的内容

[Unit]
Description=Shadowsocks Server
Documentation=https://github.com/shadowsocks/shadowsocks
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
#设置启动时的配置文件,根据自己的需求改.
ExecStart=/usr/bin/ssserver -c /etc/shadowsocks-libev/config.json
-d start
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/usr/bin/ssserver -d stop

[Install]
WantedBy=multi-user.target

保存退出

启动服务

systemctl enable shadowsocks
systemctl start shadowsocks

配置防火墙

firewall-cmd –permanent –add-port=8989/tcp
firewall-cmd –permanent –add-port=8989/udp
firewall-cmd –reload

到这里基本就可以了。客户端的使用方法还请自行搜索一下。

参考文章:
Centos 7安装配置Shadowsocks
CentOS 7 安装 Shadowsocks 科学上网

因时间有点久,搭建的过程主要是参考资料以及查看配置来写的,如果有错误,还请原谅。

附多用户的配置格式:

{
“server”:”0.0.0.0″,
“local_address”:”127.0.0.1″,
“local_port”:1080,
“timeout”:600,
“method”:”aes-256-cfb”,
“port_password”:
{
“8991”:”A用户密码”,
“8992”:”B用户密码”
}
}

搭建自己的Blog

买了个云服务器几个月了,仅仅搭建了一个ss服务器,有点太浪费了,终于有点空闲时间来鼓捣一个blog。

使用Vultr在硅谷的服务器,总体使用起来比较稳定,需要朋友可以去注册一个。

后续我会发布在Vultr基于CentOS7系统如何搭建ss,LEMP的文章。

有任何不懂的问题都可以留言或者关注公众号ryantechtop与我进行交流。

qrcode