Centos从头配置javaweb环境

记性太差,还是得写个教程来总结一下配置javaweb的教程,这篇教程也是综合了网上的很多教程

环境

服务器:阿里云ESC Centos 7.3

本地: Mac OS X 10.10.5

预先准备

最近才发现阿里云是不建议升级服务器的内核和操作系统版本,估计腾讯云也是,当初手贱,不管三七二十一,都给升级了,虽然也没有发现什么不对,就一直将就着用了,系统版本也是最新的7.3,本来是7.2的

为了防止在软件更新时升级了内核及系统版本的情况,按照阿里云给出的帮助文档,我们做如下修改

打开yum.conf文件

1
vi /etc/yum.conf

添加代码

1
2
exclude=kernel*
exclude=centos-release*

这样就防止升级了,如果还是不懂可以,参考帮助文档

接着我们可以开始升级软件包了

1
yum -y update

-y 参数是在执行过程中,遇到的交互默认选择 yes

安装JDK

访问Oracle官网下载jdk,因为Oracle搞了cookie验证,所以wget不方便

下载地址-http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html

安装jdk之前一定要把之前的版本卸载掉

查看之前已经安装的jdk rpm

1
rpm -qa | grep jdk

查到包名之后,我们就可以卸载了

1
rpm -e 包名

下载完安装包之后,我们用scp命令传到服务器

1
scp ~/Downloads/jdk-8u111-linux-x64.rpm root@maijinta.top:/usr/local/src

因为我已经添加信任,所以就不用输密码了

如果一定要用wget的方法,用服务器直接下载的话,我提供下面的方法

1
2
3
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.rpm
# 或者
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.rpm

下面就开始安装rpm包了

1
rpm -ivh jdk-8u111-linux-x64.rpm

安装好以后,在/etc/profile文件中配置环境变量

1
vi /etc/profile

加入下面的内容

1
2
3
export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

查看版本号

1
java -version 或 javac -version

查看环境变量

1
2
echo $PATH
#输出了/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/java/default/bin

安装Tomcat

我下载的是tomcat 8.5,下载地址是-http://tomcat.apache.org/download-80.cgi

1
wget http://apache.fayea.com/tomcat/tomcat-8/v8.5.11/bin/apache-tomcat-8.5.11.tar.gz

解压

1
tar zxvf apache-tomcat-8.5.11.tar.gz

转移文件

1
mv apache-tomcat-8.5.11 /usr/local/tomcat

运行Tomcat

1
2
cd bin
./startup.sh

停止Tomcat

1
./shutdown.sh

安装mysql

下载安装rpm

1
2
3
cd /usr/local/src
wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
rpm -ivh mysql57-community-release-el7-9.noarch.rpm

安装mysql

1
yum install mysql-community-server

安装mysql要好长一段时间,结果中途断网了,真悲剧

1
2
3
4
5
6
/var/run/yum.pid 已被锁定,PID 为 8095 的另一个程序正在运行。
Another app is currently holding the yum lock; waiting for it to exit...
另一个应用程序是:yum
内存: 88 M RSS (480 MB VSZ)
已启动: Wed Mar 1 18:56:02 2017 - 1:48:09之前
状态 :睡眠中,进程ID:8095

只能删除该进程

1
rm -rf /var/run/yum.pid

清理之前下的缓存后重新下载

1
2
yum clean all
yum install mysql-community-server

下面的过程和之前的文章一样-Centos7 mysql 安装篇

安装Nginx

先查看yum可以安装的版本

1
yum info nginx

我的是1.10.2,所以就打算用他的了

1
yum install nginx

因为这样安装不用自己去装依赖,安装完也可以用命令去查看版本

1
nginx -v

开启服务

1
systemctl start nginx

查看状态

1
systemctl status nginx

当然也可以更换软件源,首先新建一个repo,例如 nginx.repo

1
vim /etc/yum.repos.d/nginx.repo

编辑内容如下

1
2
3
4
5
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

这里配置的是mainline version,如果想用稳定版,将baseurl中的mainline删除即可

配置Nginx

用yum安装的nginx,配置文件在/etc/nginx/nginx.conf这里

1
vi /etc/nginx/nginx.conf

添加监听端口,因为tomcat是8080端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server {
listen 80;
#listen [::]:80 default_server;
server_name www.maijinta.top;
root /usr/share/nginx/html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
proxy_pass http://127.0.0.1:8080;
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

然后重启服务

1
systemctl restart nginx

安装Redis

目前稳定版是3.2.8,其实应该不管版本直接下stable版本就好了

1
wget http://download.redis.io/releases/redis-stable.tar.gz

首先可以判断是否装了tcl

1
rpm -qa tcl

有版本号回复说明装了

也可以用which tclwhereis tcl

接下来就解压,并移到想要的位置

1
2
tar zxvf redis-stable.tar.gz
mv redis-stable /usr/local/

进入redis目录,编译

1
2
cd /usr/local/redis-stable
make

然后编译检查

1
2
make test
#成功后会提示 \o/ All tests passed without errors!

如果它提示缺什么,就装什么

编译检查很持续一段时间,结束后就可以安装了

1
make install

安装完就执行

1
redis-server

看到这个图就说明成功了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
               _._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.8 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 20631
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'

设置redis 服务后台启动,在配置文件 redis.conf 中设置

1
daemonize yes #默认是no

然后用这个配置启动

1
redis-server redis.conf

查看进程,果然redis已经启动了

1
2
ps -aux #查看所有进程
ps -ef|grep redis #只看redis

用客户端测试

1
2
3
redis-cli
set name frank
get name

测试成功

关闭redis服务

1
2
redis-cli shutdown
pkill redis-server #杀死进程

修改配置文件

1
2
3
vim redis.conf
#requirepass foobared #在这里把注释去掉,换个密码,如requirepass 123456
#bind 127.0.0.1 #加上注释,允许远程访问

查看网络监听

1
netstat -nlt|grep 6379

看到网络监听从127.0.0.1:6379 变成 0 0.0.0.0:6379,表示Redis已经允许远程登陆访问

修改redis-cli密码,默认是空

1
2
3
4
5
6
7
执行redis-cli #登录
执行config get requirepass
得到 1) "requirepass"
2) "" #由此可见是没密码的
执行config set requirepass 123456 #设置密码
需要重新登陆
执行redis-cli -h 127.0.0.1 -p 6379 -a 123456或redis-cli -a 123456

开机启动配置

1
echo "/usr/local/redis-stable/redis-server /usr/local/redis-stable/redis.conf &" >> /etc/rc.local

安装vsftpd

直接yum安装

1
yum -y install vsftpd

启动vsftpd服务

1
2
3
systemctl restart vsftpd.service  # 重启服务
systemctl start vsftpd.service # 启动服务
systemctl status vsftpd.service # 服务状态查看

修改配置文件

1
vim /etc/vsftpd/vsftpd.conf
1
2
3
4
5
6
7
8
9
10
11
12
anonymous_enable=NO        # 不允许匿名访问,禁用匿名登录
chroot_local_user=YES # 启用限定用户在其主目录下
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
use_localtime=YES # 使用本地时(自行添加)
local_enable=YES # 允许使用本地帐户进行FTP用户登录验证
allow_writeable_chroot=YES # 如果启用了限定用户在其主目录下需要添加这个配置,解决报错 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
xferlog_enable=YES # 启用上传和下载的日志功能,默认开启。
local_umask=022 # 设置本地用户默认文件掩码022
# FTP上本地的文件权限,默认是077,不过vsftpd安装后的配置文件里默认是022
ascii_upload_enable=YES #设定支持ASCII模式的上传和下载功能
ascii_download_enable=YES

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了

所以要添加 allow_writeable_chroot=YES

创建新用户

1
2
3
4
5
6
#创建用户 ftpuser 指定 /var/ftp/public_root 目录
useradd -d /var/ftp/public_root -g ftp -s /sbin/nologin ftpuser
# 设置用户 ftpuser 的密码
passwd ftpuser
# 把 /home/vsftpd 的所有权给ftpuser.root
# chown -R ftpuser.root /var/ftp/public_root 这步不用做,做了应该也没事

-s:禁止此用户登录SSH的权限

/sbin/nologin:不允许此用户登录系统,但可以登录FTP

权限设置

1
2
3
4
<!--更改目录所有者-->
chown ftpuser /var/ftp/public_root
<!--更改目录权限-->
chmod -R 755 /var/ftp/public_root

设置开机重启

1
systemctl enable vsftpd.service

删除用户

1
userdel ftpuser

最后在Filezilla中创建新站点就可以用了