第二篇 开发环境基础系统配置
本系列分享在 Windows 10 中打造一个 图形界面与命令行完全结合的开发环境。
接 第一篇 WSL安装,第二篇 开发环境基础系统配置。
本例内容目标:
1 vim 编辑文件时光标字符是 p
2 sshd 服务开启
3 Ubuntu 包管理源替换为阿里,系统更新。
4 系统环境基础配置
5 nodeJS 基础开发环境部署
本例所有命令行默认为 WSL 的命令行,非 Windows 的 CMD 中。
1 vim 编辑文件时光标所在字符是 p
这个原因是Linux终端类型不同导致的。什么是 Linux终端啦?请 google 或 百度不难理解。
解决它需要设置一个系统环境变量,编辑 ~/.bashrc 文件(用户登录终端会自动执行此脚本文件)。
vim ~/.bashrc
本例推荐在文件末尾添加如下代码 。
export TERM=rxvt
[ -n "${SSH_TTY}" ] && export TERM=linux
第一行: 配置终端类型为 rxvt 。
第二行: 条件变量 ${SSH_TTY} 为非空字符串时,改设置终端类型为linux,为 ssh 登录配置终端类型。
再用 vim 编辑文件时,光标所在字符不是 p 了。
验证设置是否生效: 关闭WSL 命令行,重新打开输入命令验证。
echo $TERM
2 sshd 服务开启
WSL子系统默认 sshd 不能直接启动的,处于安全考虑吧。Linux 系统没有 ssh 当然很不方便,命令行er 都知道。
要求:sshd 服务配置,必须保证安全,也同时保证 ssh 方便。本例使用常见的秘钥对。
1 编辑 /etc/ssh/sshd_config 文件
vim /etc/ssh/sshd_config
修改配置如下:
主要是为了使用ssh-key安全的远程登录Linux ,禁止使用密码远程登录。
Port 2200 # 修改默认监听端口
ListenAddress 0.0.0.0 # 监听本机所有IP地址
PermitRootLogin yes # 允许 root 远程登录
PasswordAuthentication yes # 禁止通过密码验证远程登录
UseDNS no # 禁止主机DNS解析,加快登录。
2 生成登录的秘钥对
1 执行命令 ssh-keygen ,一直回车即可。
ssh-keygen
自动在 ~/.ssh/ 目录生成两个文件 id_rsa(私钥) id_rsa.pub(公钥)
2 将公钥加入认证文件 authorized_keys 中。
cd ~/.ssh/ # 进入目录 ~/.ssh/
cat id_rsa.pub >> authorized_keys # 追加 id_rsa.pub 的内容到 authorized_keys
chmod 600 authorized_keys # 修改文件访问权限为 600,只 root 用户能读取
3 生成 sshd 服务所需要的密钥(默认没有密钥 sshd 不能启动)
dpkg-reconfigure openssh-server
启动 sshd 服务
/etc/init.d/ssh restart
打开 windows CMD 命令行查看监听端口 2200
netstat -ay
4 验证 ssh key 登陆,我们设置了监听端口为 2200 -p 指定下。
ssh -p 2200 127.0.0.1
第一次登陆需要输入 yes,然后不需要输入密码成功登陆。
Last login: Tue Sep 10 10:05:00 2019 from 192.168.0.43,本机内网 IP 192.168.0.43
Ctrl + d 退出登陆 再测试用 192.168.0.43 登陆
ssh -p 2200 192.168.0.43
Last login: Tue Sep 10 10:43:14 2019 from 127.0.0.1 这次是从 127.0.0.1 登陆
笔者习惯 SecureCRT 远程登陆,同时验证前面设置终端类型的代码也生效了。
至此 sshd 服务与 ssh 秘钥对 登陆设置完成。
笔者建议:
大家看到这里,多半想到可以方便的在家 ssh 远程登录办公了(公司路由做端口映射),笔者不推荐,WSL 不是完备的系统可能有未知BUG,iptables 也是不能用的。
推荐在家远程办公使用 OpenVPN 服务,非常的安全,稳定,可靠。(大家感兴趣可以留言,我找时间分享,关键要实现网络唤醒已经关闭的办公主机,很多公司不关机被罚款的),前提肯定是公司要有固定IP才方便远程办公。
3 Ubuntu 包管理源替换为阿里源
编辑文件 /etc/apt/sources.list ,内容全部替换掉。
vim /etc/apt/sources.list
ubuntu 18.04 配置如下
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
我们来验证下,更新源。
apt -y update
源替换成功,我们再验证更新系统,更新了一大堆包。
apt -y upgrade
至此源替换与系统更新完成。
4 系统环境基础配置
要方便使用 WSL 的 bash 环境,我们设置一些常用的别名和必要的系统服务自启动。
不推荐将 sshd 服务弄到 windows 的服务里开机自启动。
需要时我们手动启动 WSL 命令行时自动启动 sshd 服务。
vim ~/.bashrc
文件末尾追加代码 ,判断 sshd 服务启动进程不等于 2 就重启SSHD服务,简单粗暴却有效。
if [ $(ps -ef|grep -c '/usr/sbin/sshd') != 2 ];then
/etc/init.d/ssh restart
fi
常用命令都用别名配置,以笔者常用命令为例,极大提高效率。
alias vimv='vim /etc/nginx/conf.d/js.conf'
alias cdt='cd /mnt/d/js/'
alias nrs='npm run serve'
alias ns='npm start'
alias nrd='npm run dev'
source ~/.bashrc 生效
命令输入 nrd 就等同于 npm run dev。这个别名较简单,大家自由发挥。
5 nodeks 基础开发环境部署
nodejs 前端同学开发的需求,但对Linux操作系统基本都不熟悉。
笔者也在折腾 nodejs 优先分享它的开发环境部署吧。
我们的 WSL 开发环境 推荐下载 Linux 二进制文件 (x64)
curl -Os https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-x64.tar.xz
下载后的文件长这样 `node-v${版本号}-linux-x64.tar.xz`, 解压到 /usr/local/ Linux 用户软件安装目录。
tar xf node-v10.16.0-linux-x64.tar.xz -C /usr/local/
cd /usr/local/
ln -s node-v10.16.0-linux-x64/ node # 做个软连接方便做系统环境变量,将来替换软连接变更版本
设置 nodejs 的系统环境变量
vim ~/.bashrc
文本末尾添加
export PATH=/usr/local/node/bin:${PATH}
让设置生效
source ~/.bashrc
验证
node -v
第二篇完结。
WSL与 JetBrains系 编辑器,sublime_text3 编辑器的结合放在 《第三篇 WSL与编辑器的结合 》中分享。
有问题请留言,喜欢请转载带上出处。谢谢!