资讯专栏INFORMATION COLUMN

Ubuntu踩过的坑

qc1iu / 359人阅读

摘要:前言初学走了好多坑,记录于此未写作先甩锅因为是初学很多技术和理解不一定准确到位,如有人参考本文知识,有偏差请见谅环境简单介绍是系统内核下众多分支之一,除此之外还有等,我的理解是属于再基础上的次开发的优势在于有基金会持续维护更新,而且解决了系

前言:初学Linux走了好多坑,记录于此

未写作先甩锅:因为是初学很多技术和理解不一定准确到位,如有人参考本文知识,有偏差请见谅

环境:ubuntu 16.4.1 server

简单介绍:ubuntu是Linux系统内核下众多分支之一,除此之外还有CentOS、Red Hat、Debian等,我的理解是ubuntu属于再Debian基础上的2次开发.Ubuntu的优势在于有基金会持续维护更新,而且解决了Linux系统下软件与软件之间的互相引用依赖关系(依赖关系:软件A需要软件B、C、D才能正常工作,那么在安装软件A时你需要先装软件B、C、D而,B、C、D又需要优先安装了其他软件才能工作,导致Linux下软件安装十分复杂),可以直接使用 apt-get install xxx命令直接安装某软件,该软件需要的其他依赖软件,ubuntu会帮你一并下载安装好

1. $sudo 与 root的区别

$的解释:就是命令行的意思,初学者在没人帮忙的情况下看一些资料经常能看到$符号,
输入参考代码时连$也一起输入,$的意思就是告诉你这是一条命令行,后面才是代码,
比如 $sudo 意思是让你输入 sudo

sudo 是给当前用户开启**临时**超级权限
     有时候装软件需要超级权限,修改某些readonly的文件时需要登录root帐户才可以,用了sudo也没用
         方法一
         是使用sudo命令开启临时权限
         例如 $sudo apt-get install xxx        //xxx:为ubuntu的软件名
         方法二
         退出当前登录帐户再使用root帐户登录
         1->$logout                //退出登录命令
         2->输入root帐号及密码
         或直接切换到root帐户
         ->$su - root    //完全切换到root帐户下(用户环境变量改变)
         ->$su root      //仅切换权限到root帐户下(用户环境变量不变)
         
root 是系统超级权限帐号
    这个帐号是全权限超级用户,登录之后就可以为所欲为了
    坑:
    系统没设置过root帐户密码时这个帐号是没用的,使用以下命令设置密码后才可以使用
    ->$sudo passwd root        //注意这里是passwd不是password
                               //笔者多次输入常规全拼单词然后一直无限循环失败
                               //linux有很多奇葩缩写,一不小心就踩了
                               //也算是一个坑吧
                                                                                   

2. 使用WinSCP通过SSL连接Ubuntu

如果你的版本没有安装SSH服务,需要先安装一下
->$sudo apt-get install ssh    //看资料时也会看到openssh-server
                               //ssh是这个服务的简写
 
下载WinSCP后打开,点击New Session
根据提示输入帐号和密码,默认端口是22
*非root帐户就可以通过SSL连接使用了

*root帐户需要做更多的工作

    首先你要把root密码给设置了,参看1这大节的末尾
    
    然后修改/etc/ssh/sshd_config配置文件
    ->$vi /etc/ssh/sshd_config    //注意是sshd_config不是ssh_config
                                  //linux到处是单词坑
                                  
    找到 PermitRootLogin 这个配置属性
    将 PermitRootLogin 这行改为 PermitRootLogin yes
    

    重要的一步是重启sshd服务
    ->$service sshd restart      //注意是sshd不是ssh
                                 //linx里到处是单词坑

    完成以上步骤后就可以使用WinSCP进行连接了
    !部分人不经意间修改了WinSCP的SFTP Server默认设置导致无法链接的问题
    
    Server sent command exit status 127.

    
    找到站点登录页面找到Advance(高级),点开后在左边找到SFTP设置为Default即可

3. 设置全局代理

因为ubuntu在windows上装的虚拟机(笔者用VMware,同事推荐VirtualBox感觉不好用)
而笔者所在的公司不允许访问部分外网,apt-get的下载镜像地址就在黑名单之列
所以只能通过同事搭的代理服务器访问
当然代理的设置有很多种,有临时代理、用户代理(Shell代理)及系统全局代理等多种方式
//linux太灵活但也太繁杂了,对于微软死忠真心觉得我大微软真是服务周到
出于笔者需要只掌握了临时代理及系统全局代理两种方式(类似于在IE上设置代理)
[其他代理设置方式参考文章](http://blog.csdn.net/zm_21/article/details/8951005)

方式一:临时代理
->$export http_proxy="http://x.x.x.x:port"

除了http需要进行代理之外最近越来越流行的https也有了,命令如下
->$export https_proxy="http://x.x.x.x:port"
//差别仅在http_proxy改为了https_proxy

方式二:全局代理
使用root帐户登录,在/etc/environment(系统环境变量)
->$vi /etc/environment
追加以下配置属性
->http_proxy="http://x.x.x.x:port"        //http
->https_proxy="http://x.x.x.x:port"       //https
更新环境变量
->$source /etc/environment

4. 修改apt软件下载镜像源地址

apt-get其实就是软件市场,正因为apt-get对软件的依赖关系长期维护及更新
帮助ubuntu在装软件上方便了很多,但默认ubuntu在en英语语言下的镜像源是美国的
可以使用 $cat /etc/apt-get/source.list 查看了解

故而下载速度慢,这时就需要寻找速度快的源,apt-get 对于镜像源地址定义在
/etc/apt-get/source.list 文件中,关于源内各种代码的解释笔者也不甚了解
寻找速度快的源可以到这个网站上寻找(https://repogen.simplylinux.ch/)
勾选你需要的选项,建议全部勾选
?:懒人checkbox全选代码
var boxs=document.getElementsByTagName("input");
for(i=0;i

生成按钮在页面最底部Generate List按钮,点击后生成的镜像源地址全部复制到
source.list文件中即可(最好覆盖原设置,保留原设置可能导致冲突)

更多apt命令参考:
http://blog.csdn.net/heihuifeng/article/details/6610899

5. 通过ppa安装与删除JDK

**安装**
ppa并不是apt而是额外的软件,在使用ppa命令时先安装ppa依赖软件
安装ppa需要用到以下命令

->$sudo apt-get install software-properties-common     
->$sudo apt-get install python-software-properties

//以上2个软件安装完毕后就可以开始安装JDK了

->$sudo add-apt-repository ppa:webupd8team/java    //添加配置
->$sudo apt-get update        //更新配置,这步很重要

->$sudo apt-get install oracle-java6-installer    //安装1.6
->$sudo apt-get install oracle-java7-installer    //安装1.7
->$sudo apt-get install oracle-java8-installer    //安装1.8

配置JAVA_HOME
->$sudo vi /etc/environment    //打开系统环境变量
追加如下代码
JAVA_HOME="/usr/lib/jvm/java-7-oracle"
更新环境变量
->$source /etc/environment
检查配置是否正确
->$echo $JAVA_HOME        //应当与追加的路径一至

最后可以查看JDK版本
->$java -version

**卸载**
先运行卸载命令
->$sudo apt autoremove oracle-java7-installer
->$apt-cache search java | awk "{print($1)}" | grep -E -e "^(ia32-)?(sun|Oracle)-java" -e "^openjdk-" -e "^icedtea" -e "^(default|gcj)-j(re|dk)" -e "^gcj-(.*)-j(re|dk)" -e "java-common" | xargs sudo apt-get -y remove
->$apt-get -y autoremove

然后清除缓存及配置
->$dpkg -l | grep ^rc | awk "{print($2)}" | xargs sudo apt-get -y purge
->$bash -c "ls -d /home/*/.java" | xargs sudo rm -rf
->$rm -rf /usr/lib/jvm/*

安装参考教程:
https://segmentfault.com/a/1190000001703180(较完整)
http://www.cnblogs.com/a2211009/p/4265225.html(方式多样)
卸载参考文档:
http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html

6. 通过apt安装JRE与删除JRE

坑:因为source.list内的源地址不完整导致安装时候各种依赖引用出现以下提示错误
The following packages have unmet dependencies:
Depends: xxxx(xxxx) but it is not going to be installed
Unable to correct problems, you have held broken packages.

解决办法为参照第4大节修改镜像源地址使各软件之间的依赖关

直接使用以下命令即可安装JRE
->$sudo apt-get install openjdk-7-jre
笔者这里安装的是openjdk-7-jre,读者可以使用
->$sudo apt-cache search 软件名
来寻找更多的其他版本JRE,比如default-jre等

可以使用
->$sudo update-alternatives --config java
快速找到本机安装的所有JAVA版本及切换版本(根据提示按对应数字)

使用
->$java -version
查看当前版本


配置JRE_HOME
->$sudo vi /etc/environment    //打开系统环境变量
追加如下代码
JRE_HOME="/usr/lib/jvm/java-7-openjdk-i386/jre"  //该路径与你当前JAVA版本路径一致
                                              //笔者使用的是openjdk-7-jre
                                              //注意这里的结尾路径为jre文件夹
更新环境变量
->$source /etc/environment
检查配置是否正确
->$echo $JRE_HOME        //应当与追加的路径一至

**卸载**
先运行卸载命令
->$sudo apt autoremove openjdk-7-jre
->$apt-cache search java | awk "{print($1)}" | grep -E -e "^(ia32-)?(sun|Oracle)-java" -e "^openjdk-" -e "^icedtea" -e "^(default|gcj)-j(re|dk)" -e "^gcj-(.*)-j(re|dk)" -e "java-common" | xargs sudo apt-get -y remove
->$apt-get -y autoremove

然后清除缓存及配置
->$dpkg -l | grep ^rc | awk "{print($2)}" | xargs sudo apt-get -y purge
->$bash -c "ls -d /home/*/.java" | xargs sudo rm -rf
->$rm -rf /usr/lib/jvm/*

对于5、6节一个较完整的教程推荐
https://www.digitalocean.com/...

7. Apache2 + Tomcat8

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23539.html

相关文章

  • Ubuntu踩过的坑

    摘要:前言初学走了好多坑,记录于此未写作先甩锅因为是初学很多技术和理解不一定准确到位,如有人参考本文知识,有偏差请见谅环境简单介绍是系统内核下众多分支之一,除此之外还有等,我的理解是属于再基础上的次开发的优势在于有基金会持续维护更新,而且解决了系 前言:初学Linux走了好多坑,记录于此 未写作先甩锅:因为是初学很多技术和理解不一定准确到位,如有人参考本文知识,有偏差请见谅 环境:ubunt...

    Alliot 评论0 收藏0
  • js轮询及踩过的坑

    摘要:背景下午四点,天气晴朗,阳光明媚,等着下班产品我希望页面上的这个数据实时变化开发,可以,用那个叫着的东西,再找一个封装好框架,如感觉自己好机智产品要开发好久开发嗯,三天,五天,还是产品我希望今天上线开发,,不能描述的语言,话说为什么不支持表 背景 下午四点,天气晴朗,阳光明媚,等着下班产品:我希望页面上的这个数据实时变化开发:···,可以,用那个叫着WebSocket的东西,再找一个封...

    phpmatt 评论0 收藏0
  • js轮询及踩过的坑

    摘要:背景下午四点,天气晴朗,阳光明媚,等着下班产品我希望页面上的这个数据实时变化开发,可以,用那个叫着的东西,再找一个封装好框架,如感觉自己好机智产品要开发好久开发嗯,三天,五天,还是产品我希望今天上线开发,,不能描述的语言,话说为什么不支持表 背景 下午四点,天气晴朗,阳光明媚,等着下班产品:我希望页面上的这个数据实时变化开发:···,可以,用那个叫着WebSocket的东西,再找一个封...

    shiina 评论0 收藏0
  • js轮询及踩过的坑

    摘要:背景下午四点,天气晴朗,阳光明媚,等着下班产品我希望页面上的这个数据实时变化开发,可以,用那个叫着的东西,再找一个封装好框架,如感觉自己好机智产品要开发好久开发嗯,三天,五天,还是产品我希望今天上线开发,,不能描述的语言,话说为什么不支持表 背景 下午四点,天气晴朗,阳光明媚,等着下班产品:我希望页面上的这个数据实时变化开发:···,可以,用那个叫着WebSocket的东西,再找一个封...

    bang590 评论0 收藏0
  • 使用node子进程spawn,exec踩过的坑

    摘要:最后发现使用子进程打开还真的就是使用到一定程度就挂掉。上面的简单流程就是启动一个子进程。逻辑就是,记录子进程的大小,一旦超过就掉子进程。我们在使用时,不知道设置,默认的是当我们子进程日志达到时,自动掉了。 showImg(https://segmentfault.com/img/bVrCnh); 如何在项目中实现热更新中提到的一个坑child_process的exec使用问题,下面文章...

    cppprimer 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<