前言
由于前两天我电脑重装了,所以编程环境需要重新配置。
正好,趁此机会,重新梳理下wsl的安装,以及Linux下各种中间件的安装与配置。
准备工作
首先,先确认自己主板是否开启了虚拟化,在任务管理器中,是否能看到虚拟化已启用。不然先去bios里开启虚拟化
安装wsl
#更新wsl
wsl --update
#查看当前有哪些可安装版本
wsl --list --online
#安装一个合适的版本
wsl --install -d Ubuntu-24.04
执行安装后,设置账号名和密码,进入下一步。
windows访问wsl和wsl访问windows
在windows中想访问wsl中部署的服务,那十分简单,直接用localhost访问即可
如果想在wsl中访问windows中的服务,则不能使用localhost
我们可以在/etc/resolv.conf文件中,查看windows对应的ip
vim /etc/resolv.conf
以root用户登录
实际开发中,还是root方便
vim /etc/wsl.conf
[user]
default=root
而后退出再进
exit
wsl
安装JDK,python,gcc,git等基础编程环境
更新apt-get
sudo apt-get update
创建默认目录
刚安装的Ubuntu,用户目录下文件夹是空的,我通常习惯这样建目录,方便文件管理
cd ~ #进入用户目录
pwd #查看所处位置
ls #查看当前目录
mkdir DOWNLOAD #下载文件夹
mkdir DOCUMENTS #代码、文档等内容
mkdir SDK #一些编程库
mkdir SOFTWARE #第三方软件安装位置
安装JDK
打开windows资源管理器,进入如下界面
去JDK官网下载JDK
我这里用的JDK11,可以下载这个Linux x64 Compressed Archive
而后,把刚才下载的压缩包拖进图中的目录
为JDK 创建文件夹
cd SDK
mkdir jdk
cd jdk
cd ~/DOWNLOAD/
tar -zxvf jdk-11.0.16.1_linux-x64_bin.tar.gz -C ~/SDK/jdk
cd ~/SDK/jdk
mv jdk-11.0.16.1 11
cd 11/bin
./java --version
能看到如下提示,说明第一步成功
java 11.0.16.1 2022-08-18 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.16.1+1-LTS-1)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.16.1+1-LTS-1, mixed mode)
而后,开始配置环境变量
cd /etc/profile.d
sudo vim java.sh
而后在java.sh中编辑如下内容
version=11
export JAVA_HOME=/home/hataksumo/SDK/jdk/$version
export PATH=$JAVA_HOME/bin:$PATH
让该shell生效
sudo chmod +x java.sh
source /etc/profile
cd ~
java --version
下面,我们写一个简单的helloworld,尝试下好不好用
一定记住,Java文件要在Linux里创建,编辑可以在windows下做。
mkdir ~/DOCUMENTS/test/java/
cd ~/DOCUMENTS/test/java/
vim HelloWorld.java
public class HelloWorld {
public static void main(String args[]){
System.out.println("hello");
}
}
javac HelloWorld.java
java HelloWorld
安装cpp环境
和之前一样,先创建文件夹,然后编写个测试的hello_world
mkdir ~/DOCUMENTS/test/cpp/
cd ~/DOCUMENTS/test/cpp/
vim HelloWorld.cpp
#include<cstdio>
int main()
{
printf("hello world\n");
return 0;
}
sudo apt install g++
g++ HelloWorld.cpp -o HelloWorld
./HelloWorld
安装python环境
首先去官网下载python
然后把下载的文件托到~/DOWNLOAD
安装python编译所需要的库
sudo apt-get install -y build-essential checkinstall libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
sudo apt-get dist-upgrade
sudo apt-get install -y build-essential libncursesw5-dev libgdbm-dev libc6-dev zlib1g-dev libsqlite3-dev tk-dev libssl-dev openssl libffi-dev wget
sudo apt install make
cd ~/DOWNLOAD
mkdir ~/SOFTWARE/python
tar -zxvf Python-3.11.0.tgz -C ~/SOFTWARE/python
cd ~/SOFTWARE/python
mv Python-3.11.0 3.11.0
cd 3.11.0
mkdir ~/SDK/python/3.11
./configure --prefix=/home/hataksumo/SDK/python/3.11 --enable-optimizations
sudo make
sudo make install
创建软连接
sudo rm -rf /usr/bin/python3 /usr/bin/python
sudo ln -s /home/hataksumo/SDK/python/3.11/bin/python3 /usr/bin/python3
sudo ln -s /home/hataksumo/SDK/python/3.11/bin/python3 /usr/bin/python
sudo rm -rf /usr/bin/pip3 /usr/bin/pip
sudo ln -s /home/hataksumo/SDK/python/3.11/bin/pip3 /usr/bin/pip3
sudo ln -s /home/hataksumo/SDK/python/3.11/bin/pip3 /usr/bin/pip
python --version
pip --version
创建一个简单hello world看看是否好用
cd ~
mkdir DOCUMENTS/test/python
cd DOCUMENTS/test/python
vim hello_world.py
print("hello world")
python hello_world.py
安装完python后,apt-get可能会出现异常
File "/usr/lib/cnf-update-db", line 8, in <module>
进入user/bin,使用ls python*,查看系统用的python版本,我这里是3.8
修改一下/usr/lib/cnf-update-db文件,把#!/usr/bin/python3改为#!/usr/bin/python3.8
再次运行sudo apt-get update就可以发现没问题了
另一种方法
apt download python3-minimal
sudo apt install --reinstall ./python3-minimal_*.deb
sudo apt install -f
安装mysql
sudo apt install mysql-server
sudo service mysql stop
sudo usermod -d /var/lib/mysql/ mysql
sudo service mysql start
而后,设置mysql的账户。通常,我习惯设置一个root用户用于mysql的管理,设置一个dbMgr用于远程数据库管理,设置一个app账户,用于外部程序的连接。
设置root账户
sudo mysql
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'setRoot@1314';
mysql> flush privileges;
mysql> exit;
sudo mysql_secure_installation
如果设置root密码时,出现ERROR 1396。那有可能当前的root用户不是的host不是%,那就按如下操作
mysql> show databases;
mysql> use mysql;
mysql> update user set host = "%" where user = "root";
mysql> flush privileges;
之后就可以更改了
在mysql安全选择中,可以设置你自己的root密码,密码强度我一般选择为1,删除测试用户,删除test数据库,允许远程访问root
而后,修改mysql配置,让远程可以访问
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address 和 mysqlx-bind-address 全改成 0.0.0.0
sudo service mysql restart
设置dbMgr和app
mysql> create role role_dbMgr;
mysql> create role role_app;
mysql> GRANT ALL ON *.* to role_dbMgr;
mysql> GRANT SELECT,UPDATE,INSERT,DELETE ON *.* to role_app;
mysql> select user,authentication_string,plugin,host from user;
mysql> CREATE USER 'dbMgr'@'%' IDENTIFIED WITH caching_sha2_password by 'qqhilvMgAl@7' DEFAULT ROLE role_dbMgr COMMENT 'database manager';
mysql> CREATE USER 'app'@'%' IDENTIFIED WITH caching_sha2_password by 'ILv0404@1314' DEFAULT ROLE role_app COMMENT 'app user';
mysql> flush privileges;
安装redis
去官网下载redis
和之前一样,把下载好的压缩包放到DOWNLOAD目录下
cd ~/DOWNLOAD
mkdir ~/SOFTWARE/redis
tar -zxvf redis-stable.tar.gz -C ~/SOFTWARE/redis
cd ~/SOFTWARE/redis
mv redis-stable current
cd current
sudo make
sudo make install
vim redis.conf
修改以下配置
requirepass ilv0404@1314 #连接密码
daemonize yes #用守护进程启动
logfile /home/hataksumo/SDK/redis/current/log #log文件存放位置
dir /home/hataksumo/SDK/redis/current #指定dump.rdb路径
dbfilename dump.rdb
查找字段时,可以/XXXX,按回车,n向后查找
sudo mkdir /etc/redis
sudo cp redis.conf /etc/redis/6379.conf
sudo cp utils/redis_init_script /etc/init.d/redisd
sudo service redisd start
sudo service redisd stop
sudo service redisd start
redis-cli
auth ilv0404@1314
keys *
由于设置了了redis的密码,故需要魔改/etc/init.d/redisd,不然使用service redisd stop时会报错
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
PASSWD="ilv0404@1314"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -a $PASSWD -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
安装nacos
先去官网下载一下nacos的包
同样的,把该包托到DOWNLOAD目录下
cd ~/DOWNLOAD
mkdir ~/SOFTWARE/nacos
tar -zxvf nacos-server-2.1.2.tar.gz -C ~/SOFTWARE/nacos
cd ~/SOFTWARE/nacos
把nacos的数据库结构导入现有数据库
mysql -u dbMgr -p
mysql> create database nacos;
mysql> use nacos;
mysql> source ~/SOFTWARE/nacos/2.1.2/conf/mysql-schema.sql;
mysql> exit;
mysql -u root -p
mysql> create role role_nacos;
mysql> GRANT ALL ON nacos.* to role_nacos;
mysql> CREATE USER 'nacos'@'%' IDENTIFIED WITH caching_sha2_password by 'nacos@MgAl@7' DEFAULT ROLE role_nacos COMMENT 'nacos manager';
修改nacos的配置application.properties
把数据库相关的配置打开
如果用的mysql8.0,记得把usessh给删掉,因为我们就是要用这个。还有,连接时间改长些,以免出现问题
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useUnicode=true&serverTimezone=UTC
db.user.0=nacos
db.password.0=nacos@MgAl@7
修改nacos/bin 中的startup.sh
export MODE="standalone" #改成单体模式,我们开发不需要做集群
查看能否启动成功
在windows下访问localhost:8848/nacos
如果进入登陆界面,账号密码都输出为nacos,即可进入nacos的管理界面,点击登录见到如下界面则宣告完成。
安装docker
docker安装可以先上官网
我用的Ubuntu,我这里只谈Ubuntu的。
查看以下自己Ubuntu的版本:
lsb_release -a
卸载老版本
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
安装
#Set up the repository
#Update the apt package index and install packages to allow apt to use a repository over HTTPS:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
#Add Docker’s official GPG key:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
#Use the following command to set up the repository:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
#Install Docker Engine
#Update the apt package index:
sudo apt-get update
#To install the latest version, run:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
纠错
如果出现这种错误:
newaliases: fatal: bad string length 0 < 1: mydomain =
dpkg: error processing package postfix (--configure):
installed postfix package post-installation script subprocess returned error exit status 75
Errors were encountered while processing:
postfix
可以用以下方法粗暴解决
sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/info_old/
sudo mkdir /var/lib/dpkg/info/
sudo apt-get update
建一个开机启动脚本
由于机制原因,wsl开机自启动很麻烦,我也懒得倒腾了,干脆写个init的脚本放用户目录下,每次开机手动调用算了
cd ~
vim init_start.sh
脚本内容
sudo service mysql restart
sudo service redisd restart
#启动nacos
cd ~/SOFTWARE/nacos/2.1.2/bin
./startup.sh
让文件变得可执行
chmod +x init_start.sh
备份wsl
准备工作已经做好,那我们就把wsl的镜像备份以下,以免以后把Ubuntu玩坏了
wsl --export Ubuntu D:\WSL1\ubuntu-2023-06-10.tar
如果以后玩坏了,就是用这个命令导入
wsl --unregister Ubuntu
wsl --import Ubuntu D:\WSL1\ubuntu-2023-06-10.tar
好的,这次就先写到这里了。
以后需要安装其他中间件,在其他的帖子里写了