第一次使用Linux服务器所栽之坑
一直以来想拥有一个服务器,但是一直舍不得.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的子项目.
服务器端使用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服务器所栽之坑的更多相关文章
- MultipartFile 图片上传到Linux服务器Tomcat下的webapps目录
第一次接触 linux 服务器,做图片上传的时候遇到了些坑,搞了些天总算成功了,记录一下 /** * 上传图片 * * @param request * @param file * @return * ...
- 第一次项目上Linux服务器(四:CentOS6下Mysql数据库的安装与配置(转))
一.mysql简介 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库,咱 ...
- Django项目在Linux服务器上部署和躺过的坑
引言 在各方的推荐下,领导让我在测试环境部署之前开发的测试数据预报平台.那么问题来了,既然要在服务器上部署, 就需要准备: 1.linux服务器配置 2.linux安装python环境搭建与配置 3. ...
- 第一次项目上Linux服务器(一:远程连接服务器)
一.准备工作 1.Linux服务器一台,以及服务器ip.用户名.密码 2.安装xfttp和xshell软件,资源链接,百度云链接:https://pan.baidu.com/s/1vwnlbBpmjX ...
- 第一次在linux上登录博客
这是我第一次在linux操作系统上登录博客,额,虽然是在X-window上面.好吧,是我太激动了. 这意味着我已经步入linux的世界了,虽然中文输入法不太好用,但是我还是写一下我的心情吧. 从去年的 ...
- 43-将javaweb项目部署到Linux服务器
这是第二次弄了,感觉由于上次积累了点资源,这次要少走很多弯路了,再次记录下来吧. 第一次的记录:将本地的javaweb项目部署到Linux服务器的一般操作 1. 在Linux上建立数据库,我是将本地的 ...
- Linux服务器安全配置
众所周知,网络安全是一个非常重要的课题,而服务器是网络安全中最关键的环节.Linux被认为是一个比较安全的Internet服务器,作为一种开放源代码操作系统,一旦Linux系统中发现有安全漏洞,Int ...
- Linux服务器搬迁记(一)
更换服务器必过之坑(一):文件转移 Linux服务器一般通过ssh进行远程操作,为了避免各种权限问题导致转移不成功,我一般直接使用root账户.这次却是行不通了.ssh进行文件传输,默认禁止用root ...
- 【随笔】Linux服务器备份相关
服务器数据的安全性一直都是服务器日常管理的重中之重.Linux服务器虚拟化虽然以其高度可靠的作业系统而闻名,不过系统失效仍然可能发生.可能因为硬体故障,电源中断,或其他不可预料的问题.更常见的这 些问 ...
随机推荐
- Ionic + Cordova 跨平台移动开发环境配置
1.下载安装JDK(根据各自系统选择32位或64位下载),安装完成之后需要做以下环境变量配置 在“系统变量”中,设置3象属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),如果已经 ...
- DOM节点属性
节点属性 在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType ...
- 64位win7+vs2010编译.net3.5以前的版本问题
一般编译会出现 1.“ResGen.exe”已退出,代码为2 问题处理 2.“错误 2 “LC.exe”已退出,代码为 -1. NBGIS.MainGIS” 3.“未能加载文件或程序集“ESRI.Ar ...
- GIS管网项目-flex/java
开发语言是flex.java,开发平台是myeclise.eclise,后台数据库是oracel或sqlserver,开发接口是arcgis api for flex,提供以下的功能: 1.应急指挥: ...
- SharePoint 2013 定制搜索显示模板
前言 之前我们已经介绍了一些关于搜索的相关配置,当然,用户关于搜索的要求可能是各种各样.有时候,用户会说,你们的显示结果太Low了,确实是:不过,在SharePoint中,我们可以很容易的定制搜索结果 ...
- 把Sharepoint Desinger 工作流部署到生产环境
下面是比较简单的方法,把Designer工作流从开发环境部署到生产环境. 在Sharepoint Desinger 2013 中点击需要部署的工作流. 点击保存,发布. 点Export to Visi ...
- iOS开发之功能模块--高仿Boss直聘的常用语的开发
首先上Boss直聘的功能界面截图,至于交互请读者现在Boss直聘去交互体验: 本人的公司项目要高仿Boss直聘的IM常用语的交互功能,居然花费了我前后17个小时完成,这回自己测试了很多遍,代码 ...
- Linux(Centos6.5) Nginx 安装
Nginx一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,一个Apache服务器不错的替代品. 能够支持高达 50,000 个并发连接数的响应 ...
- .NET重构(类型码的设计、重构方法)
阅读目录: 1.开篇介绍 2.不影响对象中的逻辑行为(枚举.常量.Entity子类来替代类型码) 3.影响对象中的逻辑行为(抽象出类型码,使用多态解决) 4.无法直接抽象出类型码(使用策略模式解决) ...
- 自定义样式RatingBar的使用
1.设置布局文件,自定义ratingbar样式 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/an ...