大家好,久违了!
时隔一年,我发表的上一篇博客年后第一更,谈谈收获及展望至今已快一年了,期间一直在忙没有时间写博客,原因就不细说了。由于我的个人云服务器到期了,所以我又买了一台阿里云的一年时长的ECS云服务器。话不多说,切入正题,跟我一起从零开始,搭建Linux服务器的各种开发运行环境吧。
目录
准备工作:
1.一台linux服务器,我这里演示的是阿里云的ECS云服务器,操作系统: CentOS 7.3 64位
2.一台电脑,有浏览器,有网,可以下载
3.你需要Xshell或Xftp等连接服务器的工具,这里我使用的是SecureCRTPortable和Xftp6
准备好之后,我们开始搭建吧!
一、linux安装jdk环境
1.下载jdk
首先连接上你的linux服务器,输入java -version命令,查看当前服务器的jdk安装情况
这里我的服务器是干净的没有jdk,如果你的服务器也没有jdk或者不是你想要的版本,那么跟我一起安装一个新的jdk。
这里提个小插曲,刚到手的linux服务器一般用户名很长很杂乱,这里说一下修改hostname的方法,直接输入
sudo hostnamectl set-hostname <your-new-hostname>命令,回车即可。
我安装的是jdk1.8,看你个人需求,下载地址http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
jdk下载完成之后,用Xshell等连接服务器的工具上传到linux服务器
服务器目录是这个样子的,你的可能一开始没有app这个目录,那么你自己创建一个,很多人把jdk安装在/usr目录下,这里我选择安装在/app目录下,是为了方便统一管理,因为今后还要安装各种环境。
在/app目录下新建一个java目录(当然,你也可以放在/usr下面,随个人喜好),将下载的jdk上传上去。
输入命令cd /app/java进入到目标目录下,输入解压命令tar -zxvf jdk-8u201-linux-x64.tar.gz (tar -zxvf 你的jdk名)回车
你会发现java目录下已经解压好了,你可以将解压后的文件夹的名字修改成你想要的名字,这里我改成了jdk1.8,看起来简洁。
2.配置jdk环境变量
输入命令cd ~回车,进入到你的用户目录下,使用vi编辑配置文件,输入vi .bash_profile回车
按一下i这个键,意思是insert插入,使用键盘的上下左右键移动光标,在export PATH这一行的前面,插入
export JAVA_HOME=/app/java/jdk1.8
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
你可以删掉export PATH,(JAVA_HOME=/app/java/jdk1.8是你自己的jdk目录)输入完是这样的
然后按Esc键,输入:wq回车,则写入成功,注意:需要断开连接,重新连一下你的服务器,使配置文件生效,或者输入命令source ~/.bash_profile也行,一样的效果。
验证一下,输入java -version查看是否安装成功。
你看,已经好了,6不6!!!
二、linux安装python3
1.检查python环境
首先,查看你服务器上已有的python版本,基本上linux服务器都会自带python2.7(或2.6),输入命令python回车
看到服务器自带有python2.7.5,输入exit()可以退出。这里由于我需要使用到python3,所以我还要安装python3。
注意:默认的python被系统很多程序所依赖,所以系统自带的python版本不要轻易删除,否则会有一些问题,可能会导致系统内其他软件无法使用。
2.下载python3
python3和python2两个环境可以并存,下面介绍安装python3的方法:
下载地址https://www.python.org/ftp/python/选择自己想要下载的版本,
这里我下载的是https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
3.解压,编译,安装
同样,我在/app目录下新建目录python,你也可以放在其他地方如/usr/local/python3,这里我是为了便于统一管理。
将下载的包上传到python目录下,输入命令cd /app/python进入目录,输入tar -zxvf Python-3.7.2.tgz命令解压
这里我讲解压后的文件名做了更改python-3.7.2,方便输入cd命令(不用大小写切换,你可以不改)
因为python是编译安装的,所以这里需要安装编译环境,输入以下命令,执行
yum -y install xz lzma xz-devel
yum -y install sqlite sqlite-devel
yum -y install gdbm gdbm-devel
yum -y install libffi libffi-devel
yum -y install tk tk-devel
yum -y install zlib zlib-devel
yum -y install bzip2 bzip2-devel
yum -y install ncurses ncurses-devel
yum -y install readline readline-devel
yum -y install openssl openssl-devel
yum -y install openssl-static
安装好编译环境后,进入解压后的目录cd python-3.7.2,输入命令./configure --prefix=/app/python/python-3.7.2即可(这个prefix=后面是你解压的python路径)
执行命令make
执行命令make install
这两个命令比较耗时,请耐心等待。
接下来,要建立软链接,输入以下命令:
ln -s /app/python/python-3.7.2/bin/python3 /usr/bin/python3
ln -s /app/python/python-3.7.2/bin/pip3 /usr/bin/pip3
这里的/app/python/python-3.7.2/是你的安装目录,其余不变
至此,我们就完成了python3的安装啦,输入-V命令查看一下版本
我们发现两个python版本和谐的在一起了,6不6!!!
三、linux安装tomcat
1.下载tomcat,解压
下载地址https://tomcat.apache.org/,选择你想下载的版本,这里我下载的是8.5版本https://tomcat.apache.org/download-80.cgi
下载完成后,上传至服务器。为了统一管理,这里我同样在/app目录下新建了tomcat文件夹,放在里面,当然,你可以放在其他目录下。
进入放安装包的目录cd /app/tomcat
执行tar -zxvf apache-tomcat-8.5.38.tar.gz解压
2.启动tomcat
要启动tomcat,必须要保证系统安装有jdk环境
进入bin目录cd apache-tomcat-8.5.38/bin
输入启动命令sh startup.sh
启动较慢,可以稍微等一会(如果发现启动巨慢,往后翻,有解决方案),也可以查看启动日志
进入logs目录下cd ../logs/
查看日志tail -f catalina.out(按Ctrl+C可以停止日志输出)
出现Server startup in 163407 ms就是启动成功了,这个8080就是tomcat的默认端口号,这个端口号是可以修改的。
打开浏览器,输入你的服务器ip:端口(例如134.112.68.6:8080),即可访问此tomcat了
3.修改tomcat端口号
将conf目录下的server.xml文件下载下来
打开,在70行左右的这里,将8080修改为你定义端口号(要保证你改的端口不被其他应用占用),保存。
然后再上传上去,覆盖掉原来的文件,重启即可
重启命令:在bin下执行sh shutdown.sh停止,然后再执行sh startup.sh启动
浏览器重新访问(有时会访问不到,是因为tomcat启动较慢,请耐心等待或查看启动日志),服务器ip:端口,访问即可。
4.修改tomcat用户名密码
将conf目录下的tomcat-users.xml文件下载下来
打开文件,最后面,注释掉的是官方提供的配置用户名密码的配置模板,我们看到模板中有tomcat,role1这两个角色
我们访问tomcat首页,点击Manager App
可以看到一个文档,
文档页面上的这两行代码复制出来,添加到tomcat-users.xml文件的最后这里,即已经完成了tomcat的用户名密码的设置。
<role rolename="manager-gui"/>
<user username="admin" password="123456" roles="manager-gui"/>
保存,上传覆盖掉原来的版本,重启tomcat,重新访问即可。
5.tomcat进入管理页面403解决方案
如果发现点击Manager App,还是之前的403页面,不会弹出来登录框,那么这个问题就是你的ip地址被拦截了,解决方案如下:
进入你的tomcat目录apache-tomcat-8.5.38/webapps/manager/META-INF这个目录下
修改这个文件context.xml,将这两行注释掉,就好了
更新文件,我们重启一下,进入tomcat首页,点击Manager App
输入你设置的用户名密码,就进入管理页面啦。
6.tomcat启动超级慢解决方案
启动tomcat巨慢,查看日志一直卡在[localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying
这是因为JVM上的随机数与熵池策略影响的,默认使用的是 /dev/random,我们换成使用/dev/urandom产生随机数就特别快了。
将你的jdk目录下jdk1.8/jre/lib/security的java.security文件中
文件中有这一行securerandom.source=file:/dev/random将其改成securerandom.source=file:/dev/./urandom即可
重新启动tomcat,发现只要1~2秒就起好了
怎么样,是不是很神奇,6不6!!!
(由于本系统安装的是jdk1.8,与jboss容器不兼容,所以这里只讲解了安装tomcat和jetty)
四、linux安装jetty
1.下载jetty,解压
下载地址https://www.eclipse.org/jetty/download.html这里我下载最新版9.4
你也可以选择自己想要的版本下载
下载完成后,上传至服务器。同样,这里我为了统一管理,在/app目录下新建jetty文件夹,当然你也可以上传到其他目录下。
进入放安装包的目录cd /app/jetty
解压,执行tar -zxvf jetty-distribution-9.4.14.v20181114.tar.gz
这里我将解压后的文件夹名称改为jetty-9.4.14方便操作,看起来也简洁一点
解压即完成了安装,下面,我们启动一下jetty
2.启动jetty
启动jetty之前需要保证默认端口8080没有被占用(如果装有tomcat或其他占用了8080的服务请修改端口号或者关闭进程),待会再讲怎么修改jetty启动服务的端口,这里暂时停掉其他8080端口的应用。
进入bin目录cd /app/jetty/jetty-9.4.14/bin
执行启动命令sh jetty.sh start
可以看到已经启动成功(jetty的启动速度蛮快的),默认端口是8080,,我们访问一下
出现这个页面就表示你的jetty已经启动成功啦,404是因为你的jetty容器里还没有任何应用。
3.修改jetty默认端口
在jetty的目录下,有一个start.ini的文件
编辑这个文件,里面有一行注释掉的jetty.http.port=8080,表示默认是8080端口,我们加一行在下面,设置你的端口
更新这个文件,重启jetty,重启命令sh jetty.sh restart
我们看到,重启后的端口号已经生效了。6不6!!!
五、linux安装mysql
1.下载mysql安装包,解压
msql的官网是https://www.mysql.com/,(这里博主暂时进不去)下载安装包的教程请参考百度经验:mysql下载教程(如何从官方网站下载)
如果你也下载不了,这里我提供给你一个百度云下载链接,版本是mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz
目前官网的最新版本是5.7,不过博主建议下载5.6的版本,更稳定一些(据说linux安装5.7版本会经常出现一些bug很麻烦)。
上传至服务器,这里我为了便于统一管理都放在/app目录下,新建一个mysql文件夹(你可以放在/usr/下,随个人喜好)
进入目标目录,解压tar zxvf mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz
这里我改了解压后的文件夹名字为mysql-5.6.30,看起来更简洁。
2.安装mysql
首先要创建一个mysql用户:useradd mysql
设置mysql用户密码:echo '123456'|passwd --stdin mysql
修改当前目录的拥有者为mysql用户:chown -R mysql:mysql ./
切换到mysql用户下:su - mysql,可以看到当前用户已经从root切到mysql了
进入你的安装目录的scripts目录下面:cd /app/mysql/mysql-5.6.30/scripts
安装:./mysql_install_db --user=mysql --basedir=/app/mysql/mysql-5.6.30 --datadir=/app/mysql/mysql-5.6.30/data
命令里basedir是你的mysql根目录,datadir是mysql目录下的data目录。
3.安装mysql过程中报错及解决方案
提示:解决某个报错后,切回mysql用户,执行上面的安装步骤,如过出现其他报错,继续此过程,直至安装成功。
注意:yum安装都需要切到root用户下执行命令。切回root用户:su - root,需要输入你的root用户的密码。
(1)执行安装命令如何出现下面的报错:
你需要安装autoconf库,执行命令:yum -y install autoconf,即可安装autoconf库。
(2)如果报错:error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
(3)报错:mysql_install_db: perl: bad interpreter: No such file or directory
这是因为缺少类库,需要对应安装:
缺少libaio相关的就执行yum –y install libaio*
缺少perl相关就执行yum –y install perl*
解决完报错后,切回mysql用户,执行上面的安装步骤,安装成功后会打印类似这样的日志。
安装完毕!
4.配置mysql,启动mysql
切到root用户下,进入到你的mysql安装目录下,我的是cd /app/mysql/mysql-5.6.30/
修改当前目录拥有者为root用户,执行命令 chown -R root:root ./
修改当前data目录拥有者为mysql用户,执行命令 chown -R mysql:mysql data
建立mysql软链接,执行命令ln -s /app/mysql/mysql-5.6.30/bin/mysql /usr/bin/mysql
执行cp support-files/mysql.server /etc/init.d/mysql
执行cp support-files/my-default.cnf /etc/my.cnf
然后需要在/etc/init.d/mysql和/etc/my.cnf配置文件中添加两行,就是你的mysql安装目录和目录下data
basedir=/app/mysql/mysql-5.6.30
datadir=/app/mysql/mysql-5.6.30/data
然后就可以启动mysql服务啦,执行命令service mysql start
查看进程ps -ef|grep mysql,已经起起来啦
修改mysql的root用户密码,root初始密码为空的,执行命令:./bin/mysqladmin -u root password '密码'
设置好密码后登陆root用户,执行mysql -uroot -p输入密码
已经进入mysql啦,输入show databases;可查看数据库,输入quit;可退出
#启动mysql命令:service mysql start
#关闭mysql命令:service mysql stop
#查看运行状态命令:service mysql status
至此,mysql已经安装完毕啦,如果你使用mysql客户端去连接你的mysql数据库连不上的话,是因为你的服务器3306端口的防火墙没开,下面继续介绍如何开放端口防火墙。开放3306端口后mysql客户端即可连接了。
怎么样,6不6!!!
六、linux启动或关闭防火墙,开放端口
1.查看防火墙
查看防火墙状态:service iptables status
开启防火墙:service iptables start
关闭防火墙:service iptables stop
如果出现报错:Unit iptables.service could not be found.
这是因为CentOS7默认的防火墙不是iptables,而是firewalle。出现此情况可能是iptables防火墙未安装。
如果你只是想开放某个端口的防火墙,那么你有两种选择:1.firewalld 防火墙;2.iptables防火墙。如果你选择第一种,则不用安装iptables。
下面介绍firewalld 防火墙开放端口的方法和iptables的安装方法。
2.firewalld 防火墙开放端口
查看firewalld状态:systemctl status firewalld
开启firewalld:systemctl start firewalld
如果启动报错:Failed to start firewalld.service: Unit is masked.
是因为被锁定了,取消firewalld的锁定:systemctl unmask firewalld,再启动即可。
开放某个端口:firewall-cmd --zone=public --add-port=3306/tcp --permanent
重新载入:firewall-cmd --reload
这样,3306端口都开放啦。
3.安装iptables服务
首先,停止firewalld服务,执行:systemctl stop firewalld
禁用firewalld服务,执行:systemctl mask firewalld
执行:systemctl unmask firewalld
安装iptables服务,执行:yum -y install iptables-services
设置开机启动,执行:
systemctl enable iptables
systemctl stop iptables
systemctl start iptables
systemctl restart iptables
service iptables save
然后就可以启动防火墙啦!
4.iptables防火墙开放端口
先停掉防火墙service iptables stop
关闭firewalld:
systemctl stop firewalld
systemctl mask firewalld
开放3306端口,执行:iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
后面如果还有端口要开放,直接在文件/etc/sysconfig/iptables里照着样子添加一行即可
保存,执行:service iptables save
开启服务,执行:systemctl restart iptables.service
查看防火墙状态:service iptables status
可以看到,防火墙已经在运行了,讲道理此时3306端口也已经开放了。
但是!有可能你跟我一样,mysql客户端还是连不上!,这是因为如果是阿里云的服务器,需要在阿里云的控制台去开放端口。
博主表示在写这篇博客的时候一度怀疑人生,思前想后想不通,最后发现是阿里云在作祟,坑不坑!!!
5.开放阿里云服务器的端口
登陆你的阿里云,进入控制台,找到你的云服务器实例,点击后面的更多,选择【网络和安全组】下的【安全组配置】
点进去以后,点击【配置规则】,添加一个新的或者克隆一个规则
协议类型要选Mysql(3306),然后保存
这样就生效啦,赶快使用你的mysql客户端连接一下(注意防火墙要保证3306端口开放)
如果你此时连接还是报错:
这个报错1130,说明你所连接的用户账户没有远程连接的权限,只能在本机localhost登录,。需要更改 mysql 数据库里的 user表里的 host字段 把localhost改成%,下面介绍方法:
执行mysql -u root -p,输入密码
进入mysql控制台,进入数据库:use mysql;
更改host字段值:update user set host='%' where host='localhost';
刷新:flush pricilges;
查看:select host,user from user;
退出:quit;
此时,你就可以使用mysql客户端连接你的mysql啦,实在不行的话你重启一下mysql试试:service mysql start,或者修改一下root的密码,保证你输入的密码正确。
可以看见已经连接成功。怎么样,6不6!!!
结语:
目前就先写这么多,太多了一篇博客写不下,因为本人平时由于工作需要,搭建的服务器非常多,所以使用的多了就有想写出来分享给大家的想法。
最后,如果有朋友想看关于某些方面的东西的话,可以私信我,也可以下方评论,我会的话尽量写博客发出来,尽我所能,谢谢大家!