rust-lang环境安装

一、安装Rust
1、如果你之前使用了一个有Windows下GUI安装向导的.msi文件安装了Rust,请到控制面板->程序与功能(添加/删除程序)里卸载。

2、设置安装路径。默认它会把Rust装到你的~/.rustup 里,依赖库下载到~/.cargo 里。需要修改的话,设置环境变量RUSTUP_HOME 和 CARGO_HOME 分别修改这两个值(例如D:\.rustup和D:\.cargo)。

RUSTUP_HOME=D:\.rustup
CARGO_HOME=D:\.cargo

4、配置代理#1:国内有些地区访问Rustup的服务器不太顺畅,可以配置中科大的Rustup镜像:设置环境变量

RUSTUP_DIST_SERVER=http://mirrors.ustc.edu.cn/rust-static
RUSTUP_UPDATE_ROOT=http://mirrors.ustc.edu.cn/rust-static/rustup

安装过程中出现以下选项
Proceed with installation (default)
Customize installation
Cancel installation
选(Customize installation)进行自定义安装 会一步一步问你
1)个问你是否用 default host tripe 我选的是 x86_64-pc-windows-gnu(https://github.com/rust-lang-nursery/rustup.rs/#other-installation-methods) 下面有一大堆版本可以选。
假设你是Windows环境,打算编译64位程序,你应该用的是:

x86_64-pc-windows-msvc

x86_64-pc-windows-gnu

这两个各有优缺点:
x86_64-pc-windows-msvc是基于微软的链接器的,稳定性比较好,缺点是依赖的第三方库比较难弄,而且安装时你还需要再装一个微软的Visual C++ Build Tools(含Windows SDK;如果你机器上有Visual Studio就不用装Build Tools了);到这里去下载 http://landinghub.visualstudio.com/visual-cpp-build-tools ,装2015的。(2017的用起来会有点麻烦,Rust团队会在2017年8月解决。如果你看到这篇文章晚于那个时候了,装2017也可以)
x86_64-pc-windows-gnu是基于gnu开发工具的windows移植版本的,潜在的bug会多一些,但是第三方库反而容易弄(MSYS2的问题回头再说)
如果需要的话,可以两个都装的,这里你选一个版本就好。
2)个会问你 用哪个版本(stable/beta/nightly/none)我输入 stable
3)个会问你是否 默认修改环境变量 (这个无所谓了可以后期改) 我选是

5、在. cargo 文件夹根目录下创建一个 config 文件 没有任何文件后缀, 内容为:

[registry]
index = "https://mirrors.ustc.edu.cn/crates.io-index/"
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'
[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index/"

6、将 cargo 加入 path 环境变量:

%CARGO_HOME%\bin

前期工作就可以了 那么打开 cmd 输入
检查 rustup 有无安装成功

rustup -v
cargo -v

二、安装工具链
因为RLS必须使用nightly版本,所以需要同时安装以下两个工具链

stable-x86_64-pc-windows-gnu
nightly-x86_64-pc-windows-gnu

三、安装相关工具

cargo install rustfmt
cargo install rustsym
cargo install racer

四、项目管理
Rust中一般使用cargo管理项目,比如:
创建项目

cargo new hellorust --bin

编译项目

cargo build --release

运行项目

cargo run --release

清理项目

cargo clean

五、给vscode安装rust插件
1、打开vscode,然后按CRTL+P打开面板,然后安装以下两个插件

ext install vscode-rust
ext install rust

然后按提示进行安装即可

2、vscode-rust安装过程中,提示如下错误(没有报错略过)
toolchain ‘nightly-x86_64-pc-windows-gnu’ does not contain component ‘rls’ for target ‘x86_64-pc-windows-gnu’
需要添加rustup的工具链如下,打开cmd工具输入以下命令

rustup component add rls-preview --toolchain nightly

3、设置vscode其中toolchain必须为nightly版本

"rust.mode": "rls",
"rust.rls": {
    "useRustfmt": true
},
"rust.rustup": {
    "toolchain": "nightly-x86_64-pc-windows-gnu",
    "nightlyToolchain": "nightly-x86_64-pc-windows-gnu"
}

go build 常见编译优化

一般情况下,go build 可以直接编译程序,无需额外的参数设定。
但在编译生产环境下使用的可执行程序时候,go build 的一些参数还是很有用的。

减小编译后可执行程序的大小

go build -ldflags '-w -s'

说明:
-w 禁止生成debug信息,注意使用该选项后,无法使用 gdb 进行调试
-s 禁用符号表
可以使用 go tool link –help 查看 ldflags 各参数含义

禁止gc优化和内联

go build -gcflags '-N -l'

说明:
-N 禁止编译优化
-l 禁止内联,禁止内联也可以一定程度上减小可执行程序大小
可以使用 go tool compile –help 查看 gcflags 各参数含义

Go Get安装一些第三方库-网络问题

由于限制问题,国内使用 go get 安装 golang 官方包可能会失败,如我自己在安装golint时,出现了以下报错:

$ go get -u -v golang.org/x/lint/golint
Fetching https://golang.org/x/lint/golint?go-get=1
https fetch failed: Get https://golang.org/x/lint/golint?go-get=1: dial tcp 216.239.37.1:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

不翻墙的情况下怎么解决这个问题?其实 golang 在 github 上建立了一个镜像库,如 https://github.com/golang/lint 即是 https://golang.org/x/lint 的镜像库
获取 golang.org/x/lint 包,其实只需要以下步骤:

mkdir -p $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/lint.git

#执行go install
go install golang.org/x/lint/golint

ps
go get实际是从互联网上下载或更新指定的代码包及其依赖包,并对它们进行编译和安装。所以上面的步骤需要手动go install一下代码包。
go get常用的辅助参数。

-insecure 允许非安全下载,主要是针对没有HTTPS的HTTP路径。
-u 这个很常见,有更新的话会覆盖本地的package,默认不会覆盖的。
-v 显示Log,即verbose.
-t 同时下载需要运行测试的package.
-d 只下载,但不安装package.

vscode for win10下安装phpcs

1. 下载并安装 Visual Studio Code
微软官网:https://code.visualstudio.com/
插件库:https://marketplace.visualstudio.com/#VSCode

2. 在Windows 10环境下安装PHP
2.1 下载自己中意的PHP版本(我选的是php-7.2.0-Win32-VC15-x64):
PHP官网:http://windows.php.net/download

2.2 将php-7.2.0-Win32-VC15-x64.zip 解压到D盘根目录(注:也可以解压到C盘),并将php-7.2.0-Win32-VC15-x64文件夹重命名为php,最终php路径如下(注意这个很关键,会影响到后面PHP_CodeSniffer组件的安装):

D:\php\

2.3 设置环境变量,允许执行PHP
打开高级系统设置(Win+R,然后输入sysdm.cpl打开即可进入,找到Path环境变量,把”D:\php”这个路径加到里面)

2.4 检查PHP环境是否正常(Win+R,然后输入CMD运行,然后执行php -h命令)如下

php -h

2.5 重命名 php.ini ,在php根目录会找到以下两个文件:
php.ini-development 开发测试用
php.ini-production 安全性高,适合线上

这里我选择将php.ini-production重命名为php.ini

3. 安装pear库(您也可以另外用composer库,直接看第4步)
3.1 下载http://pear.php.net/go-pear.phar
3.2 复制go-pear.phar文件到C:\php目录
3.3 继续运行CMD然后确保已经cd到了C:\php>,执行以下命令

D:\php>php go-pear.phar

遇到:
Are you installing a system-wide PEAR or a local copy?
(system|local) [system] :
输入local继续(什么都不输直接回车,那么表示默认选择system,但这可能存在权限问题而终止)
后面就是yes,Y,回车,一步步按提示进行下去。

3.4 检查php.ini里面已经配置好,结尾会看到:

include_path=".;D:\php\pear"

(如果是PHP7可能默认已经做了路径指向,因此pear装完后不会有这句代码)

3.5 CMD里面执行pear,如果返回相应内容即表示pear安装成功:

4. 安装PHPcs
以下是最关键一步,运行CMD,执行以下命令:

D:\php>pear install PHP_CodeSniffer
WARNING: channel "pear.php.net" has updated its protocols, use "pear channel-upd
ate pear.php.net" to update
downloading PHP_CodeSniffer-2.0.0.tgz ...
Starting to download PHP_CodeSniffer-2.0.0.tgz (448,559 bytes)
................................................................................
..........done: 448,559 bytes
ERROR: failed to mkdir C:\php\pear\tests\PHP_CodeSniffer\CodeSniffer\Core\File

如果出现以下错误:
ERROR: failed to mkdir C:\php\pear\tests\PHP_CodeSniffer\CodeSniffer\Core\File

需要设置如下配置,以管理员身份支行cmd分别输入以下命令

D:\php>pear config-set php_dir D:\php\pear
config-set succeeded

D:\php>pear config-set doc_dir D:\php\pear
config-set succeeded

D:\php>pear config-set cfg_dir D:\php\pear
config-set succeeded

D:\php>pear config-set data_dir D:\php\pear
config-set succeeded

D:\php>pear config-set test_dir D:\php\pear
config-set succeeded

D:\php>pear config-set www_dir D:\php\pear
config-set succeeded
 
D:\php>pear install PHP_CodeSniffer
WARNING: channel "pear.php.net" has updated its protocols, use "pear channel-upd
ate pear.php.net" to update
downloading PHP_CodeSniffer-2.0.0.tgz ...
Starting to download PHP_CodeSniffer-2.0.0.tgz (448,559 bytes)
.............................done: 448,559 bytes
install ok: channel://pear.php.net/PHP_CodeSniffer-2.0.0

5. 安装PHP CodeSniffer for Visual Studio Code插件(英文介绍)
5.1 打开 Visual Studio Code;
5.2 在Windows下面按快捷键 Ctrl+P 或者 Mac下面 Cmd+P 来快捷打开对话框;
5.3 键入 ext install phpcs 找到插件:
5.4 直接回车或者点那个云图标来下载和安装此插件;
5.5 重启 Visual Studio Code 就可以享用此强大IDE了。

nginx(openresty)升级ssl模块 以支持 HTTP/2

我们并不需要升级系统自带的 openssl,因为随便升级 openssl 会带来安全风险。我们只下载 openssl 1.0.2 源码包,借助它来重新编译(相当于重新安装)服务器上的 NginX 即可。一旦成了 built with OpenSSL 1.0.2,就意味着能够支持 http/2 了。

1、下载并解压 OpenSSL

cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.0.2-latest.tar.gz
tar -zxf openssl-1.0.2-latest.tar.gz

2、修改编译参数

#指定opensll包位置
--with-openssl=/usr/local/src/openssl-1.0.2m

#开启ssl模块
--with-http_ssl_module

#开启http/2模块
--with-http_v2_module

#编译报错是“collect2: ld returned 1 exit status”需要指定pcre8.36及以上版本
--with-pcre=/usr/local/src/pcre-8.40

3、开启ssl 修改配置

server {
    listen       443 ssl;
    server_name  localhost;
    ....
}

4、开启http/2 修改配置

server {
    listen       443 ssl http2;
    server_name  localhost;
    ....
}

附:
pcre下载:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

CentOS 安装(升级) OpenSSL

CentOS 6.x(7.x) 的 OpenSSL 软件版本实在是低,2017 年了还在用人家 2013 年的版本,而且 1.0.1 版本对 ALPN 不支持,已经没法跟上大环境的节奏了
可以看一下默认自带的版本

# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013

所以我们有必要升级 OpenSSL 到 1.0.2 版本
以下所有操作均需在 root 用户下进行
1、安装必要软件

yum install gcc gcc-c++ autoconf automake zlib zlib-devel pcre-devel

2、下载并解压 OpenSSL

cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.0.2-latest.tar.gz
tar -zxf openssl-1.0.2-latest.tar.gz

3、编译安装 OpenSSL

cd openssl-1.0.2*
./config
make && make install

4、移除旧版本 OpenSSL

mv /usr/bin/openssl /tmp/
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

好了,大功告成,查看一下现在的版本

# openssl version
OpenSSL 1.0.2m  26 Jan 2017

一个git的使用错误unable to read askpass

今天在git push origin master时,竟然出现了错误 (gnome-ssh-askpass:32737): Gtk-WARNING **: cannot open display: error: unable to read askpass response from ‘/usr/libexec/openssh/gnome-ssh-askpass’根本原因是执行了该脚本

$ cat /etc/profile.d/gnome-ssh-askpass.sh
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass

解决方式

$ unset SSH_ASKPASS

再次执行git

$ git push origin master

不再提示错误。

centos一键安装最新内核并开启BBR脚本

最近,Google 开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,最新的 4.11 版内核已经用上了该算法。根据以往的传统,Google 总是先在自家的生产环境上线运用后,才会将代码开源,此次也不例外。
根据实地测试,在部署了最新版内核并开启了 TCP BBR 的机器上,网速甚至可以提升好几个数量级。
于是我根据目前三大发行版的最新内核,开发了一键安装最新内核并开启 TCP BBR 脚本。

本脚本适用环境

系统支持:CentOS 6+,Debian 7+,Ubuntu 12+
虚拟技术:OpenVZ 以外的,比如 KVM、Xen、VMware 等
内存要求:≥128M

一、关于BBR脚本

1、本脚本已在 Vultr 上的 VPS 全部测试通过。
2、当脚本检测到 VPS 的虚拟方式为 OpenVZ 时,会提示错误,并自动退出安装。
3、脚本运行完重启发现开不了机的,打开 VPS 后台控制面板的 VNC, 开机卡在 grub 引导, 手动选择内核即可。
4、由于是使用最新版系统内核,最好请勿在生产环境安装,以免产生不可预测之后果。

二、BBR脚本使用方法
使用root用户登录,运行以下命令:

$ wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh
$ chmod +x bbr.sh
$ ./bbr.sh

安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。
重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下命令:

$ uname -r
4.13.5-1.el6.elrepo.x86_64
$ sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = bbr cubic reno
$ sysctl net.ipv4.tcp_congestion_control
net.ipv4.tcp_congestion_control = bbr
$ sysctl net.core.default_qdisc
net.core.default_qdisc = fq
$ lsmod | grep bbr
tcp_bbr                16384  10

三、内核升级方法
如果是 CentOS 系统,执行如下命令即可升级内核:

$ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
$ rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
$ yum --enablerepo=elrepo-kernel -y install kernel-ml kernel-ml-devel

CentOS 6 的话,执行命令:

$ sed -i 's/^default=.*/default=0/g' /boot/grub/grub.conf

CentOS 7 的话,执行命令:

$ grub2-set-default 0

特别说明
1、如果你使用的是 Google Cloud Platform (GCP)更换内核,有时会遇到重启后,整个磁盘变为只读的情况。只需执行以下命令即可恢复:

$ mount -o remount rw /

2、如果你使用的是 Linode ,那么无需更换内核,只需修改配置即可开启 BBR:

$ sed -i '/net.core.default_qdisc/d' /etc/sysctl.conf
$ sed -i '/net.ipv4.tcp_congestion_control/d' /etc/sysctl.conf
$ echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf
$ echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf
$ sysctl -p

参考博文
https://github.com/iMeiji/shadowsocks_install/wiki/%E5%BC%80%E5%90%AFTCP-BBR%E6%8B%A5%E5%A1%9E%E6%8E%A7%E5%88%B6%E7%AE%97%E6%B3%95

https://teddysun.com/489.html

linux下使用yum安装gcc的几点心得

1、安装gcc和gcc-c++

$ yum -y install gcc
$ yum -y install gcc-c++

#或者

$ yum groupinstall "Development Tools"

#或者

$ yum install gcc gcc-c++ kernel-devel

2、yum安装包时提示libstdc++版本冲突

$ yum downgrade libgomp
$ yum downgrade libstdc++
$ yum downgrade libgcc
$ yum downgrade cpp

centos下安装git

git是当下比较流行的代码版本管理工具,开源并且免费使用。下面介绍一下安装过程。
1、下载安装包

$ wget https://www.kernel.org/pub/software/scm/git/git-2.13.2.tar.gz

2、卸载系统自带的git

yum remove git

3、安装必要的依赖包

$ yum -y install perl-devel perl-CPAN tcl tk gettext gettext-devel zlib-devel curl-devel

4、编译安装

$ tar -zxvf git-2.13.2.tar.gz
$ cd git-2.13.2
$ ./configure
$ make
$ make install

5、创建链接文件(默认情况下安装到/usr/local/bin/git)

$ ln -s /usr/local/bin/git /usr/bin/git
$ git --version
git version 2.13.2

到此安装完成