linux c++开发环境_玩转 WSL 在 Win10 上打造 Linux 开发环境

2021-02-16 19:56:55 浏览数 (1)

参考链接: C quick_exit()

WSL 是 Windows Subsystem for Linux 的简称, 可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生虚拟机开销。

 安装 WSL

 1.开启 WSL

 首先需要使用管理员权限打开 PowerShell 执行如下命令

 Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

 或者在程序和功能选打开 适用于 Linux 的 Windows 子系统

 出现提示时,重启计算机。

 2.下载 Linux 发行版

 直接参考 WSL安装指南 使用 Microsoft Store 安装的方法无法将 Linux 安装到系统盘之外的分区,这里使用的是 手动下载 的方法。

 单击以下链接下载您喜欢的 Linux 的发行版,这里选的是 Ubuntu 20.04

 Ubuntu 20.04 LTSUbuntu 18.04 LTSDebian GNU/LinuxFedora Remix for WSLAlpine WSL

 3.安装 Linux 发行版

 使用 7-ZIP 或者其他工具解压下载的 appx 文件 ( 比如解压到 D:WSLUbuntu ) 然后运行 ubuntu2004.exe 需要等待一两分钟时间来完成安装,安装完成后,系统会提示创建新的用户帐户(及其密码)。

   如果需要使用 root 默认登录可以运行 

  ubuntu2004.exe config --default-user root

 4.配置 apt 国内源

  sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list

# 更新源

apt-get update

 5.设置系统语言为中文

  # 安装中文支持

apt-get install -y language-pack-zh-hans

# 设置默认语言

update-locale LANG=zh_CN.UTF-8

 配置开发环境

 以下部分只选择自己需要的项目配置即可

 1.配置服务自启动

 编辑 vim /etc/init.wsl 文件添加如下内容

  #! /bin/sh

# Filename: /etc/init.wsl

# Usage: /etc/init.wsl [start|stop|restart]

service dbus start

 开始 -> 运行 中输入 regedit 回车打开注册表编辑器 定位到 计算机HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun 后新建一个 REG_SZ 类型的值,名称随意,数值数据填写以下内容

 mshta vbscript:CreateObject("WScript.Shell").Run("wsl -d Ubuntu-20.04 -u root bash /etc/init.wsl",0,TRUE)(window.close)

 以后就可以向 /etc/init.wsl 追加服务,实现开启自启动了

 2.安装 golang 环境

  # 安装必要依赖

apt-get install -y git cmake

# 下载并解压

curl -o- https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz | tar zxf - -C /usr/local

# 修改 git 默认编辑器为 vim

git config --global core.editor vim

# 配置环境变量

cat >> /etc/profile.d/golang.sh << EOF

export GOPROXY=https://goproxy.cn,direct

export GOPATH=/opt/golang

export PATH=$PATH:$GOPATH/bin:/usr/local/go/bin

EOF

 安装 redis postgres 数据库

  apt-get install -y redis-server postgresql unzip

# 数据库初始化

pg_createcluster 12 main start

# 服务启动

service postgresql start

# 修改数据库密码

su postgres -c psql

postgres=# password

 数据库备份还原

  export PGPASSWORD=123456

# 导出

pg_dumpall -h 127.0.0.1 -U postgres -O -x -c --inserts --if-exists -f db.sql

# 导入

psql -h 127.0.0.1 -U postgres db.sql

 安装 consul 服务

  curl -o consul.zip https://releases.hashicorp.com/consul/1.8.0/consul_1.8.0_linux_amd64.zip

unzip -d /usr/local/bin consul.zip

 编辑服务脚本 /etc/init.d/consul

  #!/bin/sh

# Quick start-stop-daemon example, derived from Debian /etc/init.d/ssh

set -e

# Must be a valid filename

NAME=consul

PIDFILE=/var/run/$NAME.pid

#This is the command to be run, give the full pathname

DAEMON=/usr/local/bin/$NAME

DAEMON_ARGS="agent -server -bootstrap-expect=1 -bind=127.0.0.1 -data-dir=/opt/consul -ui -log-file=/var/log/$NAME"

case "$1" in

  start)

        echo -n "Starting daemon: "$NAME

    start-stop-daemon --start --background --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS

        echo "."

    ;;

  stop)

        echo -n "Stopping daemon: "$NAME

    start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE

        echo "."

    ;;

  restart)

        echo -n "Restarting daemon: "$NAME

    start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDFILE

    start-stop-daemon --start --background --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS

    echo "."

    ;;

  *)

    echo "Usage: "$1" {start|stop|restart}"

    exit 1

esac

exit 0

 3.安装 nodejs 环境

  # 安装 Node Version Manager

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.1/install.sh | bash

# 安装 v10 的 Node

source ~/.bashrc

nvm install 10

# 解决 npm install 失败的问题

npm config set unsafe-perm=true

 4.安装 nginx php 环境

  # 安装

apt-get install -y nginx php-fpm

# 启动 fpm

service php7.4-fpm start

# 启动 nginx

service nginx start

# 编辑 nginx 配置

vim /etc/nginx/sites-available/default

 配置添加如下内容

  location ~ .*.php(/.*)*$ {

        include snippets/fastcgi-php.conf;

        # 设置监听端口

        fastcgi_pass unix:/run/php/php7.4-fpm.sock;

    }

    # 用于伪静态

    if (-f $request_filename/index.html) {

        rewrite (.*) $1/index.html break;

    }

    if (-f $request_filename/index.php) {

        rewrite (.*) $1/index.php;

    }

    if (!-f $request_filename) {

        rewrite (.*) /index.php;

    }

 卸载 WSL

 cmd 下输入 wslconfig /l,可以看到所有已安装的发行版

  rem 卸载删除wsl

wslconfig /u <DistributionName>

0 人点赞