一直以来想拥有一个服务器,但是一直舍不得.9.21日终于心血来潮,买了一个腾讯云服务器.对比了一下腾讯云和阿里云,发现腾讯云比较良心,不仅有学生价1元/月,而且整体价格也比阿里云便宜.之前用过一次阿里云,当时是windows server2008,安装啥软件都安装不成功.所以,以后就用腾讯云了.最便宜的服务器是45元/月,首次注册免费赠送一大堆代金券,分成很多类别,比如服务器代金券,数据库代金券等.要想使用学生价,就要进行学生认证,这就要求在学信网上注册信息.刚刚开学,学校还没有将学生的信息输入到学信网上.所以就用20元代金券+25元人民币买了一个服务器,等学生认证成功之后在用学生价.服务器有很多选项,比如内存,网速,操作系统等,我选了ubuntu操作系统.

有了服务器之后,就开始折腾.花了一天半时间,安装卸载了好几次软件,中间栽了大坑无数,特此总结以警示后来人.

一.尽量不要使用sudo apt-get来安装程序

linux上的软件最好使用绿色免安装的,用wget url来下载,用tar -zxvf来解压.

apt方式弊端太多了,上面软件很老!要想使用最新版,必须手动去下载.当你输入java指令,提示安装jre,会发现apt的软件仓库里面jdk都很旧.安装默认的mysql也是5.x的,有点老.

apt方式弊端太多了,它把目录结构弄得混乱不堪!虽然通过指令安装成功了,但是你根本就不知道程序安装到了哪里,想找配置文件都很麻烦.

二.ssh远程登录和ftp两个最重要服务器操作手段

xshell用于SSH加密远程登录服务器,它的同类产品有:SecureCRT,Putty,apache mina项目中有一个SSH子项目.

vsftpd用于ftp上传下载文件,apache mina项目是一个网络相关库,包括SSH,FTP相关库.它下面有一个ftpserver的子项目。SSH其实再带SFTP,无需安装任何其他FTP工具,SFTP默认端口为22。

服务器端使用vsftpd作为ftp服务器端,客户端可以使用任意一种ftp工具,比如filezilla.使用vsftpd需要在/etc/vsftpd文件中进行配置,一个是改密码,另一个是允许写数据.

允许写数据,添加这句话:

# Uncomment this to enable any form of FTP write command.
write_enable=YES

有了vsftpd,就可以通过filezilla向服务器上传软件了,有些服务器上wget无法下载的程序,可以从客户端传上去.

三.安装mysql

如果使用apt安装默认的mysql,版本比较老.注意要安装mysql时,有好几个安装包:mysql-core,mysql-client,mysql-server等,它们之间有依赖关系,也就是有包含关系,只需要输入安装mysql-server就够了.一定别安错了,输入sudo apt-get install mysql之后,多按几次tab键.mysql如果手动下载然后安装,会很复杂,比tomcat,ftpserver的安装复杂多了.所以,最好使用sudo apt-get install mysql-server命令来安装mysql.

安装完mysql之后,本地访问正常,在客户端使用workbench连接时总是报错,这是因为需要配置/etc/my.conf.默认情况下,这个文件中有一句:

bind-address=127.0.0.1

这表示mysqld只监听本地的3306端口,不监听外部端口,把这句话中的ip地址改成0.0.0.0表示监听一切端口.或者注释掉这句话,默认情况下监听一切端口.

为了让mysql支持远程登录,先mysql -uroot -p进入数据库,把mysql.user表中的root的host修改为%或者固定的ip地址.

上述两个操作完成之后,sudo service mysql restart

mysql的默认编码是latin而非utf8,为了解决乱码问题,修改/etc/mysql/my.cnf,

[client]default-character-set=utf8[mysqld]#加default-character-set=utf8无法启动character-set-server=utf8

四.安装java和tomcat

为了使用java8,从官网上下载jdk需要点击按钮同意,然后才允许下载,这样wget就得换一种方式,让wget带着accept liscense这个cookie去下载.

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-linux-x64.rpm

也可以用客户端下载完成后使用ftp传上去.解压之后就能使用了.

需要把java和javac命令添加到环境变量中去.

ubuntu中的环境变量跟windows一样,也是分成好几种,包括系统环境变量,用户环境变量,超级用户环境变量.

如果更改~/.profile或者~/.bashrc,那么更改的就是用户环境变量,不影响其他用户.

如果更改/etc/profile及profiled下的文件,那么更改的就是系统环境变量,也影响其他用户.

$PATH变量最开始是在/etc/environment中定义的,所以也可以更改这个文件.

但是上面所有方法都没法在sudo命令下使用java,因为sudo命令会把$PATH等环境变量重置,于是你添加的目录就看不见了.这么怪异而偏僻的东西,吾如何知之?不信可以编写一个haha.sh,里面只有一句话:echo $PATH.使用./haha.sh和sudo ./haha.sh输出结果是不一样的.那么如何更改sudo下的PATH呢?更改/etc/sudoers文件.

tomcat可以直接wget下载,解压即用.进入其bin目录下,运行startup.sh就可以启动服务器了,这个startup.sh调用了catalina.sh,setclasspath.sh等文件.它会自动根据java命令所在的位置来定义JAVA_HOME,JRE_HOME.

注意,因为需要绑定端口号,运行tomcat是一个权限较高的操作,所以需要使用sudo ./startup.sh.

这时如果发现提示找不到JAVA_HOME,那就跟我走的坑一样了.我明明在~/.bashrc中把java命令所在文件夹添加到了$PATH中,为何找不到?这是因为使用了sudo导致$PATH被重置了,所以就找不到java命令了!解决方法是更改startup.sh脚本,在脚本中直接定义JAVA_HOME或者直接更改$PATH.这么偏僻的东西我怎么能想到!!!

运行startup.sh之后,运行ps -a命令会发现有一个java正在运行,这说明tomcat已经启动.额.打开浏览器,访问服务器8080端口,结果一直显示正在请求,一直无法加载成功.为啥呀?这个问题让我纠结了一晚上,我到底做错了什么,为啥服务器启动了无法访问?在服务器上使用wget localhost:8080看看能不能本地访问,也说:请求已发送,正在等待回复.这时,如果你静静的等待个半小时,会发现好了,一切正常运行,网页访问速度也丝毫不慢.然而,我昨天晚上纠结这个问题时,没有等待这么长时间,所以一直不知道错误原因.百度"linux 安装tomcat"看看别人是怎么安的,结果人家都是解压就用.昨晚真是气冲斗牛,错了不知道哪里错了这种感觉真是人间最痛苦的感觉之一.实际上,我什么都没有做错,错的是系统,这个问题网上有大量的资料,百度"ubuntu tomcat启动慢"就可以了,原因是为了加密,生成某个随机数,那个随机数需要收集系统噪音,所以需要等待很长时间,在startup.sh中添加一句话就可以了

export CATALINA_OPTS="-Djava.security.egd=file:/dev/./urandom"

要想停止tomcat,有两种方法:一是运行bin/shutdown.sh;另一种方法是ps -a,kill 名字叫java的那个程序.

实际上,运行tomcat完全不需要sudo,因为tomcat占用的是8080端口!这样也确实能够运行,但是打开浏览器却无法访问很多webapp,这是因为CATALINA_HOME这个文件夹下有很多owner为root的文件,webapp无法访问这些文件,解决方法是:

chown 用户名 apache-tomcat  -R

-R表示递归更改文件所属用户

五.使用ubuntu的几个原则

尽量自己下载解压即用的软件,不要使用apt-get.

尽量在~/和/opt/目录下操作,不要掺和其他目录.比如tomcat说没有JAVA_HOME,那么就更改它的startup.sh,在里面添加一句JAVA_HOME,而不要更改/etc/sudoer.即尽量把问题在自己家里解决,不要把问题在系统级别上解决.

尽量避免rm指令,不对,一定不要使用rm指令,而是要自己编写一个del脚本,它把删除了的文件移到rubbish文件夹中.

总之,只有DIY才能活得好,才能有主权,才能减少学习量.

最后,上面所说的每一个坑我都躺了半天,耗费了大量时间与精力,我认为这是不值得的,因为这些知识毫无用处,只是"知道了",如果有人指导我,那将省去很多功夫.这么纠结而茫然求索的过程十分痛苦,不利于身体健康,有这功夫就不如去研究一下深度学习.在"人造"的坑里躺着远远不如在"天然"坑里面躺着舒服.

第一次使用Linux服务器所栽之坑相关推荐

  1. 第一次在Linux服务器上部署项目,看完这篇轻松应对

    场景 一直习惯于Windows服务器的窗口的方便,突然要用到linux的服务器的部署,不知道从何下手, 所以你百度一搜,各种linux命令大全,看的眼花缭乱. 实现 软件 如果你的项目是在window ...

  2. 第一次在linux服务器上跑python项目Sklearn安装问题

    昨天刚拿到账号有点懵圈的.. 本地有一个Python项目,奈何pc太弱鸡了..啥用都没 然后安了一下anaconda环境,创建了一个虚拟环境安装pytorch 准备跑了 第一步当然是把代码放上去,用这 ...

  3. docker部署服务,本地文件路径正常,linux服务器文件路径找不到的小坑

    还是想每天坚持写点什么,也是菜的出奇,只能写一些很表层的东西.今天就记录一下工作中遇到docker部署到linux服务器的一个小坑. 项目中有个预览功能,要求返回给前台base64的图片,但是ftp上 ...

  4. 使用Xftp实现Windows与Linux服务器实现快速传输文件

    场景 第一次在Linux服务器上部署项目,看完这篇轻松应对: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/85340802 简单 ...

  5. linux服务器使用心得

    这次为了给师兄在服务器上跑程序,可是折腾了不少天.主要原因是服务器上的软件版本都太低了,所以需要在自己的目录下重新装一遍.由于是第一次接触linux服务器,装软件都花了好多时间,先装了好多个版本的ma ...

  6. 服务器,linux系统配置端口号的坑!!!服务器防火墙配置!!!

    服务器,linux系统配置端口号的坑!!! 1.重要:首先服务器的安全组规则,开放端口 2 .坑:服务器上的防火墙限制端口,导致外电脑无法通过公网ip访问服务器上启动node服务 找了超多解决办法:都 ...

  7. Django项目在Linux服务器上部署和躺过的坑

    引言 在各方的推荐下,领导让我在测试环境部署之前开发的测试数据预报平台.那么问题来了,既然要在服务器上部署, 就需要准备: 1.linux服务器配置 2.linux安装python环境搭建与配置 3. ...

  8. Linux服务器上配置Tomcat的docBase路径映射时遇到的坑

    场景 需求是将照片放置在Tomcat下的webapps目录下的img目录下. 这样能实现离线Tomcat迁移方便. Windows下的tomcat下的conf下的server.xml中的路径映射配置为 ...

  9. Linux服务器启动tomcat(详细教程避免踩坑)

    1.先查询要运行的端口是否被占用 有返回就是被占用了 netstat -tunpl|grep 端口号 如需杀死端口 kill -9 进程号 2.进入tomcat的bin路径后 授权sh脚本的执行权限 ...

最新文章

  1. SimpliSafe安防系统存高危漏洞:窃贼可轻易攻破
  2. js img图片加载失败,重新加载+断网检查
  3. 模糊控制算法详细讲解
  4. webgl坐标转换_OpenGL/WebGL顶点坐标变换过程简介
  5. 二维数组作为函数参数
  6. 基于Tensorflow实现FFM
  7. VS快速生成JSON数据格式对应的实体
  8. C++ 不能在类体外指定关键字static
  9. 听音乐是运用计算机的技术,计算机音乐技术在电影音乐中的运用
  10. “反向传播算法”过程及公式推导(超直观好懂的Backpropagation)
  11. Android Studio实现简单的QQ登录界面
  12. pageadmin CMS网站建设教程:站点的添加和管理
  13. dubbo配置timeout
  14. Jetson TX2使用记录
  15. redis sorted_set跳跃表(skiplist)
  16. 机器人/多机器人控制常用软件介绍
  17. 计算机网络面试知识点整理
  18. 前缀和(一维数组+二维数组+差分)
  19. 【我的新书】分布式微服务架构:原理与实战
  20. 达梦8,关于参数CTAB_SEL_WITH_CONS的验证

热门文章

  1. 【MySql】在Linux下安装MySql数据库
  2. SWT的UI线程和非UI线程
  3. 基于Sql Server 2008的分布式数据库的实践(三)
  4. 如何做好Serv-U安全设置,保护FTP服务器安全
  5. 笔试算法复习——数组去重
  6. Jeecg-Boot前后端分离,针对敏感数据,加密传递方案
  7. SAS 中计算总和或者计算总数的方法
  8. Linux 查看网卡流量【转】
  9. bzoj2729: [HNOI2012]排队
  10. Winform 打印PDF顺序混乱,获取打印队列