Ubuntu 20.04从安装到配置全套避坑指南

目标:把一台虚拟机设置成网络服务器+啥都能干的电脑

目录

虚拟机的安装

虚拟机的基本配置

一、换源

二、安装vmtool(仅限于在上一步不听话取消更新的同学)

         三、安装nginx(听话的同学)

四、安装MySQL,php,wordpress

五、python常用库安装与ide环境设置

六、c/c++常用库安装与ide环境设置

虚拟机的形而上学

 一、electron-ssr


最近想用虚拟机搭个网络服务器,原以为两三天就会搞定,但我却估计错了它的复杂程度。光是重装就已经四五遍了,更别提配置很多东西,为了避 坑,也为了之后的安装之路顺遂平安,我写了这篇帖子,帮助新入坑的萌 新 避 坑!!!!!!!!!!

虚拟机的安装

安装之前的小tips:

如果电脑内存不够,千万别安装在本机上,你会非常后悔,建议自己买个固态硬盘,再来个好点的硬盘盒,所有虚拟机的设置全安在固态硬盘上

在这之后,噩梦才刚刚开始

首先你需要

VMware Workstation Pro

ubuntu-20.04.3-desktop-amd64.iso

在virtualbox和vmware之间,请你一定要选择vmware,它会比virtualbox好用的多

强烈建议安装vmware的专业版,不然复杂程度可能会超乎想象,特别是你某一步安错的时候

这两个都建议用迅雷安装,会很快

接下来就是配置安装

 

 

自己设置在哪个盘就安装在哪里

 

 

 

这里,请设成100G,不要吝惜你的内存,否则扩容是个大问题

 

 

然后点一下新CD适配器这里,把光盘烧进去

 

好的,请开始下一场表演:虚拟机的烧录

请在界面里开启你的虚拟机,就是那个绿色的箭头

有如下界面是正确的: 

 

 下一个界面会问你怎么安装

这里一定要选普通安装(nomal),我忘截图了,如果不清醒的话多去看看别人的博客,百度谷歌都没问题

像展示的这样选,弹出的这个窗口选continue

好的,接下来,请耐心等待,它让你重启,你就重启,不要犹豫

你会看到黑屏,还有一句话,大意是如果确定删除安装包你就按下Enter键,此时果断摁下

然后你会看到让你登录账号的选项,你有谷歌账户就登录谷歌,有其他就登录其他,这里不再赘述

最好是登录成功,不然会有更多东西让你头疼,没有请注册一个,有加速器的也赶快打开

 假设你已经设置完成,这个时候会有一个安装包弹出来,问你要不要安

这个一定要安装,因为它包括很多底层的依赖库,vmtool等等都包含在内

这期间时间会很漫长,你可以做一些别的东西,看书看电视剧,听音乐,吃饭都可以,唯独不要点下cancel

 

 它可能会因为网络问题失败很多次,但请你以最宽广的胸怀包容它的过失,不要放弃,多下载几遍,反复下载,相信功夫一定不负有心人

 

更新完毕之后,请保留快照,这样可以在配置失败的时候进行回滚,而不是重装系统

虚拟机的基本配置

一、换源

 点击一下software&update那个图标,

 

 去选择一下other

然后选择清华源,下载东西会快一些

 命令行方式可以参考别的博客,小白看我这个就没问题

之后让你干啥你干啥,别取消别跳过,reload之后reboot

不reboot也可以,你看看自己是否可以用清华源下载东西,可以的话就不用重新登录了

 

 二、安装vmtool(仅限于在上一步不听话取消更新的同学)

这样复制文件就可以直接从本机拖到虚拟机

不要用老式的光盘烧录方法,对我们亲爱的Ubuntu 20.04系统是完全不管用的,你要是头铁也可以试试,总会在最后一步让你崩溃

进入终端,输入三行命令

sudo apt upgrade
sudo apt install open-vm-tools-desktop -y
sudo reboot

耐心等待执行

 三、安装nginx(听话的同学)

进入命令行

sudo su
apt-get update
apt-get upgrade
apt-get install nginx

打开localhost

 

不听话的同学,请出门左转,或回滚快照,或重装系统,或点击updata图标,争取重新安装

 

 不要被没用且繁杂的安装方式浪费时间和资源

四、安装MySQL,php,wordpress

apt-get install mysql-server
mysql_secure_installation

 之后可以这样设置

 不要跳步,一步一步来,否则你一定后悔

 具体设置可以参见这篇博客,写的很详细

ubuntu搭建lnmp+wordpress_mobius0816的博客-CSDN博客

 最后效果是这样的

 

五、python常用库安装与ide环境设置

先安装一下常用的库和依赖库

sudo apt install python3-pip
sudo apt-get install python3.8-dev python3.8-tk tk-dev
sudo apt-get install libfreetype6-dev g++
pip3 install matplotlib
pip3 install pygal
pip3 install pygal_maps_world
pip3 install requests

然后可以输入python3,并在命令行内进行测试

考虑了很久,最后ide还是想着用pycharm,简单易用,设置也方便

官网链接:Thank you for downloading PyCharm!

#将安装包拷到桌面,然后执行如下命令(将解压后的包放在downloads目录)
tar -zxvf /home/****/Desktop/pycharm-community-2021.3.1.tar.gz -C /home/****/Downloads
#****为用户名
cd /home/****/Downloads/pycharm-community-2021.3.1/bin
./pycharm.sh

 

之后就可以照着提示设置了 

如果想要改变环境变量什么的,可以看官方文档

 六、c/c++常用库安装与ide环境设置

 c/c++我还是选择vim,不是说vscode不好,只是觉得在Linux系统上至少要保留一点个性

sudo apt-get install vim vim-scripts vim-doc
#网页版中文帮助文档网址http://vimcdoc.sourceforge.net/doc/help.html
cd ~
gedit .vimrc

 然后在这个文档中复制如下内容:

" This line should not be removed as it ensures that various options are
" properly set to work with the Vim-related packages available in Debian.
debian.vim

" Uncomment the next line to make Vim more Vi-compatible
" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous
" options, so any other options should be set AFTER setting 'compatible'.
set nocompatible

" Vim5 and later versions support syntax highlighting. Uncommenting the
" following enables syntax highlighting by default.
if has("syntax")
syntax on 
colorscheme ron " elflord ron peachpuff default 

" detect file type
filetype on
filetype plugin on

" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
set background=dark

" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
"have Vim load indentation rules and plugins according to the detected filetype
filetype plugin indent on
endif

" The following are commented out as they cause vim to behave a lot
" differently from regular Vi. They are highly recommended though.

"set ignorecase 
"set smartcase 
set autowrite " 自动把内容写回文件: 如果文件被修改过,在每个 :next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、CTRL-] 和 CTRL-^命令时进行;用 :buffer、CTRL-O、CTRL-I、'{A-Z0-9} 或 `{A-Z0-9} 命令转到别的文件时亦然。
set autoindent " 设置自动对齐(缩进):即每行的缩进值与上一行相等;使用 noautoindent 取消设置
"set smartindent " 智能对齐方式
set tabstop=4 " 设置制表符(tab键)的宽度
set softtabstop=4 " 设置软制表符的宽度
set shiftwidth=4 " (自动) 缩进使用的4个空格
set cindent " 使用 C/C++ 语言的自动缩进方式
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s "设置C/C++语言的具体缩进方式
"set backspace=2 " 设置退格键可用
set showmatch " 设置匹配模式,显示匹配的括号
set linebreak " 整词换行
set whichwrap=b,s,<,>,[,] " 光标从行首和行末时可以跳到另一行去
"set hidden " Hide buffers when they are abandoned
set mouse=a " Enable mouse usage (all modes) "使用鼠标
set number " Enable line number "显示行号
"set previewwindow " 标识预览窗口
set history=50 " set command history to 50 "历史记录50条


"--状态行设置--
set laststatus=2 " 总显示最后一个窗口的状态行;设为1则窗口数多于一个的时候显示最后一个窗口的状态行;0不显示最后一个窗口的状态行
set ruler " 标尺,用于显示光标位置的行号和列号,逗号分隔。每个窗口都有自己的标尺。如果窗口有状态行,标尺在那里显示。否则,它显示在屏幕的最后一行上。

"--命令行设置--
set showcmd " 命令行显示输入的命令
set showmode " 命令行显示vim当前模式

"--find setting--
set incsearch " 输入字符串就显示匹配点
set hlsearch

之后的界面中,就有语法高亮,段落空格等功能了

 

开始安装vim连带的一些库

#查看系统中已有的vim-scripts中包含的插件及其状态
vim-addons status
#因为ctags太老已经安不上了,所以这里用exuberant-ctags代替
sudo apt-get install exuberant-ctags
mkdir .vim
cd .vim
mkdir plugin
mkdir doc
vim-addons install omnicppcomplete
sudo vim /home/****/.vimrc

然后把这些内容复制进去

"-- omnicppcomplete setting --
" 按下F3自动补全代码,注意该映射语句后不能有其他字符,包括tab;否则按下F3会自动补全一些乱码
imap <F3> <C-X><C-O>
" 按下F2根据头文件内关键字补全
imap <F2> <C-X><C-I>
set completeopt=menu,menuone " 关掉智能补全时的预览窗口
let OmniCpp_MayCompleteDot = 1 " autocomplete with .
let OmniCpp_MayCompleteArrow = 1 " autocomplete with ->
let OmniCpp_MayCompleteScope = 1 " autocomplete with ::
let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert)
let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included files
let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype in popup window
let OmniCpp_GlobalScopeSearch=1 " enable the global scope search
let OmniCpp_DisplayMode=1 " Class scope completion mode: always show all members
"let OmniCpp_DefaultNamespaces=["std"]
let OmniCpp_ShowScopeInAbbr=1 " show scope in abbreviation and remove the last column
let OmniCpp_ShowAccess=1

然后是其他的几个库:taglist库

vim-addons install taglist
sudo vim /home/****/.vimrc

 把这些内容复制进去:

"-- Taglist setting --
let Tlist_Ctags_Cmd='ctags' "因为我们放在环境变量里,所以可以直接执行
let Tlist_Use_Right_Window=1 "让窗口显示在右边,0的话就是显示在左边
let Tlist_Show_One_File=0 "让taglist可以同时展示多个文件的函数列表
let Tlist_File_Fold_Auto_Close=1 "非当前文件,函数列表折叠隐藏
let Tlist_Exit_OnlyWindow=1 "当taglist是最后一个分割窗口时,自动推出vim
"是否一直处理tags.1:处理;0:不处理
let Tlist_Process_File_Always=1 "实时更新tags
let Tlist_Inc_Winwidth=0
文件浏览器和缓冲区管理器WinManager:
vim-addons install winmanager
sudo vim /home/****/.vimrc

 把这些内容复制进去:

"-- WinManager setting --
let g:winManagerWindowLayout='FileExplorer|TagList' " 设置我们要管理的插件
"let g:persistentBehaviour=0 " 如果所有编辑文件都关闭了,退出vim
nmap wm :WMToggle<cr>
buffer管理器MiniBufferExplorer:
vim-addons install minibufexplorer
sudo vim /home/****/.vimrc

 把这些内容复制进去:

" -- MiniBufferExplorer --
let g:miniBufExplMapWindowNavVim = 1 " 按下Ctrl+h/j/k/l,可以切换到当前窗口的上下左右窗口
let g:miniBufExplMapWindowNavArrows = 1 " 按下Ctrl+箭头,可以切换到当前窗口的上下左右窗口
let g:miniBufExplMapCTabSwitchBufs = 1 " 启用以下两个功能:Ctrl+tab移到下一个buffer并在当前窗口打开;Ctrl+Shift+tab移到上一个buffer并在当前窗口打开;ubuntu好像不支持
"let g:miniBufExplMapCTabSwitchWindows = 1 " 启用以下两个功能:Ctrl+tab移到下一个窗口;Ctrl+Shift+tab移到上一个窗口;ubuntu好像不支持
let g:miniBufExplModSelTarget = 1 " 不要在不可编辑内容的窗口(如TagList窗口)中打开选中的buffer



"--fold setting--
set foldmethod=syntax " 用语法高亮来定义折叠
set foldlevel=100 " 启动vim时不要自动折叠代码
set foldcolumn=5 " 设置折叠栏宽度


"-- QuickFix setting --
" 按下F6,执行make clean
map <F6> :make clean<CR><CR><CR>
" 按下F7,执行make编译程序,并打开quickfix窗口,显示编译信息
map <F7> :make<CR><CR><CR> :copen<CR><CR>
" 按下F8,光标移到上一个错误所在的行
map <F8> :cp<CR>
" 按下F9,光标移到下一个错误所在的行
map <F9> :cn<CR>
" 以上的映射是使上面的快捷键在插入模式下也能用
imap <F6> <ESC>:make clean<CR><CR><CR>
imap <F7> <ESC>:make<CR><CR><CR> :copen<CR><CR>
imap <F8> <ESC>:cp<CR>
imap <F9> <ESC>:cn<CR>

 cscope:

在你需要浏览源码的根目录下使用下面命令:$cscope -Rbkq

sudo apt-get install cscope
sudo vim /home/****/.vimrc

  把这些内容复制进去:

"-- Cscope setting --
if has("cscope")
set csprg=/usr/bin/cscope " 指定用来执行cscope的命令
set csto=0 " 设置cstag命令查找次序:0先找cscope数据库再找标签文件;1先找标签文件再找cscope数据库
set cst " 同时搜索cscope数据库和标签文件
set cscopequickfix=s-,c-,d-,i-,t-,e- " 使用QuickFix窗口来显示cscope查找结果
set nocsverb
if filereadable("cscope.out") " 若当前目录下存在cscope数据库,添加该数据库到vim
cs add cscope.out
elseif $CSCOPE_DB != "" " 否则只要环境变量CSCOPE_DB不为空,则添加其指定的数据库到vim
cs add $CSCOPE_DB
endif
set csverb
endif
map <F4> :cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>
imap <F4> <ESC>:cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>
" 将:cs find c等Cscope查找命令映射为<C-_>c等快捷键(按法是先按Ctrl+Shift+-, 然后很快再按下c)
nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<CR><CR> :copen<CR><CR>

使用时:

为源码建立一个cscope数据库

在根目录下

cscope -Rbq
ls cscope.*
#cscope.in.out  cscope.out  cscope.po.out
:cs add cscope.out
#末行模式下输入
#cscope数据库到vim

 大概就是这种显示页面:

之后就可以快乐使用vim了

相关命令帮助

进入vim后用命令":Tlist"打开/关闭taglist窗口
帮助文档
:help taglist.txt



:WMToggle 打开/关闭WinManage,不过我们在配置文件.vimrc中做了快捷键映射,所以直接按wm就可以打开/关闭WinManage
文件浏览器命令(在文件浏览器窗口中使用)
<enter>或双击  如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件
<tab>   如果光标下是目录, 则进入该目录; 如果光标下文件, 则在新窗口打开该文件
<F5> 刷新列表
-  返回上一层目录
c  使浏览目录成为vim当前工作目录
d  创建目录
D  删除当前光标下的目录或文件
i  切换显示方式
R  文件或目录重命名
s  选择排序方式
r  反向排序列表
x  定制浏览方式, 使用你指定的程序打开该文件
winmanager帮助文档
:help winmanager
netrw帮助文档
:help netrw



<Tab>  移到上一个buffer
<Shift-Tab> 移到下一个buffer
<Enter>  打开光标所在的buffer
d   删除光标所在的buffer



折叠方式foldmethod
vim提供以下6种方法来选定折叠方式:
manual 手工定义折叠
indent 更多的缩进表示更高级别的折叠
expr 用表达式来定义折叠
syntax 用语法高亮来定义折叠
diff 对没有更改的文本进行折叠
marker 对文中的标志折叠
折叠级别foldlevel
'foldlevel' 是个数值选项:数字越大则打开的折叠更多。
当 'foldlevel' 为 0 时,所有的折叠关闭。
当 'foldlevel' 为正数时,一些折叠关闭。
当 'foldlevel' 很大时,所有的折叠打开。
折叠栏foldcolumn
'foldcolumn' 是个数字,它设定了在窗口的边上表示折叠的栏的宽度。当为0时,没有折叠栏。最大是12。
一个打开的折叠由一栏来表示,顶端是 '-',其下方是 '|'。这栏在折叠结束的地方结束。当折叠嵌套时,嵌套的折叠出现在被包含的折叠右方一个字符位置。
一个关闭的折叠由 '+' 表示。
当折叠栏太窄而不能显示所有折叠时,显示一数字来表示嵌套的级别。
在折叠栏点击鼠标,可以打开和关闭折叠:
- 点击 '+' 打开在这行的关闭折叠
- 在任何其他非空字符上点击,关闭这行上的打开折叠



za  打开/关闭在光标下的折叠
zA  循环地打开/关闭光标下的折叠
zo  打开 (open) 在光标下的折叠
zO  循环打开 (Open) 光标下的折叠
zc  关闭 (close) 在光标下的折叠
zC  循环关闭 (Close) 在光标下的所有折叠
zM  关闭所有折叠
zR  打开所有的折叠
帮助文档
:help usr_28.txt
:help fold.txt



:help usr_30
:help quickfix
下面的命令运行 "make" (包括你所给出的参数) 程序并捕捉其运行结果: >
 :make {arguments}
如果编译时出现错误,按 <Enter>,回到vim界面,看不到出错信息了!这时,可以运行以下命令
:cw[indow]
打开quickfix窗口来查看出错信息,它会自动跳到第一处出错的地方。然后,你可以双击出错某一条出错信息,vim就会自动跳转到相应的出错位置
:cn[ext]  光标移到下一个错误所在的行
:cp[revious] 光标移到上一个错误所在的行
:cfirst  到第一处错误
:clast  到最后一处错误
:cc   空间不够时,Vim 会缩短出错信息。如果你想查看详细信息,可以使用此命令
:cl[ist] 列出所有出错信息的概览(只有那些含有文件名或行数的错误信息会被显示,需要查看那些并不含文件名或行数的信息可用“:cl[ist]!”命令)



帮助文档
:help if_cscop
注意:帮助文档if_cscop中,快捷键映射nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>是有误的!
比如光标“header.h”上按下<C-_>i,也就是查找包含“header.h“的文件。但是按照这个映射规则,则是将<C-_>i映射为cs find i ^header.h$,也就是查找包含“^header.h$“的文件,这显然不是我们想要的结果。该映射规则应该改成nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<CR><CR>

再就是vim自带的一些常用命令也需要记忆

虚拟机的形而上学

 一、electron-ssr

 

 

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值