web服务器常见配置搭建详解(超详细)

搭建web网站服务器 访问https://www.openlab.com/money页面成功。访问student网页需要输入用户名和密码。访问成功显示data网页内容。输入正确用户及密码访问成功。点击高级,接受则访问成功。重启服务时需要输入密钥。 阅读详情
AI摘要

本文详细介绍服务器环境搭建流程,包括JDK、Tomcat、Nginx、MySQL、Redis、Zookeeper等核心组件的安装与配置,适合新手快速入门。

前言:

本博客借鉴一些写的比较好的博客,进行归纳总结,整理了一篇比较详细的服务器常见配置搭建教程
一来是和大家一起分享,二来也是作为自己的学习笔记记录一下。

温馨提示:

篇幅较长,请分阶段选择性查看。觉得不错,可以收藏一下,方便后期查看哦。

目录

体系:jdk + tomcat + Nginx + MySQL + Redis + Zookeeper

  • jdk1.8 安装搭建

  • tomcat 安装配置

  • Nginx 安装配置

  • MySQL5.7 安装配置

  • Redis 安装配置

  • zookeeper 安装配置

  • arthas工具安装配置

JDK1.8安装配置

Linux安装JDK完整步骤

1、检查一下系统中的jdk版本

[root@localhost software]# java -version

显示:

openjdk version "1.8.0_102"
OpenJDK Runtime Environment (build 1.8.0_102-b14)
OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)

2、检测jdk安装包

[root@localhost software]# rpm -qa | grep java

显示:

java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
python-javapackages-3.4.1-11.el7.noarch
tzdata-java-2016g-2.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64
java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64

3、卸载openjdk

[root@localhost software]# rpm -e --nodeps tzdata-java-2016g-2.el7.noarch
[root@localhost software]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
[root@localhost software]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
[root@localhost software]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
[root@localhost software]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64

或者使用

[root@localhost jvm]# yum remove *openjdk*

之后再次输入rpm -qa | grep java 查看卸载情况:

[root@localhost software]# rpm -qa | grep java
python-javapackages-3.4.1-11.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch

4、安装新的jdk

首先到jdk官网上下载你想要的jdk版本,下载完成之后将需要安装的jdk安装包放到Linux系统指定的文件夹下,并且命令进入该文件夹下:

[root@localhost software]# ll
total 252664
-rw-r--r--. 1 root root  11830603 Jun  9 06:43 alibaba-rocketmq-3.2.6.tar.gz
-rw-r--r--. 1 root root  43399561 Jun  9 06:42 apache-activemq-5.11.1-bin.tar.gz
-rwxrw-rw-. 1 root root 185540433 Apr 21 09:06 jdk-8u131-linux-x64.tar.gz
-rw-r--r--. 1 root root   1547695 Jun  9 06:44 redis-3.2.9.tar.gz
-rw-r--r--. 1 root root  16402010 Jun  9 06:40 zookeeper-3.4.5.tar.gz

解压 jdk-8u131-linux-x64.tar.gz安装包

[root@localhost software]# mkdir -p /usr/lib/jvm
[root@localhost software]# tar -zxvf jdk-8u131-linux-x64.tar.gz -C /usr/lib/jvm

5、设置环境变量

[root@localhost software]# vim /etc/profile

在最前面添加:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_131  
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export  PATH=${JAVA_HOME}/bin:$PATH

6、执行profile文件

[root@localhost software]# source /etc/profile

这样可以使配置不用重启即可立即生效。

7、检查新安装的jdk

[root@localhost software]# java -version

显示:

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

到此为止,整个安装过程结束。


Tomcat服务器安装与配置

首先在/usr/local/下建立一个tomcat的文件夹

cd /usr/local/

mkdir tomcat

cd tomcat/

在网上下载tomcat的包,我现在的是tomcat8,也可根据实际需要到官网上获取下载链接。

wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.20/bin/apache-tomcat-8.5.20.tar.gz

然后解压缩

tar zxvf apache-tomcat-8.5.20.tar.gz

将tomcat中的/bin/catalina.sh 脚本 拷贝到init.d下,这样是为了比较方面的启动tomcat,在任务地方通过service tomcat start 就可以启动tomcat

cp -p /usr/local/tomcat/bin/catalina.sh /etc/init.d/tomcat
vim /etc/init.d/tomcat

在第二行加入以下内容:

# chkconfig: 112 63 37
# description: tomcat server init script
# Source Function Library
. /etc/init.d/functions
JAVA_HOME=你的jdk路径
CATALINA_HOME=tomcat安装路径

例如:我的是

JAVA_HOME=/usr/java/jdk1.8.0_144/

CATALINA_HOME=/usr/local/tomcat

保存文件后执行以下操作

chmod 755 /etc/init.d/tomcat
chkconfig --add tomcat
chkconfig tomcat on

启动tomcat:

service tomcat start

可在浏览器输入http://你的ip:8080,tomcat默认端口是8080,如果成功启动的话会看到tomcat主界面

配置
Linux下tomcat配置和windows下是一样的,这里讲下配置tomcat服务的访问端口:

cd /usr/local/tomcat/conf/
vim server.xml

找到:

<Connector port="8080" protocol="HTTP/1.1"

修改为:

<Connector port="你想要的端口" protocol="HTTP/1.1"

重启tomcat

service tomcat stop

service tomcat start

这样tomcat就配置成功了


Linux Nginx安装配置

  • 安装依赖
yum install gcc
yum install pcre-devel
yum install zlib zlib-devel
yum install openssl openssl-devel
//一键安装上面四个依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
  • 下载nginx的tar包
//创建一个文件夹
cd /usr/local
mkdir nginx
cd nginx
//下载tar包
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -xvf nginx-1.13.7.tar.g
  • 安装nginx
//进入nginx目录
cd /usr/local/nginx
//执行命令
./configure
//执行make命令
make
//执行make install命令
make install
  • Nginx常用命令
//测试配置文件
安装路径下的/nginx/sbin/nginx -t
//启动命令
安装路径下的/nginx/sbin/nginx
//停止命令
安装路径下的/nginx/sbin/nginx -s stop
或者 : nginx -s quit
//重启命令
安装路径下的/nginx/sbin/nginx -s reload
//查看进程命令
ps -ef | grep nginx
//平滑重启
kill -HUP Nginx主进程号
  • 配置防火墙
//打开防火墙文件
sudo vim /etc/sysconfig/iptables
//新增行  开放80端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
//保存退
//重启防火墙
sudo service iptables restart
Nginx虚拟域名配置及测试验证
//编辑nginx.conf
sudo vim /usr/local/nginx/conf/nginx.conf
//增加行 
include vhost/*.conf
//保存退出
//在/usr/local/nginx/conf目录新建vhost文件夹
mkdir vhost
//创建每个域名的配置
sudo vim jimisun.com.conf
//节点中增加入响应的配置 端口转发  或者访问文件系统
  • Nginx启动
//进入nginx安装目录
cd sbin
sudo ./nginx
测试访问
http://ip地址
  • Nginx负载均衡配置

Nginx集反向代理和负载均衡于一身,在配置文件中修改配就可以实现

首先我们打开配置文件

[root@localhost nginx]# vim conf/nginx.conf

每一个server就是一个虚拟主机,我们有一个当作web服务器来使用

listen 80;代表监听80端口
server_name xxx.com;代表外网访问的域名
location / {};代表一个过滤器,/匹配所有请求,我们还可以根据自己的情况定义不同的过滤,比如对静态文件js、css、image制定专属过滤
root html;代表站点根目录
index index.html;代表默认主页

这样配置完毕我们输入域名就可以访问到该站点了。

负载均衡功能往往在接收到某个请求后分配到后端的多台服务器上,那我们就需要upstream{}块来配合使用

upstream xxx{};upstream模块是命名一个后端服务器组,组名必须为后端服务器站点域名,内部可以写多台服务器ip和port,还可以设置跳转规则及权重等等
ip_hash;代表使用ip地址方式分配跳转后端服务器,同一ip请求每次都会访问同一台后端服务器
server;代表后端服务器地址

server{};server模块依然是接收外部请求的部分
server_name;代表外网访问域名
location / {};同样代表过滤器,用于制定不同请求的不同操作
proxy_pass;代表后端服务器组名,此组名必须为后端服务器站点域名

server_name和upstream{}的组名可以不一致,server_name是外网访问接收请求的域名,upstream{}的组名是跳转后端服务器时站点访问的域名
  • 示例
配置Nginx负载均衡

vi /nignx目录/nginx.conf

#添加下面这段 backend可以自由命名

upstream backend {

   #添加服务器到负载均衡

     server 192.168.1.252;

             server 192.168.1.251 weight=2;#设置该服务器在负载均衡中的权重  默认为1;越高则访问的频次越大

             server 192.168.1.252 down;  #表示down掉这台服务器,不参与负载均衡

             server 192.168.1.247 backup; #备用服务器 当其他服务器很忙或者down掉之后才会启动这台的

         }

#配置参数
#max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

#fail_timeout:max_fails次失败后,暂停的时间。

 

server {

        listen       80;

        server_name  localhost;

 

        location / {

             #反向代理的地址

             proxy_pass http://backend;     

        }

}

Linux MySQL安装

将下载的压缩包复制到linux服务器/usr/local/路径下(下载地址https://dev.mysql.com/downloads/mysql/,进去下载默认是最新的,找到Looking for previous GA versions?,点击就可以找到以前的版本,Linux-Generic是通用版的意思)

1、进入压缩包存放目录

[root@localhost ~]# cd /usr/local

2、解压压缩包

[root@localhost local]# tar -xzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

3、修改文件夹名字

将解压后的文件夹修改名字,文件夹名字改为mysql

4、检查并创建用户和用户组

  [root@localhost local]# cat /etc/group | grep mysql
  [root@localhost local]# cat /etc/passwd |grep mysql
  [root@localhost local]# groupadd mysql
  [root@localhost local]# useradd -r -g mysql mysql

5、创建data文件夹

某个版本之后就没有data文件夹了

[root@localhost local]mkdir /usr/local/mysql/data

6、授权目录和用户


[root@localhost /]# cd /usr/local/ 
[root@localhost local]# chown -R mysql:mysql mysql/
[root@localhost local]# chmod -R 755 mysql/

7、安装并初始化(重要*)

执行下面之前去/etc/目录下查看是否有my.cnf配置文件,如果有,删除或者修改名字备份起来!不然会出现各种PID或者SOCK有关的问题

某个版本之后这个步骤是下面这样,以前是mysql_install_db,datadir就是安装路径,basedir就是根目录

[root@localhost local]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql

执行完上面之后,检查是否有Error,有的话及时解决。

[root@localhost local]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
2019-07-18T07:38:20.300936Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server      option (see documentation for more details).
2019-07-18T07:38:21.037889Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-07-18T07:38:21.124063Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-07-18T07:38:21.194242Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been start     ed. Generating a new UUID: 0448b7a0-a92f-11e9-ac91-fa163e17d701.
2019-07-18T07:38:21.195622Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-07-18T07:38:21.196412Z 1 [Note] A temporary password is generated for root@localhost: n2ta1yWih9-/

最后一行会有默认生成的密码,记下来

A temporary password is generated for root@localhost: n2ta1yWih9-/

8、复制启动脚本到资源目录

[root@localhost local]# cd mysql
[root@localhost mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

提示是否覆盖的话,可能之前装过没删除,输入y覆盖

9、增加mysqld服务控制脚本执行权限

[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysqld
10、将mysqld服务加入到系统服务
[root@localhost mysql]# chkconfig --add mysqld

11、检查mysqld服务是否已经生效

[root@localhost mysql]# chkconfig --list mysqld
mysqld          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

12、启动mysql

[root@localhost mysql]# service mysqld start

显示SUCCESS的话,到这里就已经启动成功了

12-2、启动mysql失败
提示找不到mysql命令的话

[root@localhost mysql]# ln -s /usr/local/mysql/bin/mysql /usr/bin

13、登录mysql
失败的话看下面

[root@localhost mysql]# service mysqld start
Starting MySQL.2019-07-18T07:41:24.268830Z mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists.
The server quit without updating PID file (/var/lib/mysql/z[失败]pid).
[root@localhost mysql]# mkdir /var/lib/mysql
[root@localhost mysql]# service mysqld start
Starting MySQL.The server quit without updating PID file (/[失败]b/mysql/localhost.pid).
[root@localhost mysql]# mysql -uroot -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
13-2、登录mysql失败
失败信息:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
[root@localhost mysql]# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
然后返回13步重新执行

14、(在mysql命令行模式下)修改密码

下面最后面的root就是密码,修改完之后退出重新登录一次试试,有些在修改密码的时候执行下面的会报错,可以参考https://blog.youkuaiyun.com/q258523454/article/details/84555847,或者百度一下,很容易解决
mysql> flush privileges;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
mysql> flush privileges;
mysql> quit
[root@localhost mysql]# mysql -uroot -p

15、配置3306端口
开启防火墙(如果以前已经安装过mysql的,这个一般都已经设置好了,我的是新建的虚拟机,所以没有设置)

配置方法:打开/etc/sysconfig/iptables文件,找到22端口(这个是默认配置好的),复制多一行在下面,把22改成3306就行,记住,不要复制到最后一行,有些竟然没有iptables的文件?这是可以生成的,百度一下就行,有些防火墙文件不是这个,可能要先取消或者设置,之前百度过,忘了

当然下面这个步骤也可以用vim命令进行编辑

修改完保存之后执行命令行重启防火墙

[root@localhost mysql] service iptables restart

有些Linux版本的重启如下

[root@localhost mysql] systemctl restart iptables.service

16、测试连接
本地使用Navicat连接测试,填写完点击连接测试

显示错误信息不允许连接1130 - Host ‘192.168.114.1’ is not allowed to connect to this MySQL server

解决方法:(如果还没登录mysql,记得登录先)

mysql> flush privileges;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
mysql> flush privileges;

执行完再次连接测试

还是报错1045 - Access denied for user ‘root’@‘192.168.114.1’ (using password:YES),不过这次结果是密码错误,原因是因为未授权,第一次启动是这样的,解决如下:

mysql> grant all privileges on *.* to 'root'@'%' identified by 'root';
mysql> flush privileges;

再去连接测试就行了,到这里就已经安装完毕,可以使用了


Redis安装配置

1.可以通过官网下载 地址:http://download.redis.io/releases/redis-3.0.0.tar.gz
 2.使用linux wget命令

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

将redis-3.0.0.tar.gz拷贝到/usr/local下

cp redis-3.0.0.rar.gz /usr/local

解压源码

tar -zxvf redis-3.0.0.tar.gz

进入解压后的目录进行编译

cd /usr/local/redis-3.0.0

安装到指定目录 如 /usr/local/redis

make PREFIX=/usr/local/redis install

redis.conf是redis的配置文件,redis.conf在redis源码目录。
拷贝配置文件到安装目录下
进入源码目录,里面有一份配置文件 redis.conf,然后将其拷贝到安装路径下

cd /usr/local/redis
cp /usr/local/redis-3.0.0/redis.conf  /usr/local/redis/bin

进入安装目录bin下

cd /usr/local/redis/bin
此时我们看到的目录结构是这样的

redis-benchmark redis性能测试工具
redis-check-aof AOF文件修复工具
redis-check-rdb RDB文件修复工具
redis-cli redis命令行客户端
redis.conf redis配置文件
redis-sentinal redis集群管理工具
redis-server redis服务进程
  • 启动redis
  • 前端模式启动
    直接运行bin/redis-server将以前端模式启动,前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法
./redis-server
  • 后端模式启动
    修改redis.conf配置文件, daemonize yes 以后端模式启动
vim /usr/local/redis/bin/redis.conf

执行如下命令启动redis:

cd /usr/local/redis
./bin/redis-server ./redis.conf
连接redis

/usr/local/redis/bin/redis-cli
  • 关闭redis
    强行终止redis进程可能会导致redis持久化数据丢失。正确停止Redis的方式应该是向Redis发送SHUTDOWN命令,命令为:
cd /usr/local/redis
./bin/redis-cli shutdown
强行终止redis

pkill redis-server
让redis开机自启

vim /etc/rc.local
//添加
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis-conf
至此redis已经全部安装完,后面我会分享redis.conf 详细配置以及说明。
  • 配置
 修改 redis.conf
 vim redis.conf
 修改内容如下:

#修改为守护模式
daemonize yes

#设置进程锁文件
pidfile /usr/local/redis/redis.pid

#端口
port 6379

#客户端超时时间
timeout 300

#日志级别
loglevel debug

#日志文件位置
logfile /usr/local/redis/log-redis.log

#设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id
databases 8

##指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
#save <seconds> <changes>

#Redis默认配置文件中提供了三个条件:
save 900 1
save 300 10
save 60 10000

#指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,

#可以关闭该#选项,但会导致数据库文件变的巨大
rdbcompression yes

#指定本地数据库文件名
dbfilename dump.rdb

#指定本地数据库路径
dir /usr/local/redis/db/

#指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能
#会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有
#的数据会在一段时间内只存在于内存中
appendonly no
#指定更新日志条件,共有3个可选值:
#no:表示等操作系统进行数据缓存同步到磁盘(快)
#always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
#everysec:表示每秒同步一次(折衷,默认值)
appendfsync everysec
  

5. 修改权限为当前使用者 xxx
chown -R xxxx /usr/local/redis 

6.启动服务
 cd /usr/local/redis
./bin/redis-server ./etc/redis.conf

7.命令行访问服务
cd /usr/local/redis
./bin/redis-cli
  • 总结Linux 、Redis 操作常用命令

Linux:

cd /usr 从子文件夹进入上级文件夹usr
cd local 从父到子
mv /A /B 将文件A移动到B
vi usr/local/redis/redis.conf 编辑redis.conf 文件
:wq 保存修改,并退出

Redis:

Redis-server /usr..../redis.conf 启动redis服务,并指定配置文件
Redis-cli 启动redis 客户端
Pkill redis-server 关闭redis服务
Redis-cli shutdown 关闭redis客户端
Netstat -tunpl|grep 6379 查看redis 默认端口号6379占用情况
  1. Redis的配置

4.1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程

daemonize no

4.2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定

pidfile /var/run/redis.pid

4.3. 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字

port 6379

4.4. 绑定的主机地址

bind 127.0.0.1

4.5.当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能

timeout 300

4.6. 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose

loglevel verbose

4.7. 日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null

logfile stdout

4.8. 设置数据库的数量,默认数据库为0,可以使用SELECT 命令在连接上指定数据库id

databases 16

4.9. 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合

save <seconds> <changes>

Redis默认配置文件中提供了三个条件:

save 900 1

save 300 10

save 60 10000

分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。

4.10. 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大

rdbcompression yes

4.11. 指定本地数据库文件名,默认值为dump.rdb

dbfilename dump.rdb

4.12. 指定本地数据库存放目录

dir ./

4.13. 设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步

slaveof <masterip> <masterport>

4.14. 当master服务设置了密码保护时,slav服务连接master的密码

masterauth <master-password>

4.15. 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH 命令提供密码,默认关闭

requirepass foobared

4.16. 设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息

maxclients 128

4.17. 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区

maxmemory <bytes>

4.18. 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no

appendonly no

4.19. 指定更新日志文件名,默认为appendonly.aof

 appendfilename appendonly.aof

4.20. 指定更新日志条件,共有3个可选值:
no:表示等操作系统进行数据缓存同步到磁盘(快)
always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
everysec:表示每秒同步一次(折衷,默认值)

appendfsync everysec

4.21. 指定是否启用虚拟内存机制,默认值为no,简单的介绍一下,VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中(在后面的文章我会仔细分析Redis的VM机制)

 vm-enabled no

4.22. 虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享

 vm-swap-file /tmp/redis.swap

4.23. 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的(Redis的索引数据 就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0

 vm-max-memory 0

4.24. Redis swap文件分成了很多的page,一个对象可以保存在多个page上面,但一个page上不能被多个对象共享,vm-page-size是要根据存储的 数据大小来设定的,作者建议如果存储很多小对象,page大小最好设置为32或者64bytes;如果存储很大大对象,则可以使用更大的page,如果不 确定,就使用默认值

 vm-page-size 32

4.25. 设置swap文件中的page数量,由于页表(一种表示页面空闲或使用的bitmap)是在放在内存中的,,在磁盘上每8个pages将消耗1byte的内存。

 vm-pages 134217728

4.26. 设置访问swap文件的线程数,最好不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的,可能会造成比较长时间的延迟。默认值为4

 vm-max-threads 4

4.27. 设置在向客户端应答时,是否把较小的包合并为一个包发送,默认为开启

glueoutputbuf yes

4.28. 指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法

hash-max-zipmap-entries 64

hash-max-zipmap-value 512

4.29. 指定是否激活重置哈希,默认为开启(后面在介绍Redis的哈希算法时具体介绍)

activerehashing yes

4.30. 指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件

include /path/to/local.conf

zookeeper

  1. 先进入/usr/local/目录,也可以是其他的目录:
[root@localhost /]# cd /usr/local
  1. zookeeper安装包可以在官网下载。

也可以在后面这个地址下载

http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz

如果链接打不开,就先打开 http://mirror.bit.edu.cn/apache/zookeeper , 再选择版本。

在此目录下载zookeeper安装包:

[root@localhost local]# wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
  1. 解压:
[root@localhost local]# tar -zxvf zookeeper-3.4.13.tar.gz

三、编辑配置文件
1.进入conf目录:

[root@localhost local]# cd zookeeper-3.4.13/conf
  1. 将zoo_sample.cfg这个文件复制为zoo.cfg (必须是这个文件名)
[root@localhost conf]# cp  zoo_sample.cfg  zoo.cfg
  1. 进入zoo.cfg文件进行编辑
[root@localhost conf]# vim zoo.cfg
  1. 按 i 进入编辑模式,修改以下内容:
dataDir=/tmp/zookeeper/data
dataLogDir=/tmp/zookeeper/log
注意:如果想配置集群的话,请在clientPort下面添加服务器的ip。如

server.1=192.168.180.132:2888:3888
server.2=192.168.180.133:2888:3888

server.3=192.168.180.134:2888:3888

如果电脑内存比较小,zookeeper还可以设置成伪集群。也就是全部服务器采用同一个ip,但是使用不同的端口。

  1. 在tmp目录创建目录。
[root@localhost conf]# mkdir /tmp/zookeeper

[root@localhost conf]# mkdir /tmp/zookeeper/data
[root@localhost conf]# mkdir /tmp/zookeeper/log

6.如果是配置集群,还需要在前面配置过的dataDir路径下新增myid文件

[root@localhost conf]# cd /tmp/zookeeper/data

[root@localhost data]# touch myid
[root@localhost data]# vim myid

在data目录下创建文件,文件名为“myid”, 编辑该“myid”文件,并在对应的IP的机器上输入对应的编号。
如在192.168.180.132上,“myid”文件内容就是1。在192.168.180.133上,内容就是2。

四、配置环境变量
1.上面的操作都完事之后,我们需要配置一下环境变量,配置环境变量的命令如下:

[root@localhost zookeeper-3.4.13]# export ZOOKEEPER_INSTALL=/usr/local/zookeeper-3.4.13/
[root@localhost zookeeper-3.4.13]# export PATH=$PATH:$ZOOKEEPER_INSTALL/bin

五、启动zookeeper
1.进入bin目录,并启动zookeep。如果不是在bin目录下执行,启动zookeeper时会报错: bash: ./zkServer.sh: No such file or directory

注意: ./zkServer.sh start前面的 . 不可忽略。

[root@localhost local]# cd /usr/local/zookeeper-3.4.13/bin
[root@localhost bin]# ./zkServer.sh start

2.启动成功效果如下:

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

3.zookeeper的服务端启动后,还需要启动zookeeper的客户端:

[root@localhost bin]# ./zkCli.sh

如果是连接多个不同的主机节点,可以使用如下命令:

./zkCli.sh -server 192.168.180.132:2888

启动成功效果如下:

Connecting to localhost:2181
..........
..........
..........
Welcome to ZooKeeper!
2018-10-25 21:04:54,407 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1029] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2018-10-25 21:04:54,471 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@879] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
[zk: localhost:2181(CONNECTING) 0] 2018-10-25 21:04:54,501 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1303] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x10000712e6f0000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

4.查看状态:

[root@localhost bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: standalone
遇到问题怎么解决?
zookeeper的出错日志会记录在 zookeeper.out。

当前处于哪个目录,执行完zkServer.sh start命令, zookeeper.out就会写在哪个目录。

vim zookeeper.out 可以查看报错信息。然后再搜索解决。

六、zookeeper使用
通过 ./zkCli.sh 进入客户端后,就可以使用命令来操作zookeeper了。

1.创建节点

使用create命令,可以创建一个zookeeper节点。

create [-s]   [-e]  path  data  acl

其中-s表示顺序节点,-e表示临时节点。默认情况下,创建的是持久节点。

path是节点路径,data是节点数据,acl是用来进行权限控制的。

如下:

创建一个叫做/zk-test的节点,内容是"123"

[zk: localhost:2181(CONNECTED) 0] create /zk-test 123

Created /zk-test
创建/zk-test的子节点book,内容是"233"

[zk: localhost:2181(CONNECTED) 7] create  /zk-test/book  233
Created /zk-test/book

2.查看节点内容

使用get命令,可以获取zookeeper指定节点的内容和属性信息。

如下:

[zk: localhost:2181(CONNECTED) 1] get /zk-test

123
cZxid = 0x3a
ctime = Sun Nov 11 21:50:44 CST 2018
mZxid = 0x3a
mtime = Sun Nov 11 21:50:44 CST 2018
pZxid = 0x3a
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0

3.查看子节点

使用ls命令可以查看指定节点下的所有子节点

以下查看根目录下的所有子节点:

[zk: localhost:2181(CONNECTED) 2] ls /

[zk-test, zookeeper]
查看zk-test节点的子节点:

[zk: localhost:2181(CONNECTED) 3] ls /zk-test

[book]

4.更新节点内容

使用set命令,更新节点内容。格式为:

set   path  data

其中的data就是要更新的新内容。

[zk: localhost:2181(CONNECTED) 4] set /zk-test 456

cZxid = 0x3a
ctime = Sun Nov 11 21:50:44 CST 2018
mZxid = 0x3b
mtime = Sun Nov 11 22:05:20 CST 2018
pZxid = 0x3a
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0

在输出的信息中,可以发现,dataVersion的值由原来的0 变成了 1,这是因为刚才的更新操作导致该节点的数据版本也发生变更。

6.删除节点

使用delete命令来删除节点,如下:

[zk: localhost:2181(CONNECTED) 11] delete /zk-test
Node not empty: /zk-test

可以发现,一个节点存在子节点时,无法删除该节点。

删除子节点/zk-test/book,如下:

[zk: localhost:2181(CONNECTED) 12] delete /zk-test/book

WATCHER::

WatchedEvent state:SyncConnected type:NodeDeleted path:/zk-test/book
zookeeper中的watcher会监控节点,当子节点发生变化时会发出通知。此时提示子节点 /zk-test/book删除成功。

继续尝试删除节点 /zk-test,

[zk: localhost:2181(CONNECTED) 13] ls /zk-test
[]
[zk: localhost:2181(CONNECTED) 14] delete /zk-test
[zk: localhost:2181(CONNECTED) 15] ls /
[]

删除成功。

Arthas安装

使用arthas-boot(推荐)
下载arthas-boot.jar,然后用java -jar的方式启动:

wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar

打印帮助信息:

java -jar arthas-boot.jar -h

如果下载速度比较慢,可以使用aliyun的镜像:

java -jar arthas-boot.jar --repo-mirror aliyun --use-http

使用as.sh
Arthas 支持在 Linux/Unix/Mac 等平台上一键安装,请复制以下内容,并粘贴到命令行中,敲 回车 执行即可:

curl -L https://alibaba.github.io/arthas/install.sh | sh

上述命令会下载启动脚本文件 as.sh 到当前目录,你可以放在任何地方或将其加入到 $PATH 中。

直接在shell下面执行./as.sh,就会进入交互界面。

也可以执行./as.sh -h来获取更多参数信息。

Web服务器的安装与配置 Web服务器的安装与配置前言一、IIS服务器的安装与配置遇到的问题解决方法二、 Apache 的安装与配置遇到的问题解决办法三、Tomcat 的安装与配置遇到的问题解决办法四、 WAMP的安装与配置遇到的问题解决方法 前言     此次所有服务器的安装与配置我都使用的是win7系统 一、IIS服务器的安装与配置 1. 先打开“控制面板” 2. 点击“程序” 3. 点击“程序与功能” 4. 点击“打开或关闭Windows功能” 5. 找到“inter 阅读详情

相关推荐

【IIS建站教程】windows本地搭建web服务,内网穿透发布公网访问

今天就让我们来看看,如何使用Windows自带的网站程序建立网站吧。

bit me的博客 6244

Web 服务器的搭建

1.1什么是webWeb(全称为World Wide Web)是一种基于互联网的信息交流和共享方式。它是由许多相互连接的网页组成的系统,这些网页包含了文本、图像、音频、视频和其他形式的多媒体内容。Web 使用一种称为超文本的方式来链接网页,使得用户可以通过点击链接在不同的网页之间导航,并访问到不同的内容。Web 的核心技术是HTTP(Hypertext Transfer Protocol,超文本传输协议),它定义了在网络上进行文档传输的规则。

weixin_64409959的博客 6366

Linux下的web服务器搭建

有时间好好研究这个。 一、httpd简介 apache server(httpd),作为非常流行的web服务器,长期以来稳居第一。Apache httpd又可以简称为httpd或者Apache,是Internat使用最广泛的web服务器之一,使用Apache提供的web服务器是由守护进程httpd通过http协议进行文本传输,默认使用http(端口80)的明文传输方式。当然后来为了保证数据的安全和可靠性,有添加了https(端口443)的加密传输方式。 Linux中web服务器的搭建与....

mijichui2153的博客 1万+

Web服务器的搭建

Web服务器的基本功能是提供web信息浏览服务,主要涉及的协议是HTTP协议。6.在浏览器地址页输入本机IP地址,查看写入内容。5.配置浏览器网页读取的根目录。二、Web服务器的搭建。3.启动httpd服务。一、Web服务器简介。1.安装httpd包。4.备份conf文件。

m0_74104340的博客 1699

1.6学习 Web 服务器的搭建和配置,如 Nginx、Apache

Web服务器是指能够向客户端提供Web服务的计算机程序。它接收客户端发送的HTTP请求并返回HTTP响应,通常用于托管Web应用程序,如网站、API等。常见的Web服务器软件包括Nginx、Apache、IIS等。其中Nginx和Apache是最流行的Web服务器软件。本章介绍了如何使用Nginx搭建Web服务器、配置虚拟主机、实现反向代理等功能。熟练掌握这些技能可以帮助你搭建稳定、高效的Web服务器,提供优。

玩机科技社的博客 1万+

Shader Graph实战:5分钟搞定Flow Map水体流动效果(含UV偏移避坑指南)

本文详细解析了如何使用Unity的Shader Graph工具快速实现Flow Map水体流动效果,涵盖基础原理、核心节点搭建、高级技巧及性能优化。特别针对UV偏移问题提供避坑指南,帮助开发者轻松打造专业级动态水面效果,适合游戏场景增强视觉表现。

weixin_29250403的博客 245

window10 Web服务器配置IIS的环境搭建

自己是做前端开发的,服务器又不回搭,这样测试很不方便,之前都是别人给我搭建服务器的,可每次也不能找人帮忙,自己动手丰衣足食嘛,于是自己查资料在结合自己的搭建的web服务器跟大家展示一下,希望帮到不怎么搭建web服务器的童靴,尽量快速上手。自己也会尝试多种web服务器搭建的,先来看看iis web服务器搭建!IIS web服务器的搭建iis是Internet Information Services...

Cindy 1万+

信号完整性仿真SI之Cadence Sigrity SPEED2000_眼图仿真(四)

今天给大家分享一个仿真的操作流程,是关于Cadence Sigrity SPEED2000的时域波形仿真和眼图仿真。我们会经常看见硬件工程师调试示波器上的一些信号的波形变化,其实这些也可以通过仿真电路的搭建来做出投板前的仿真,来优化走线,以减少版本的迭代次数。如果要和实际的信号保持一致,就要求仿真设置的参数和实际的参数保持一致,这也是仿真的重点和难点。下面先让我们了解一下Cadence Sigrity SPEED2000时域仿真的操作流程: 1.仿真模式选择与文件导入 选择Cadence Sigrity下的

刘小同学的博客 1万+

虚拟机web配置服务器,【搭建web服务器】以及web的所有配置

首先打开一台server2008和一台win7的虚拟PC机。第一步、配置IP地址,要求两台虚拟机的IP地址要在同一个网段server2008的DNS地址指向自己。注意要绑定同一个物理网卡。Win7的IP地址自己规划,但是要在同一个网段。DNS指向服务器。注意要把防火墙给关掉,不然是ping不通的。进行一下ping命令测试,最好是每做一步都进行一次检查。打开server2008服务器的服务...

weixin_30741285的博客 7118

Codex 100个真实案例 - 用AI生成建筑平面图SVG(室内设计师的新武器)

本案例用 Codex 生成一套完整的 Python 脚本,自动绘制 SVG 格式的建筑平面图。我们会设计一个90平两室一厅的户型——客厅、主卧、次卧、厨房、卫生间一应俱全,还会自动摆放家具(沙发、床、餐桌、橱柜)、标注尺寸和面积、绘制水电路走向、生成多种配色方案。最终输出的 SVG 文件可以直接用浏览器打开展示,也可以转成 PNG 交给客户。室内设计师看了都说好!

yueyeguzhuo的专栏 763

【实战项目开发技术分享】如何设置机器人禁行区/虚拟墙

在现代机器人技术的日益发展中,路径规划是使机器人在复杂环境中安全、高效移动的关键部分。其中一个重要的问题是如何划定机器人的禁行区,以确保机器人不会进入危险区域或无法到达的地方。在本文中,我们将探讨一些关键策略,帮助机器人算法工程师更好地划定禁行区。代价地图可以通过多层叠加来实现,一般包括以下几个层级:静态地图层(Static Map Layer):由SLAM(Simultaneous Localization and Mapping)构建的静态地图。该层包含了环境中固定不变的地物信息,如墙壁、家具等。

xiewf的博客 1万+

如何配置Web服务器?web服务器配置方法步骤

我们配置Web服务器,就是在服务器上建立网站,并设置好相关的参数,至于网站中的网页应该由网站的维护人员制作并上传到服务器中,下面小编就来介绍下如何配置服务器。 IIS的安装 一般在安装操作系统时不默认安装IIS,所以在第一次配置Web服务器时需要安装IIS。安装方法为: 1、打开“控制面板”,打开“添加/删除程序”,弹出“添加/删除程序”窗口。 2、单击窗口中的“添加/删除Windows组件”图标,弹出“Windows组件向导”对话框。 添加/删除程序 3、选中“向导”中的“应用程序服务器”复选框。单击“

qq_780662763的博客 1万+

comsol如何实现五厚度的单元模拟?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 471

超详细的Java Web环境的搭建

一、序言 Java语言是美国Sun公司(Stanford University Network),在1995年推出的高级的编程语言。所谓编程语言,是 计算机的语言,人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。 Java Web主要是用Java技术来解决web领域的技术,需要运行在特定的web服务器上,Java Web是跨平台的,可以在不同的平台上进行部署运行。 二、安...

码上言 1万+

2025华为od机试真题B卷【停车场费用统计】Python实现

2025华为od机试真题B卷【停车场费用统计】Python实现

MISAYAONE的博客 538

C#从入门到精通(35)—如何防止winform程序因为误操作被关闭

我们在开发的上位机软件运行起来以后,一般在右上角都有一个关闭按钮,正常情况下点击关闭按钮就能关闭软件,但是不排除我们不想关闭软件,但是因为不小心把鼠标点到了关闭按钮,如果这是一个正在生产的机器,突然关闭软件可能会导致产品损坏,那么我们如何去解决这个误操作的问题呢,本文就来讲解解决方案!

qq_34059233的博客 678

用自己的电脑搭建Web服务器建网站

       这个也是个醉,上课时候在机房搭建成功了,结果回来很长时间没有管,居然给忘了,最近要写电子商务的作业,没办法,只能在捡起来了,又在自己电脑上搭建了一遍,过程都忘了,结果叫好友帮忙,谁知还是不行,还好我记得默认文档要改,这才成功搭建出来,不说了,开始今天的主题吧。 搭建Web服务器建网站过程: 1、当然是启用功能了 window控制面板--&gt;程序与功能--&gt;启用或关闭W...

斗鹰的技术专栏 4万+

华为OD机试双机位C卷 - 比赛 / 评委评分 (C++ & Python & JAVA & JS & GO)

华为OD机试双机位C卷 比赛,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试-比赛,华为OD机考-比赛。

qq_45776114的博客 1701

Linux中web服务器的搭建与配置

一、web服务器的简介 网页服务器(Web server)一词有两个意思: 一台负责提供网页的电脑,主要是各种编程语言构建而成,通过HTTP协议传给客户端(一般是指网页浏览器)。 一个提供网页的服务器程序二、web服务器的简单搭建1、安装一个可以提供web服务的软件yum-yinstallhttpd2、 启动httpd服务systemctlstart...

weixin_33814685的博客 5586

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Linux服务器搭建 -- Web服务器

HTTP服务提供的数据大部分都是文件,所以我们只需要在服务端把文件都部署好,HTTP中,这些文件都存放于/var/www/html中,我们想要访问这些文件只需要在浏览器输入对应的网址,当我们输入Linux主机的ip地址时,他默认优先访问/var/www/html/index.html文件,如果该文件不存在,那么将会访问apache的欢迎界面。可支持的操作系统,可运行的WWW服务器(中间件),网页程序语言,数据库,常见的有LAMP模式 -- Linux、apache、MySQL、PHP。

weixin_63750160的博客 7136

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Windows Server 2003 Web服务器搭建

在如今卷王层出不穷的社会,哪怕你只是一个技术小白也要学习一定的技术,这一系列将带领小白搭建五大服务器:FTP服务器,Web服务器,DHCP服务器,DNS服务器,邮件服务器带你体验真实环境中的服务器的作用,让你清晰了解到你平常上网中访问的网站等等是如何而来,我将用我的知识让你领悟服务器的美妙.

可惜已不在 3915

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

搭建Web服务器建网站的步骤

这个也是个醉,上课时候在机房搭建成功了,结果回来很长时间没有管,居然给忘了,最近要写电子商务的作业,没办法,只能在捡起来了,又在自己电脑上搭建了一遍,过程都忘了,结果叫好友帮忙,谁知还是不行,还好我记得默认文档要改,这才成功搭建出来,不说了,开始今天的主题吧。 搭建Web服务器建网站过程: 1、当然是启用功能了 window控制面板-->程序与功能-->启用或关闭Window功能,会弹出这么个界面: 选择Internet Information Services选项,按照下图图...

m0_66327404的博客 1万+

基于Apache搭建Web服务器详解

在Internet网络环境中,Web服务无疑是最为流行的应用系统。有了Web站点,企业可以充分的展示自己的产品,宣传企业形象。Web站点还为企业提供了与客户交流,电子商务交易平台等丰富的网络应用,部署与维护Web服务是运维工程师必须掌握的一个技能。 Windows搭建Web服务可以参考博文:Windows server 2016 搭建IIS(web)服务 如果想要在Centos 7 利用Apach...

小健健的博客 1542

【搭建web服务器】以及web的所有配置

首先打开一台server2008和一台win7的虚拟PC机。第一步、配置IP地址,要求两台虚拟机的IP地址要在同一个网段server2008的DNS地址指向自己。注意要绑定同一个物理网卡。Win7的IP地址自己规划,但是要在同一个网段。DNS指向服务器。注意要把防火墙给关掉,不然是ping不通的。进行一下ping命令测试,最好是每做一步都进行一次检查。打开server...

weixin_34050005的博客 1180

Nginx Web服务器搭建

Nginx服务器是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。Nginx专为性能优化而开发,性能是器最重要的考量,实现上非常注重效率,能经受高负载的考验,据报告能支持高达50,000个并发连接数。Nginx不仅能做反向代理,实现负载均衡;还能可以作正向代理来进行上网等功能。...

settng style 4980
上一篇: Java作业-控制台小商城(含源码)
下一篇: azkaban build报错
JavaBuilt
博客等级 码龄10年 1106粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值