安装jdk(1.7)
jdk通过rpm方式安装,为了下载速度更快,使用阿里的源。修改rpm:http://mirrors.aliyun.com/help/centos
- 在该网站下载jdk的rpm原文件
- 使用xShell 5的 SSH Secure File Transfer Client将rpm文件从windows环境中拷贝到centos中
- 清理系统默认自带的jdk
执行rpm -qa | grep jdk
查看已经能够自带的jdk,然后卸载(没有就不用卸载了)。卸载命令:sudo yum remove xxx(xxx为上一个命令查到的结结果)
- 赋权限
sudo chmod 777 jdk-7u80-linux-x64.rpm
该命令权限全开,将来用户、用户组和其他人都拥有读写执行权限 - 安装
sudo rpm -ivh jdk-7u80-linux-x64.rpm
该命令默认将jdk安装在/usr/java下,切换到/usr/java/jdk1.7.0_80/bin
改目录下,java -version
若执行成功,则表明jdk安装成功 - 配置环境变量
为了在系统任意位置使用java命令,将jdk路径添加到系统变量中。
6.1 修改系统环境变量文件
sudo vi /etc/profile
6.2 向文件里面追加以下内容
JAVA_HOME=/usr/java/jdk1.7.0_80
JRE_HOME=/usr/java/jdk1.7.0_80/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
6.3 使修改生效
source /etc/profile //修改立即生效
echo $PATH //查看PATH值
6.4 验证jdk
在系统任意路径中·java -version·,若成功表示配置成功,否则配置失败。
安装tomcat7
- 在该网站下载tomcat的压缩文件
- 使用xShell 5的 SSH Secure File Transfer Client将rpm文件从windows环境中拷贝到centos中。tomcat是绿色版的(免安装,解压即可用),所以我在系统根目录下创建了一个developer目录,将tomcat解压在该目录下。
- 修改tomcat字符集
打开conf/server.xml,在
中添加URIEncoding="UTF-8"
- 开启防火墙8080端口
若不开放8080端口,就只有本机能够访问tomcat,windows系统也不能访问linux中的tomcat。
在 /etc/sysconfig/iptables中添加-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
,然后重启防火墙。 - 启动和关闭tomcat
- 启动:切到tomcat的bin目录下
./startup.sh
- 关闭:切到tomcat的bin目录下
./shutdown.sh
开启和关闭防火墙的几个命令
Linux操作系统中永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop
安装maven(3.0.5)
- 在该网站下载maven的压缩文件
- 使用xShell 5的 SSH Secure File Transfer Client将rpm文件从windows环境中拷贝到centos中。tomcat是绿色版的(免安装,解压即可用),所以我在系统根目录下创建了一个developer目录,将tomcat解压在该目录下。
- 以上两步可以换成在linux的developer目录下直接
wget http://learning.happymmall.com/maven/apache-maven-3.0.5-bin.tar.gz
(该方式下载速度较慢,适用于下载小文件),然后解压缩tar -zxvf apache-maven-3.0.5-bin.tar.gz
- 配置环境变量
向/etc/profile文件中追加以下内容:
export MAVEN_HOME=/home/admin/developer/apache-maven-3.0.5
export PATH=$PATH:$MAVEN_HOME/bin
配置完成后使之立即生效source /etc/profile
- 验证配置成功
在系统任意目录下mvn -version
检查是否成功 - 配置阿里云的镜像仓库
在/apache-maven-3.0.5/conf/settings.xml文件的mirrors节点里面加上一个mirror子节点,内容如下:
nexus-aliyun
*
Nexus aliyun
http://maven.aliyun.com/nexus/content/groups/public
安装vsftpd(2.2.2)
- 检查linux是否自带vsftpd
rpm -qa | grep vsftpd
,若有则卸载之 - 安装
sudo yum -y install vsftpd
,默认的配置文件在/etc/vsftpd/vsftpd.conf - 创建虚拟用户
3.1 创建ftp目录
我在/home/admin/developer下创建了一个叫做ftpfile的目录,以后上传的文件将保存到该目录
3.2 添加匿名用户
sudo useradd ftpuser -d /ftpfile/ -s /sbin/nologin
,添加一个叫做ftpuser的用户。
3.3 修改ftpfile文件权限
sudo chown -R ftpuser:ftpuser /ftpfile/
将ftpuser用户与ftpfile目录关联起来,并赋予用户和用户组的权限
3.4 重设frp密码
sudo passwd ftpuser
我将其设置为admin - 配置ftp服务器
4.1 在ftpfile下新建一个index.html文件,写入一点内容。
4.2 配置ftp服务器指向/ftpfile/,并配置用户到frp服务器。
编辑/etc/vsftp/vsftp.conf,将85行ftpd_banner=Welcome to blah FTP service.前的#删除,并回车添加如下:
local_root=/ftpfile
anon_root=/ftpfile
这两行分别配置服务器指向ftpfile目录和匿名用户执行ftpfile目录。
找到chroot_list_enable=YES(大概在100行)
,将前面的#删除,找到chroot_list_file=/etc/vsftpd/chroot_list
(大概在102行),将前面的#删除
添加uses_localtime=yes
,就添加在之前的 anon_root=/ftpfile
下一行就行,表示ftp服务器使用本地时间
设置匿名访问anonymous_enable=YES
将YES改为NO
在文件最后添加
pasv_min_port=61001
pasv_max_port=62000
这两行表示设置被动传输端口的范围
保存退出
重启vsftpd服务sudo service vsftpd restart
- 配置防火墙
在/etc/sysconfing/iptables中添加如下内容:
-A INPUT -p TCP --dport 61001:62000 -j ACCEPT
-A OUTPUT -p TCP --sport 61001:62000 -j ACCEPT
-A INPUT -p TCP --dport 20 -j ACCEPT
-A OUTPUT -p TCP --sport 20 -j ACCEPT
-A INPUT -p TCP --dport 21 -j ACCEPT
-A OUTPUT -p TCP --sport 21 -j ACCEPT
保存退出后重启防火墙sudo service iptables restart
重启vsftpd服务sudo service vsftpd restart
注: 启动vsftpd服务sudo service vsftpd start
停止vsfptd服务sudo service vsftpd stop
- 安装ftp
若使用ftp命令返回command not found才需要自己安装ftp,否则不用再次安装,安装命令yum install ftp
,安装后重启vsftpd服务 - 更改selinux权限(不知道这是什么鬼,据说要是不改匿名用户不可以创建文件和文件夹)
vi /etc/sysconfig/selinux
将SELINUX=enforcing改为SELINUX=disabled,这个修改完成后要重启机器才能生效 - 测试
测试有两种方式:
8.1 在浏览器上测试
浏览器地址栏输入ftp://localhost,使用账号:ftpuser 密码:admin登陆
8.2 在命令行测试
ftp localhost
,使用账号:ftpuser 密码:admin登陆
8.3 在windows系统环境下测试
浏览器地址栏输入ftp://xxx.xxx.xxx.xxx, xxx代表虚拟机的ip地址 - 通过nginx的反向代理映射img.imooc.com/xxx.jpg到vsftpd服务器出错问题
nginx服务器反向代理有两种情况,第一种是反向代理http请求到另一个http请求,第二种是反响代理http请求到本地的vsftpd服务器。第一种情况比较简单,第二种情况我搭建的时候出现访问vsftpd的主目录(img.imooc.com)报403错误或访问图片(img.imooc.com/xxx.jpg)报404 not found,这个是因为我配置nginx的转发配置时使用的是自定义root路径root /ftpfile
,此时nginx的权限不够就报错。解决办法是在nginx.confT
安装nginx服务器
nginx服务器是一款轻量级的web服务器,它可以作为http反向代理服务器、负载均衡服务器、邮件代理服务器。
- 安装依赖
yum install gcc
yum install pcre-devel
yum install zlib zlib-devel
yum install openssl openssl-devel
- 下载压缩包
wget http://learning.happymmall.com/nginx/Linux-nginx-1.10.2.tar.gz
- 解压
tar -zxvf Linux-nginx-1.10.2.tar.gz
- 编译安装
进入解压缩文件的nginx目录执行
./configure
make && make install
系统默认将nginx安装在/usr/local/nginx中
- 常用命令
测试配置文件是否正确:/usr/local/nginx/sbin/nginx -t
启动:/usr/local/nginx/sbin/nginx
停止:/usr/local/nginx/sbin/nginx -s stop
重启:/usr/local/nginx/sbin/nginx -s reload
查看进程:ps -ef |grep nginx
平滑重启:kill -HUP [nginx主进程号(上面查到的pid)]
- 增加防火墙访问权限
编辑/etc/sysconfig/iptables文件开放80端口(nginx服务器默认使用80端口),重启防火墙 - nginx虚拟域名配置与测试验证
- 编辑nginx的配置文件
sudo vim /usr/local/nginx/conf/nginx.conf
,增加include vhost/*.conf;
- 创建vhost文件夹
在/usr/local/nginx/conf下创建一个叫vhost的文件夹 - 创建域名转发配置文件
在vhost文件夹下创建一个叫www.imooc.com.conf的文件,在文件中写入如下内容:
- 编辑nginx的配置文件
server {
listen 80;
autoindex on;
server_name www.imooc.com;
access_log /usr/local/nginx/logs/access.log combined;
index index.html index.htm index.jsp index.php;
if ( $query_string ~* ".*[\;'\<\>].*" ) {
return 404;
}
location / {
proxy_pass http://127.0.0.1:8080;
add_header Access-Control-Allow_Origin *;
}
}
改配置表示将对www.imooc.com的请求转发到http://127.0.0.1:8080这个ip地址
重启nginx /usr/local/nginx/sbin/nginx -s reload
4. 修改hosts文件
编辑hosts文件sudo vim /etc/hosts
,增加以下内容:
192.168.11.130 www.imooc.com
,重启浏览器
5. 访问验证
- 若访问localhost:80出现nginx服务器主页表示nginx正确启动
- 若访问www.imooc.com出现tomcat主页表示已成功转发http请求
安装mysql
安装就不写了,安装很简单,主要是配置。看视频时,视频中用的mysql是5.1版本,而我自己用的是5.7版本,两个版本略有差别,配置时要看情况操作。
- 字符集配置(不同版本的mysql配置有差别)
编辑mysql的配置文件/etc/my.cnf
,在5.1版本时,为了解决中文乱码问题设置默认字符集为utf8时,在my.ini内的[mysql] 和 [mysqld] 项中都是写:default-character-set=utf8
,到了5.5版本, [mysql]项内可以这么写, [mysqld] 项内这么写在启动MySQL服务时会有1067错误,经查询发现这里必须要这样写:character-set-server=utf8
- 自启动配置
检查mysql是否已经开机自启动chkconfig --list
,若打印的结果中没有mysql则chkconfig mysql on
在重新检查,接下来使用chkconfig --list mysql
查看2到5位状态是否为on,状态为on就ok - 防火墙配置
编辑/etc/sysconfig/iptables文件,添加
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
重启防火墙sudo service iptables restart
- 修改用户密码
set password for root@localhost = password('password');
root:用户名
locahost:ip(网络限制)
这条语句从侧面反应了同一个用户在不同的网络限制下可以设置不同的密码 - 删除匿名用户(这个是为了系统安全)
- 查看是否存在匿名用户
select user,host from mysql.user;
- 如果存在user为空的用户就删除
delete from mysql.user where user='';
- 再次查看,确认已经删除匿名用户
select user,host from mysql.user;
- 刷新,使之生效
flush privileges
- 查看是否存在匿名用户
- 创建新用户
CREATE USER 'mmall'@'localhost' IDENTIFIED BY 'admin';
mmall:新用户名
localhost:ip(网络限制),localhost表示只允许该用户本地登录
admin:密码 - 建库
create database
mmalldefault character set utf8 collate utf8_general_ci;
这里要注意的是`是反引号,而不是单引号 - 为用户赋予访问权限
为用户赋予权限时可以在不同情况下赋予不同的权限,这里只写几个当例子-
GRANT ALL ON mmall.* TO 'mmall'@'%';
我学习的时候是这样设置的。它表示将对mmall库下的所有表的所有操作的权限赋予mmall用户在任意ip下操作 -
grant all privileges on mmall.* to 'username' @localhost idenified by 'yourpassword';
表示将mmall库下的所有表的所有操作权限赋予username用户在本地的访问 -
grant select,insert,update on mmall.* to 'username'@'%' identified by 'password';
表示将mmall库中所有表的增、改、查权限赋予username用户在任意ip下操作
-
注:2和3种的命令在高版本中可能不能用,因为给用户赋权限肯定是root用户才可以操作,而赋权限时肯定已经登陆,那么为什么还要在sql语句中写密码呢?
- mysql权限(还没用过)
dql: 拥有select权限
dml: 拥有insert、update、delete权限
ddl: 拥有create权限
dcl: 拥有grant权限
10 远程连接
防火墙开放3306端口后,可以使用navicat工具远程登陆mysql,这让想起实习的时候在centos中安装mysql workbench费了老大劲,当时还不如直接在windows中用navicat远程登陆来的方便,现在想起来,当时的行为简直弱智,mysql workbench搞了不知道多久才弄好。