使用光盘iso实现Linux操作系统的自动安装部署-演道网

前边写了一篇使用 PXE 的方式批量安装操作系统,不是任何时候任何地方都有环境来通过 PXE 方式来进行安装。如果此时需要通过光盘安装,默认的情况下是通过交互式方式进行安装,其实也可以通过 kickstart 的方式来实现自动化安装部署。光盘通过 ks.cfg 进行安装的实现方式比较简单,下边简单的进行总结。

搭建PXE服务器安装Linux系统  http://www.linuxidc.com/Linux/2017-02/140481.htm

配置PXE 自动化安装CentOS 6.7  http://www.linuxidc.com/Linux/2016-04/129926.htm

PXE实现批量无人值守安装CentOS7系统  http://www.linuxidc.com/Linux/2017-02/140512.htm

一、实现原理

光盘通过读取 ks.cfg 文件来实现安装操作系统,ks.cfg 配置文件放在光盘的根目录即可,然后修改 isolinux/isolinux.cfg 文件,设置内核参数,指定 ks.cfg 文件的位置即可。由于原始 iso 镜像文件是只读的,不能直接在 iso 光盘目录文件内进行修改,需要拷贝到一个临时目录,修改完后在封装为 iso 镜像文件。

二、拷贝镜像临时目录

mkdir /mnt/cdrom
mount -o loop CentOS-6.8-x86_64-minimal.iso /mnt/cdrom
cp -ar /mnt/cdrom/ /root/iso    # 原来root下没有iso目录,拷贝过来重命名为iso

三、生成 ks.cfg 文件

生成 ks.cfg 文件的方式大概有2种,一是可以通过图形工具 system-config-kickstart 来定制生成指定的 ks.cfg 文件,二是对于熟悉 kickstart 语法的可以直接编写 ks.cfg 配置文件。本次实验用的 ks.cfg 配置比较简单,是通过工具生成的,下边给出本次的 ks.cfg 文件。

#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use CDROM installation media
cdrom
# Root password
rootpw --iscrypted $1$p6oEoqGo$UDHZdzw56Rl6Rt5oi1A0Q1
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=info
# Reboot after installation
#reboot
# System timezone
timezone --isUtc Asia/Shanghai
# Network information
network  --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel 
# Disk partitioning information
part /boot --asprimary --fstype="ext4" --ondisk=sda --size=200
part swap --asprimary --fstype="swap" --ondisk=sda --size=4096
part / --asprimary --fstype="ext4" --grow --ondisk=sda --size=1

拷贝到光盘镜像根目录:

/bin/cp ks.cfg /root/iso/

四、修改启动项菜单内核参数

修改菜单项配置文件 isolinux/isolinux.cfg:

default vesamenu.c32
#prompt 1
timeout 1    # 超时自动选择菜单时间设置,设置为1时,即一闪而过,设置3秒为好。

修改内核参数,指定 ks.cfg 位置:

label linux
  menu label ^Install CentOS 6.8 x64 System.    # 自定义了菜单
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/ks.cfg     # 添加了ks文件的位置:光盘的根目录

五、封装iso镜像文件

cd /root/iso/    # 进入镜像制作目录

如果没有 mkisofs 命令,执行安装:

yum install mkisofs -y

执行封装镜像的命令:

mkisofs -o /root/CentOS6.8_x64.iso \
    -V centos6 -b isolinux/isolinux.bin \
    -c isolinux/boot.cat \
    -no-emul-boot -boot-load-size 4 \
    -boot-info-table -R -J -T -v .

转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn

源码包制作成rpm包-演道网

将源码包(tar包)制作成rpm 包

一、准备实验环境
实验环境 RHEL6
1.下载源码软件包:lsyncd-2.0.5.tar.gz
2.首先检查本地的编译环境和 rpm 包制作软件与相关目录是否正常
3.rhel6 下的 rpm 包制作源码所在目录/root/rpmbuild,与 rhel5 的/usr/src/RedHat/有所不同
[root@linuxidc ~]# rpmbuild lsyncd-2.0.5.tar.gz //可以生成/root/rpmbuild 目录
如 果 没 有 /root/rpmbuild 目 录 , 执 行 命 令 :rpmbuild lsyncd-2.0.5.tar.gz , 会 自 动 生 成
4.拷贝 lsyncd 源码到/root/rpmbuild/SOURCES 目录下,此时,所有子目录下只有 SOURCES 下有 lsyncd-2.0.5.tar.gz 一个文件
[root@linuxidc rpmbuild]# tree

二、生成 spec 规则文件 (rpm -qpi 查看的内容来源于此文件)
[root@linuxidc rpmbuild]# cd SPECS
[root@linuxidc SPECS]# vim lsyncd-2.0.5.spec
注意一定要用 vim 编辑才会自动生成模板文件。 该文件内容为自动生成的模板,待会根据需要手工修改,暂时保存退出即可。

1.重要部分解释
Source0: //源码名称
BuildRequires: //软件依赖关系描述(可以省略)
Requires: //该 rpm 包所依赖的软件包名称
%build //本段是建立段,所执行的命令为生成软件包服务,相当于./configure 和 make
%install //这一节主要用于完成实际安装软件必须执行的命令,这一节一般是由make install 指令构成,但是有时也会包含 cp、mv、install 等指令
%clean //这一节所描述的内容表示在完成包建立的工作之后,自动执行此节下的脚本进行附加的清除工作,这一节的内容通常简单地使用 rm -rf $RPM_BUILD_ROOT 命令,
不需要指定此节的其它内容
%files //这一节指定构成包的文件的列表,它是使用节前缀%files 表示的。此外,它还包含一系列宏控制安装后的文件属性和配置信息。,分为三类–说明文档(doc),
配置文件(config)及执行程序,也根据提示编写。%files 下列出应该捆绑到 RPM 中的文件,并能够可选地设置许可权和其它信息

2.编辑 lsyncd 的 spec 规则文件 (编辑 lsyncd-2.0.5.spec 文件,先填写可以确定的部分)

Source0: lsyncd-2.0.5.tar.gz //注意名称要写对,文件名字必须与源码一致

%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT //此处没有填写完整,需根据“make install”的输出填写。

%files //此处还没有填写,后面根据提示再修改。

%changelog
//下面填写编译时间 5 月 22 日,日期格式为 date +”%a %b %d %Y”,必须以*开头,以–end结尾
* Tue May 22 2012
–end

如何确定其它的参数内容呢,可以根据一下步骤,一步步填写

3.安装源码包
[root@lsyncd lsyncd-2.0.5]# ./configure //看看配置时需要依赖哪些软件包
//在配置过程中,需要的软件依赖包为 lua-devel-5.1.4-4.1.el6.i686.rpm,那么 lsyncd-2.0.5.spec
中,”BuildRequires: Requires:”软件依赖配置就可以写上 lua-devel。

[root@linuxidc lsyncd-2.0.5]# make
[root@linuxidc lsyncd-2.0.5]# make install
输出的内容就是 lsyncd-2.0.5.spec 文件中“%install”后面需要填写的内容,表示安装哪些文件到哪些路径下,但要修改格式。
1.将这一段内容中所有的/usr/local 修改为变量$RPM_BUILD_ROOT,因为制作 rpm 包时并不需要将文件安装到实际的路径,所以暂时安装在$RPM_BUILD_ROOT 中,其实就是/root/rpmbuild/BUILDROOT/lsyncd-2.0.5-1.el6.i386 这个临时目录。
2.将这一段内容中所有的单引号去掉或者换成双引号,因为要允许变量。

到现在,lsyncd-2.0.5.spec 文件中还有“%files”没有填写。%files 表示编译完成的软件到底包括那些文件,可以执行 rpmbuild -bb lsyncd-2.0.5.spec,根据提示可以得到%files 的内容。
[root@vmware1 SPECS]# rpmbuild -bb lsyncd-2.0.5.spec
在最后会有这一段关于这些文件的错误,这里列出的所有文件,就是我们需要填写入
lsyncd-2.0.5.spec 中%files 的内容。

三、到这里所有 lsyncd-2.0.5.spec 中所有内容编写完毕,再次执行 rpmbuild 命令
[root@linuxidc SPECS]# rpmbuild -ba lsyncd-2.0.5.spec
//顺利通过编译,使用-ba 生成 rpm 包和 srpm 包,查看生成的目标 rpm 包
[root@linuxidc rpmbuild]# tree *RPMS
[root@linuxidc rpmbuild]# rpm -qpi RPMS/i386/lsyncd-2.0.5-1.el6.i386.rpm
[root@linuxidc i386]# rpm -ivh lsyncd-2.0.5-1.el6.i386.rpm
[root@linuxidc i386]# rpm -qa | grep lsyncd
[root@linuxidc i386]# rpm -ql lsyncd
通过 rpm 的查询命令发现 lsyncd 的信息,都是我们之前配置的内容。

转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn

Ubuntu 16.04下安装部署Zabbix3.0-演道网

网上有很多在Ubuntu下安装部署Zabbix的,但是大多数教程都是在Ubuntu 14.04下部署,同时Zabbix也不是3.0版本以上。所以在这里写一篇目前最新的部署教程。

一 配置zabbix软件下载源

# wget http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.0-1+trusty_all.deb

# dpkg -i zabbix-release_3.0-1+trusty_all.deb

# apt-get update

二 安装Server端

需要安装如下组件:

apache2
php5
php5-gd
libapache2-mod-php5
zabbix-server-mysql
php5-mysql
zabbix-frontend-php

在Ubuntu16.04中的apt-get源不能正常下载安装 zabbix-server-mysql和php5等等,所以要更换源问的内容。

1 首先到/etc/apt/目录对原来的source.list进行备份

#cp source.list source.list_16.04

2 然后把Ubuntu 15.10的source.list的内容

deb http://us.archive.ubuntu.com/ubuntu/ wily main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ wily main restricted
deb http://us.archive.ubuntu.com/ubuntu/ wily-updates main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ wily-updates main restricted
deb http://us.archive.ubuntu.com/ubuntu/ wily universe
deb-src http://us.archive.ubuntu.com/ubuntu/ wily universe
deb http://us.archive.ubuntu.com/ubuntu/ wily-updates universe
deb-src http://us.archive.ubuntu.com/ubuntu/ wily-updates universe
deb http://us.archive.ubuntu.com/ubuntu/ wily multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ wily multiverse
deb http://us.archive.ubuntu.com/ubuntu/ wily-updates multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ wily-updates multiverse
deb http://us.archive.ubuntu.com/ubuntu/ wily-backports main restricted universe multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ wily-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu wily-security main restricted
deb-src http://security.ubuntu.com/ubuntu wily-security main restricted
deb http://security.ubuntu.com/ubuntu wily-security universe
deb-src http://security.ubuntu.com/ubuntu wily-security universe
deb http://security.ubuntu.com/ubuntu wily-security multiverse
deb-src http://security.ubuntu.com/ubuntu wily-security multiverse

覆盖原来的source.list的内容

3 清理一下apt缓存信息

#apt-get clean
#apt-get upgrade
#apt-get update

4 如果zabbix-frontend-php无法下载的话可以切换回16.04的source.list进行下载安装

三 配置Server

# vi /etc/zabbix/zabbix_server.conf

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
StartTrappers=200
CacheSize=512M

四 设置Mysql

#mysql -u root -p

(安装mysql时我把root账号的密码设置为zabbix)

Enter passworld:zabbix
mysql>create database zabbix character set utf8 collate utf8_bin;
mysql>grant all privileges on zabbix.* to zabbix@localhost identified by ‘zabbix’;
mysql>flush privileges;
mysql>set GLOBAL max_connections=1000;
mysql>show variables like ‘%max_connections%’;
mysql> quit;
#cd /usr/share/doc/zabbix-server-mysql
#zcat create.sql.gz | mysql -u root -p zabbix
#cp -r /usr/share/zabbix /var/www/html/zabbix
#service zabbix-server restart

五 服务器容器配置

1 php

#vim /etc/php5/apache2/php.ini修改项:

post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = “Asia/Shanghai”
extension_dir = “/usr/lib/php5/20131226/”(gd.so被apt在到/usr/lib/php5/20131226下)
extension=gd.so

修改完成后重启apache2

#service apache2 star

2 按照网页指引配置

用浏览器打开http://10.92.21.160/zabbix,通过网站方式对zabbixserver进行配置初始化检查

直接按照网页端配置执行。

用户名密码:Admin/zabbix

六 安装客户端

#apt-get install zabbix-agent

安装客户端后,若不是服务器本机,修改zabbix配置文件/etc/zabbix/zabbix_agentd.conf的数据

#vi /etc/zabbix/zabbix_agentd.conf

修改ServerAcive的IP,地址为服务端地址

ServerActive=10.92.21.160

设置为0 仅为主动模式,如果需要发送数据等 可以不修改此项

StartAgents=0

Hostname修改为网页里面添加的Hostname,需要保持一致。

Hostname=Zabbix server

七 添加host进行监控

Configuration–>Hosts–>选择默认的Zabbix server,进入详细页面然后full clone,调整一下配置信息

如果出现时间不对应的情况下需要设置下服务器的时区

#dpkg-reconfigure tzdata

选择Asia -> 再选择Shanghai -> OK

#date -s “02 OCT 2016 17:07:00”

一些Zabbix相关教程集合

CentOS 7.2 安装部署 Zabbix 3.0.4 详解  http://www.linuxidc.com/Linux/2016-11/137671.htm

Ubuntu 14.04下Zabbix2.4.5 源码编译安装  http://www.linuxidc.com/Linux/2015-05/117657.htm

安装部署分布式监控系统Zabbix 2.06 http://www.linuxidc.com/Linux/2013-07/86942.htm

Zabbix基本配置及监控主机 http://www.linuxidc.com/Linux/2016-12/138504.htm

CentOS 7.0 x64下Zabbix 3.0 安装笔记  http://www.linuxidc.com/Linux/2016-11/137044.htm

CentOS下Zabbix 3.0.4安装部署 http://www.linuxidc.com/Linux/2017-01/139087.htm

CentOS 6.3下Zabbix监控MySQL数据库参数 http://www.linuxidc.com/Linux/2013-05/84800.htm

64位CentOS 6.2下安装Zabbix 2.0.6   http://www.linuxidc.com/Linux/2014-11/109541.htm

ZABBIX 的详细介绍请点这里
ZABBIX 的下载地址请点这里

转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn

虚拟机RedHat Linux的紧急救援-演道网

由于虚拟机无法启动,vmware vcenter已经无法监控到虚机vmware tools的心跳。登陆VC通过虚拟机控制台查看发现虚机RedHat Linux卡在如下界面:

从截图来看:

显示chmod、chgrp、chown和awk没有找到(有可能误删),由于系统启动时候需要执行rc.sysinit脚本,该脚本会执行些权限控制命令,因此必须要用到这些文件,由于文件无法找到,导致系统初始化失败。

经过沟通,了解到客户安装了apache和mysql,并且修改了/etc/profile文件配置了应用的环境变量,导致出现如上问题。

解决问题:

给这台虚机加载redhat linux的iso,设置虚拟机bios,CD光驱为第一启动顺序,重新启动虚拟机,选择救援模式进行紧急救援。

由于是丢失文件,因此这里需要开启网络功能,方便从其他主机拷贝相关文件。

在这里输入原先该虚机的IP和网关

mount系统到sysimage下

点击OK后,进入修复模式的shell下

然后chroot  /mnt/sysimage

进入/bin后,确实没有发现chmod、chown和awk等这几个命令,我们可以考虑从一台好的redhat linux系统中拷贝这几个文件过来,在命令行下执行

#scp -r root@11.11.165.177:/usr/bin/* /bin/

结果却提示命令没找到,应该是没有客户端软件,导致SCP命令没有被识别。那么设置本地yum源,并安装openssh客户端,

#yum install openssh-clients

再次执行#scp -r root@11.11.165.177:/usr/bin/* /bin/后提示输入密码,输入后开始执行拷贝命令。

拷贝完成后重启系统,顺利初始化并成功进入系统。

•总结

Rescue修复要注意系统初始文件和系统命令文件的关系,恢复系统完整性。

补充另一个测试示例:

修改linux系统的文件grub.conf、fstab  我这里就不删除了,只是更改名称让系统找不到就可以了

引导程序(MBR的512字节中前446字节为引导程序,紧跟着后面64字节为分区表,最后面2个字节为结束标记)

使用以下命令把bootloader( 启 动引导程序MBR中的446字 )覆盖掉

dd if=/dev/zero of=/dev/sda bs=446 count=1

然后进入救援模式

使用fsdisk -l 查看一下分区

在当前的目录创建一个目录,用来挂载根

mkdir a

mount /dev/sda2 /a                    挂载根目录到a下

mount /dev/sda1 /a/boot                  挂载boot目录,因为它为单独分区

挂载成功之后就可以看到所有的系统文件,可以进行修复和修改文件了

恢复被我们修改的文件

接下来是安装MBR中的446字节的引导程序

装grub就是装/boot/grub/stage1,救援模式下输入 #grub 就可以进入grub的命令模式下

1、root(hd0,0)  这里是指的第一块一盘的一个分区,就是要指定/boot所在的分区

2、setup(hd0) 这里是安装grub的意思,当出现successed就是安装成功了

3、quit退到shell模式

4、exit重启

重启后就自动进入了 grub> 的模式,在这里手动引导系统先看一下手动引导系统

root(hd0,0)  指定一下内核文件的位置,还是/boot目录所在的分区

kernel/vmlinuz-2…ro root=/dev/sda2 具体的内核文件并以只读的形式挂载上

initrd/initrd…….      具体的内存启动镜像

boot  加载系统

如下图:

虚拟机RedHat Linux的紧急救援

以上操作完成之后,进入系统,这时候系统的 grub.conf 尚未恢复,需要进入目录恢复此系统文件才算是系统修复完成了。

注意:根分区和/boot最好是独立分区,而把之外的做成是LVM卷,那么在救援模式下会比较方便。

转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn

Struts2+Spring3+Hibernate3+MySQL简单登录实现-演道网

使用Struts2+Spring3+Hibernate3+MySQL实现简单登录,下面就开始说小编写的代码。

1.导入相关的jar包

2.建立数据库

1 create table account(
2 id int(10),
3 user varchar(50),
4 paw varchar(50)
5 );
6 insert into account values(1,'admin','admin'); 

3.建立包结构

 

4.配置文件的配置及代码

4.1 数据库配置文件:db.properties

1 #jdbc
2 jdbc.driver=com.mysql.jdbc.Driver
3 jdbc.url=jdbc:mysql://127.0.0.1:3306/test
4 jdbc.username=root
5 jdbc.password=

4.2 spring配置文件:applicationContext.xml

 1 xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 4     xmlns:util="http://www.springframework.org/schema/util" xmlns:jee="http://www.springframework.org/schema/jee"
 5     xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
 6     xmlns:mvc="http://www.springframework.org/schema/mvc"
 7     xsi:schemaLocation="
 8         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
 9         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
10         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
11         http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
12         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
13         http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
14         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
15     <context:component-scan base-package="ssh.ft">context:component-scan>
16 
17     <context:property-placeholder location="classpath:configs/db.properties" />
18     
19     <bean id="dataSource"
20         class="org.springframework.jdbc.datasource.DriverManagerDataSource">
21         <property name="driverClassName" value="${jdbc.driver}" />
22         <property name="url" value="${jdbc.url}" />
23         <property name="username" value="${jdbc.username}" />
24         <property name="password" value="${jdbc.password}" />
25     bean>
26     
27     <bean id="sessionFactory"
28         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
29         
30         <property name="hibernateProperties">
31             <props>
32                 <prop key="connection.useUnicode">trueprop>
33                 <prop key="connection.characterEncoding">utf-8prop>
34                 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialectprop>
35                 <prop key="hibernate.show_sql">trueprop>
36                 <prop key="hibernate.hbm2ddl.auto">updateprop>
37             props>
38         property>
39         <property name="dataSource" ref="dataSource" />
40         <property name="mappingResources">
41             <list>
42                 
43                 <value>configs/account.hbm.xmlvalue>
44             list>
45         property>
46     bean>
47     
48     
51 
52     
53     
57 
58     
59     <bean class="ssh.ft.dao.impl.AccountDaoImpl" id="accountDao">
60         <property name="sessionFactory" ref="sessionFactory">property>
61     bean>
62 
63     
64     <bean class="ssh.ft.service.impl.AccountManagerImpl" id="accountManager">
65         <property name="dao" ref="accountDao">property>
66     bean>
67 
68     
69     
70     <bean class="ssh.ft.action.LoginAction" id="loginAction" scope="prototype">
71         <property name="accountManager" ref="accountManager">property>
72     bean>
73 beans>

注:上述配置中注释掉的事物部分,因为小编未使用到,所以也没有认证,在配置时可去掉

4.4 配置完spring,可以先测试下配置是否正确

 1 package ssh.ft.test;
 2 
 3 import java.util.List;
 4 
 5 import org.hibernate.SessionFactory;
 6 import org.junit.Test;
 7 import org.springframework.context.ApplicationContext;
 8 import org.springframework.context.support.ClassPathXmlApplicationContext;
 9 
10 import ssh.ft.entity.Account;
11 
12 public class DBTest {
13     @Test
14     public void test1() {
15         String config = "configs/applicationContext.xml";
16         ApplicationContext ac = new ClassPathXmlApplicationContext(config);
17         SessionFactory sf = ac.getBean(SessionFactory.class);
18         String sql = "from Account";
19         @SuppressWarnings("unchecked")
20         List list = sf.openSession().createQuery(sql).list();
21         System.out.println(list.size());
22     }
23 }

若配置正确则有如下结果:红色框中的数字1表示数据库中表account中有一条数据,若未出现正确结果,则需要检查上述代码哪里出错,或者是jar的问题

因为小编也遇到过很多jar包不全之类的问题,务必正确之后再往下编写,否则到后面错误或更多导致无法查找

4.5 struts配置文件:struts.xml

 1 xml version="1.0" encoding="UTF-8" ?>
 2 DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     
 7     <constant name="struts.devMode" value="true" />
 8     
 9     <constant name="struts.objectFactory" value="spring" />
10 
11     
12     <package name="s2sh" extends="s2sh1">
13         
14         <action name="login" class="loginAction" method="login">
15             <result name="success">/WEB-INF/index.jspresult>
16             <result name="error">/WEB-INF/login.jspresult>
17         action>
18     package>
19     <package name="s2sh1" extends="struts-default">
20         <action name="tologin" >
21             <result >/WEB-INF/login.jspresult>
22         action>
23     package>
24 struts> 

4.6 hibernate配置文件:hibernate.cfg.xml 

 1 DOCTYPE hibernate-configuration PUBLIC
 2     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 3     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 4 <hibernate-configuration>
 5     <session-factory>
 6 
 7         
 8         <property name="dialect"> org.hibernate.dialect.MySQLDialectproperty>
 9         
10         <property name="show_sql">trueproperty>
11         <property name="format_sql">trueproperty>
12         
13         <property name="hibernate.current_session_context_class">threadproperty>
14         
15         <property name="hbm2ddl.auto">createproperty> 
16         
17         <mapping resource="configs/account.hbm.xml" />
18     session-factory>
19 hibernate-configuration> 

hibernate配置文件还有一个实体映射文件:account.hbm.xml

 1 DOCTYPE hibernate-mapping PUBLIC 
 2     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 3     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 4 <hibernate-mapping>
 5     <class name="ssh.ft.entity.Account" table="account">
 6         
 7         <id name="id">
 8             
 9             <generator class="native">generator>
10         id>
11         
12         <property name="user">property>
13         <property name="paw">property>
14     class>
15 hibernate-mapping> 

在hibernate.cfg.xml中的

  

这个语句里面的account.hbm.xml就是指上述的account.hbm.xml配置文件

4.7 web.xml配置文件

 1 xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
 3   <display-name>sshdisplay-name>
 4     
 5     <listener>
 6         <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
 7     listener>
 8     <context-param>
 9         <param-name>contextConfigLocationparam-name>
10         <param-value>classpath:configs/applicationContext.xmlparam-value>
11     context-param>
12   <filter>
13         <filter-name>struts2filter-name>  
14         <filter-class>  
15           org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
16         filter-class>
17         
23     filter>  
24     <filter-mapping>  
25         <filter-name>struts2filter-name>  
26         <url-pattern>/*url-pattern>  
27     filter-mapping>
28 web-app> 

注:上述小编注释了一个未解决的问题,就是struts.xml文件一定要在src目录下方,否则会报错,如果想放在其他地方的话,若有人解决希望一定要留言告诉小编

4.8 实体类:Account.java

 1 package ssh.ft.entity;
 2 
 3 public class Account {
 4     private Integer id;
 5     private String user;
 6     private String paw;
 7 
 8     public Integer getId() {
 9         return id;
10     }
11 
12     public void setId(Integer id) {
13         this.id = id;
14     }
15 
16     public String getUser() {
17         return user;
18     }
19 
20     public void setUser(String user) {
21         this.user = user;
22     }
23 
24     public String getPaw() {
25         return paw;
26     }
27 
28     public void setPaw(String paw) {
29         this.paw = paw;
30     }
31 
32

4.9 dao和daoImpl:AccountDao.java

1 package ssh.ft.dao;
2 
3 import ssh.ft.entity.Account;
4 
5 public interface AccountDao {
6     public Account findByUser(String user);
7

AccountDaoImpl.java

 1 package ssh.ft.dao.impl;
 2 
 3 import java.util.List;
 4 
 5 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
 6 
 7 import ssh.ft.dao.AccountDao;
 8 import ssh.ft.entity.Account;
 9 
10 public class AccountDaoImpl extends HibernateDaoSupport implements AccountDao {
11 
12     @Override
13     public Account findByUser(String user) {
14         @SuppressWarnings("unchecked")
15         List list = this.getHibernateTemplate().find("from Account a where a.user=?", user);
16         if (list == null || list.isEmpty()) {
17             return null;
18         }
19         return list.get(0);
20     }
21

 4.10 service和serviceImpl:AccountManager.java

1 package ssh.ft.service;
2 
3 public interface AccountManager {
4     public boolean login(String user, String paw);
5 }

AccountManagerImpl.java

 1 package ssh.ft.service.impl;
 2 
 3 import ssh.ft.dao.AccountDao;
 4 import ssh.ft.entity.Account;
 5 import ssh.ft.service.AccountManager;
 6 
 7 public class AccountManagerImpl implements AccountManager {
 8     private AccountDao dao;
 9 
10     public AccountDao getDao() {
11         return dao;
12     }
13 
14     public void setDao(AccountDao dao) {
15         this.dao = dao;
16     }
17 
18     @Override
19     public boolean login(String user, String paw) {
20         Account account = dao.findByUser(user);
21         if (account == null) {
22             return false;
23         }
24         if (account.getPaw().equals(paw)) {
25             return true;
26         }
27         return false;
28     }
29 
30

4.11 account处理类:LoginAction.java

 1 package ssh.ft.action;
 2 
 3 import com.opensymphony.xwork2.ActionSupport;
 4 
 5 import ssh.ft.entity.Account;
 6 import ssh.ft.service.AccountManager;
 7 
 8 public class LoginAction extends ActionSupport {
 9     private static final long serialVersionUID = 1L;
10 
11     private Account account;
12 
13     public Account getAccount() {
14         return account;
15     }
16 
17     public void setAccount(Account account) {
18         this.account = account;
19     }
20 
21     private AccountManager accountManager;
22 
23     public AccountManager getAccountManager() {
24         return accountManager;
25     }
26 
27     public void setAccountManager(AccountManager accountManager) {
28         this.accountManager = accountManager;
29     }
30 
31     private String msg;
32 
33     public String getMsg() {
34         return msg;
35     }
36 
37     public void setMsg(String msg) {
38         this.msg = msg;
39     }
40 
41     public String login() {
42         System.out.println("login........");44         if (accountManager.login(account.getUser(), account.getPaw())) {
45             return SUCCESS;
46         }
47         setMsg("用户或密码错误");
48         return ERROR;
49     }
50

5.页面部分

5.1 页面结构

 

 5.2 登录页面:login.jsp

 1 <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 2 <%@ taglib uri="/struts-tags" prefix="s"%>
 3 
 4 
 5 
 6 
 7 Login
 8 
 9 
10     
11         
12         
13         
14     
15     
16 
17  

5.3 登录成功页面:index.jsp

 1 <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 2 <%@ taglib uri="/struts-tags" prefix="s"%>
 3 
 4 
 5 
 6 
 7 Login
 8 
 9 
10     欢迎【】登陆!
11 
12  

6.测试,在浏览器输入:http://localhost:8080/ssh/tologin

成功页面:

整合到此结束。

Eclipse搭建SSH(Struts2+Spring+Hibernate)框架教程  http://www.linuxidc.com/Linux/2016-11/137193.htm

推荐阅读:

Struts中异步传送XML和JSON类型的数据 http://www.linuxidc.com/Linux/2013-08/88247.htm

Struts2的入门实例 http://www.linuxidc.com/Linux/2013-05/84618.htm

Struts2学习笔记-Value Stack(值栈)和OGNL表达式  http://www.linuxidc.com/Linux/2015-07/120529.htm 

struts2文件上传(保存为BLOB格式) http://www.linuxidc.com/Linux/2014-06/102905.htm

Struts2的入门实例 http://www.linuxidc.com/Linux/2013-05/84618.htm

Struts2实现ModelDriven接口 http://www.linuxidc.com/Linux/2014-04/99466.htm

遇到的Struts2文件下载乱码问题 http://www.linuxidc.com/Linux/2014-03/98990.htm

Struts2整合Spring方法及原理 http://www.linuxidc.com/Linux/2013-12/93692.htm

Struts2 注解模式的几个知识点 http://www.linuxidc.com/Linux/2013-06/85830.htm

Struts 的详细介绍请点这里
Struts 的下载地址请点这里

转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn

Unix下tee指令的使用-演道网

在平时使用输出重定向一般都是使用“>”和“>>”把需要输出的内容指定到一个文件里,前者如果在后面的指定文件已存在,那么这个文件会被重写;后者则是追加,把内容追加到文件的末尾保存,这2个方法都不能重定向在屏幕上显示内容。但在有些时候需要把屏幕查看信息重定向或者是需要把一个内容重定向到多个文件里那么就要使用tee指令了,通过man帮助得到以下参数选项:

-a:向文件中重定向时使用追加模式;

-i:忽略中断(interrupt)信号。

其中-a不难理解就是和“>>”的效果是一样的,-i的意思是不在接收中断信号,当我们使用tee输出重定向时使用[Ctrl]c发送终止信号时是不会接收无效的,只能使用[Ctrl]d发送EOF结束,如果我们需要把一份内容重定向到多个文件就可以这样写:

[root@linuxidc data]# cat file |tee file1 file2

转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn

CentOS 6.5下Zabbix2.4.8安装配置-演道网

一、Zabbix特性简介

Zabbix可以监控网络和服务的监控状况. Zabbix利用灵活的告警机制,允许用户对事件发送基于Email的告警. 这样可以保证快速的对问题作出相应. Zabbix可以利用存储数据提供杰出的报告及图形化方式. 这一特性将帮助用户完成容量规划。

二、本次实战环境

名称 主机名 ip
zabbix server server134 192.168.159.134
zabbix agent server135 192.168.159.135 

三、服务器安装步骤

3.1、安装开发软件包及zabbix安装所依赖的软件包

[root@server134 ~]yum groupinstall “Development Tools”

[root@server134 ~]# yum install php-common php-odbc php-pear curl curl-devel perl-DBI php-xml ntpdate  php-bcmath mysql httpd php-mysql mysql-server php php-gd  ntpdate

3.2、同步服务端的时间,避免时间不同导致不可用的监控数据

[root@server134 ~]# ntpdate pool.ntp.org

8 Feb 18:41:20 ntpdate[2871]: step time server 85.199.214.100 offset 4.665038 sec

3.3、创建zabbix服务运行的用户和组

[root@server134 ~]# groupadd -g 201 zabbix

[root@server134 ~]# useradd -g zabbix -u 201 -m zabbix

3.4、启动mysql、创建zabbix数据库、设置用户密码访问

[root@server134 ~]# /etc/init.d/mysqld start

[root@server134 ~]# mysql -u root -p

mysql> create database zabbix character set utf8;

Query OK, 1 row affected (0.08 sec)

mysql> grant all privileges on *.* to ‘zabbix’@’%’ identified by ‘zishang77’;

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

因本文使用的是mysql5.7,MySQL默认开启了validate_password插件,进行密码验证,需要很强的密码强度才能通过认证此版本对密码的要求比较严格,本文做了如下调整

查阅官方文档后发现有以下三种密码策略:

Policy Tests Performed
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file

mysql> select @@validate_password_policy;

+—————————-+

| @@validate_password_policy |

+—————————-+

| MEDIUM                    |

+—————————-+

1 row in set (0.00 sec)

mysql> SHOW VARIABLES LIKE ‘validate_password%’;

+————————————–+——–+

| Variable_name                        | Value  |

+————————————–+——–+

| validate_password_check_user_name    | OFF    |

| validate_password_dictionary_file    |        |

| validate_password_length            | 8      |

| validate_password_mixed_case_count  | 1      |

| validate_password_number_count      | 1      |

| validate_password_policy            | MEDIUM |

| validate_password_special_char_count | 1      |

+————————————–+——–+

7 rows in set (0.08 sec)

mysql> set global validate_password_policy=0;#设置密码的策略为low

Query OK, 0 rows affected (0.00 sec)

 

mysql> set global validate_password_mixed_case_count=0#设置指定了密码中大小字母的长度

    -> ;

Query OK, 0 rows affected (0.00 sec)

 

mysql> set global validate_password_number_count=2;#设置指定了密码中数据的长度

Query OK, 0 rows affected (0.00 sec)

 

mysql> set global validate_password_special_char_count=0;#设置密码中的特殊字符为0

Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=6;#设置密码长度为6

Query OK, 0 rows affected (0.00 sec)

 

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on *.* to ‘zabbix’@’%’ identified by ‘zabbix’;

Query OK, 0 rows affected, 1 warning (0.06 sec)

 

3.5、安装zabbix,并导入zabbix包中的数据到mysql的zabbix数据库中

[root@server134 mnt]# tar zxvf zabbix-2.4.8.tar.gz

[root@server134 mnt]# cd zabbix-2.4.8

[root@server134 mnt]# cd zabbix-2.4.8

[root@server134 zabbix-2.4.8]# mysql -uzabbix -pzabbix zabbixconfigure: error: MySQL library not found

[root@server134 zabbix-2.4.8]# yum install mysql-devel

[root@server134 zabbix-2.4.8]# make &&make install

 

3.6、Copy zabbixserver端跟agent端的启动脚本,并设置执行权限

[root@server134 zabbix-2.4.8]# cp misc/init.d/tru64/zabbix_agentd /etc/init.d/

[root@server134 zabbix-2.4.8]# cp misc/init.d/tru64/zabbix_server /etc/init.d/

[root@server134 zabbix-2.4.8]# chmod +x /etc/init.d/zabbix_*

[root@server134 zabbix-2.4.8]# cp misc/init.d/tru64/zabbix_agentd /etc/init.d/

[root@server134 zabbix-2.4.8]# cp misc/init.d/tru64/zabbix_server /etc/init.d/

[root@server134 zabbix-2.4.8]# chmod +x /etc/init.d/zabbix_*

[root@server134 zabbix-2.4.8]# mkdir /var/www/html/zabbix

[root@server134 zabbix-2.4.8]# cp -a frontends/php/* /var/www/html/zabbix/

[root@server134 zabbix-2.4.8]# chown -R apache.apache /var/www/html/zabbix/

 

3.7、调整使用zabbix服务所需的php参数

[root@server134 zabbix-2.4.8]# vi /etc/php.ini

date.timezone = Asia/Shanghai

max_execution_time = 300

max_input_time = 300

post_max_size = 32M

memory_limit = 128M

mbstring.func_overload = 0

[root@server134 zabbix-2.4.8]# service httpd restart

 

3.8、调整zabbix服务所需的参数

[root@server134 ~]# vi /etc/zabbix/zabbix_server.conf

DBHost=192.168.159.134

DBName= zabbix

DBUser=zabbix

DBPassword=zabbix

DBSocket=/var/lib/mysql/mysql.sock

StartPollers=30        开启多线程数,一般不要超过30个

StartTrappers=20        trapper线程数

StartPingers=10        fping线程数

StartDiscoverers=120   

ListenIP=0.0.0.0

MaxHousekeeperDelete=5000     

CacheSize=128M        用来保存监控数据的缓存数,根据监控主机的数量适当调整

StartDBSyncers=8      数据库同步时间

HistoryCacheSize=128M 

TrendCacheSize=128M    总趋势缓存大小

HistoryTextCacheSize=128M

AlertScriptsPath=/etc/zabbix/alertscripts

LogSlowQueries=1000

[root@server134 ~]# service httpd restart

[root@server134 ~]# /etc/init.d/zabbix_server start

3.8、图形化安装zabbix

http://192.168.159.134/zabbix/setup.php

更多详情

转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn

搭建PXE服务器安装Linux系统-演道网

PXE是在没有软驱、硬盘、CD-ROM的情况下引导计算机的一种方式,也就是BIOS将使用PXE协议从网络引导。

DHCP服务器:用来动态分配IP地址(同时分配子网掩码、网关、TFTP服务器地址、启动文件名、DNS服务器、时间服务器等等)。

TFTP服务器:用来提供启动文件的下载

简单说来,PXE服务器就是DHCP服务器+TFTP服务器。网络启动过程大概是这样的(可能并不严谨):客户端发送动态获得IP地址的广播包到 网络上,DHCP服务器在收到该广播包后,发送给客户端分配IP地址的回应包,客户端收到回应包后设置自己的IP地址,然后从DHCP服务器获得启动服务 器的IP地址(DHCP服务器066选项,这就是TFTP服务器的IP地址)及启动文件名(DHCP服务器067选项,这里的启动文件名就是 pxelinux.0或者支持pxe的grub4dos的grldr,当然,也可以是startrom.n12或者使用3com Image Edit创建的pxe启动菜单文件,总之,它应该是一种由pxe启动规范规定的固定格式的可执行文件),然后客户端到联系启动服务器(TFTP服务器)获 得启动文件并执行,这样基本上就完成了pxe启动过程。

在Unix或者Linux系统下,DHCP服务器和TFTP服务器一般都是分开设置的,两台服务器甚至可以在两台不同的机器上,其实 Windows下的设置也是一样的,但在Windows下,我们可以通过使用HaneWin DHCP服务器软件或TFTPD32一个软件就搞定(我个人推荐使用HaneWin DHCP服务器软件,但TFTPD32设置起来更简单一些,就是效率有些低),详细的设置方法请自己摸索,你只要知道,在设置PXE服务器时,要设置好 DHCP和TFTP两个服务器,其中DHCP服务器要设置启动服务器名和启动文件名。

搭建环境:

推送服务器:

Ip:192.168.189.138

系统:CentOS 5.8

推送系统:RHEL 5.4

1:配置dhcpd服务。

如果没有安装dhcpd服务,请安装:

# yum -y install dhcp.x86_64
# vi /etc/dhcpd.conf
option domain-name “766.com”;
default-lease-time 6000; 
max-lease-time 11400; 
authourtative; 
next-server 192.168.189.138;
ddns-update-style ad-hoc; 
log-facility local7; 
subnet 192.168.189.0 netmask 255.255.255.0{ 
range 192.168.189.150 192.168.189.195;
option domain-name-servers 192.168.189.254; 
option domain-name “766.com”;
option netbios-name-servers 192.168.189.254; 
option routers 192.168.189.254; 
option broadcast-address 192.168.189.255;
default-lease-time 6000; 
max-lease-time 11400; 
filename “/kickstart/ks.cfg”;
}
 
 
option space PXE; 
 
class “PXE” { 
    match if substring(optionvendor-class-identifier, 0, 9) = “PXEClient”; 
    optionvendor-encapsulated-options 01:04:00:00:00:00:ff; 
    option boot-size 0x1; 
    filename”pxelinux.0″; 
    option tftp-server-name “192.168.189.138”; 
    option vendor-class-identifier”PXEClient”; 
    vendor-option-space PXE; 
}

2:开启tftp服务:

如果没有tftp服务软件,请安装:

# yum -y installtftp.x86_64
# yum -y installxinetd.x86_64 
# yum -y installtftp-server.x86_64
 
配置tftp
# vi/etc/xinetd.d/tftp
service tftp
{
        socket_type            = dgram
        protocol              = udp
        wait                = yes
        user                = root
        server              = /usr/sbin/in.tftpd
        server_args            = -s /tftpboot
        disable              = no
        per_source            = 11
        cps                = 100 2
        flags                = IPv4
 }

3:准备推送所需的文件与目录。

把光盘或iso文件中的isolinux目录下的文件,拷贝到/tftpboot。

把pxelinux.0文件拷贝到/tftpboot:

# cp /usr/lib/syslinux/pxelinux.0 /tftpboot

创建RHEL5.4目录,把initrd.img、vmlinuz两个文件拷贝进去:

# mkdir -p /tftpboot/RHEL5.4
# mv /tftpboot/initrd.img /tftpboot/RHEL5.4
# mv /tftpboot/vmlinuz /tftpboot/RHEL5.4

创建pxelinux.cfg目录,把isolinux.cfg文件拷贝进去,并改名default:

# mv isolinux.cfg pxelinux.cfg/default
 
修改default文件参数
# vi /tftpboot/pxelinux.cfg/default
default linux
prompt 1
timeout 600
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label RHEL5.4
 kernel RHEL5.4/vmlinuz
 append ksdevice=eth0 load_ramdisk=1 initrd=RHEL5.4/initrd.img noipv6

配置boot.msg,添加加载选项:

# vi /tftpboot/boot.msg
Install RHEL5.4  —> RHEL5.4

4:提供安装镜像或者内容,这里使用nfs方式。

把光盘镜像或内容拷贝到/home/RedHat下。

使用nfs方式,把/home/redhat共享给192.168.189.0/24网段:

# vi/etc/exports
/home/redhat 192.168.189.0/24(rw,async,no_root_squash)

5:启动各个所需服务,并测试安装。

# service dhcpd start
# service xinetd start
# service nfs start

启动计算机,F12,选择从网卡启动,正常的话则可进入安装引导界面:

写入RHEL5.4,进入安装。

选择安装介质获取方式,选择nfs:

填写服务器ip与介质路径:

进入图形安装界面,说明可以安装了:

使用ks文件实现全自动安装:

使用system-config-kickstart创建ks文件模版(system-config-kickstart无法创建LVM,若要使用LVM,许在生成ks文件后,手动编辑)

LVM配置:

partpv.01 –size=10000 –grow
volgroupvg-001 pv.01
logvol/ –vgname=vg-001 –size=10000 –name=lv-001

ks文件中指定了键盘,语言,安装方式,分区等配置。

配置default文件,指定ks文件路径(可用nfs,ftp等方式):

append ksdevice=eth0 load_ramdisk=1 initrd=RHEL5.4/initrd.img ks=nfs:192.168.189.138:/home/redhat/ks.cfg noipv6 

启动客户端,测试自动安装。

更多RedHat相关信息见RedHat 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=10

转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn

Ubuntu下安装数字摄影暗房软件 Darktable 2.2.2-演道网

Darktable可以被称之为Linux版的Lightroom,这是一款帮助专业摄影师的进行照片管理及后期处理的图形工具,也可以称之为暗房软件。官方网站:http://www.darktable.org/。通它你可以用来调整及渲染你的数码照片,使之更加漂亮。Darktable使用gtk+/cairo构建,后台数据库使用sqlite3。

Ubuntu下安装数字摄影暗房软件 Darktable 2.2.2

Darktable 2.2.2带来的新变化 点击这里看详细

新功能:

  • color look up table module: include preset for helmholtz/kohlrausch monochrome
  • Lens module: re-enable tiling
  • Darkroom: fix some artefacts in the preview image (not the main view!)
  • DNG decoder: support reading one more white balance encoding method
  • Mac: display an error when too old OS version is detected
  • Some documentation and tooltips updates

漏洞修复:

  • Main view no longer grabs focus when mouse enters it. Prevents accidental catastrophic image rating loss.
  • OSX: fix bauhaus slider popup keyboard input
  • Don’t write all XMP when detaching tag
  • OSX: don’t do PPD autodetection, gtk did their thing again.
  • Don’t show database lock popup when DBUS is used to start darktable
  • Actually delete duplicate’s XMP when deleting duplicated image
  • Ignore UTF-8 BOM in GPX files
  • Fix import of LR custom tone-curve
  • Overwrite Xmp rating from raw when exporting
  • Some memory leak fixes
  • Lua: sync XMPs after some tag manipulations
  • Explicitly link against math library

基础支持:

  • Canon PowerShot SX40 HS (dng)
  • Fujifilm X-E2S
  • Leica D-LUX (Typ 109) (4:3, 3:2, 16:9, 1:1)
  • Leica X2 (dng)
  • Nikon LS-5000 (dng)
  • Nokia Lumia 1020 (dng)
  • Panasonic DMC-GF6 (16:9, 3:2, 1:1)
  • Pentax K-5 (dng)
  • Pentax K-r (dng)
  • Pentax K10D (dng)
  • Sony ILCE-6500

Noise Profiles:

  • Fujifilm X-M1
  • Leica X2
  • Nikon Coolpix A
  • Panasonic DMC-G8
  • Panasonic DMC-G80
  • Panasonic DMC-G81
  • Panasonic DMC-G85

Ubuntu 用户安装命令:

sudo add-apt-repository ppa:pmjdebruijn/darktable-release

Ubuntu下安装数字摄影暗房软件 Darktable 2.2.2 

sudo apt-get update

Ubuntu下安装数字摄影暗房软件 Darktable 2.2.2 

sudo apt-get install darktable

Ubuntu下安装数字摄影暗房软件 Darktable 2.2.2

卸载 Darktable命令:

sudo apt-get remove darktable

其他Linux系统安装方法

Ubuntu下安装数字摄影暗房软件 Darktable 2.2.2 

更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn

Ubuntu 16.04安装图像处理软件 RawTherapee 5.0-演道网

先介绍一下 RawTherapee,这是一款简单、实用的跨平台图像处理软件,快速、高效的帮助您处理所需图片工作。Raw 图像文件也越来越常见,有时候为了调整一下,不得不打开 Photoshop 来处理,有了 Raw Therapee 一切变得方便快捷。

Raw 图像文件包含着从数码相机或扫描仪的图像传感器上直接得到的仅经过最少处理的原始数据。 Raw 格式之所以称之为 Raw ,就是因为他们未经任何处理。因此通常不能直接使用位图编辑器进行编辑、打印、或者在浏览器上显示这些图片。一般来说,图像文件可以使用 Raw 转换工具,在一个大色域中进行精确的调整,然后转换为 TIFF 、 JPEG 等图像文件以便于保存和打印。通常转换后的文件是设备相关的(device-dependent)。 Raw 格式经常被认为是单一的格式,因而被称为 Raw 文件。事实上各种不同型号的数码设备(例如数码相机和扫描仪)使用了数十种甚至上百种 Raw 格式。

Ubuntu 16.04安装图像处理软件 RawTherapee 5.0

软件的功能很强大,什么曝光补偿,亮度,高光,对比度,旋转,剪裁统杀。支持历史记录,和快照(就是把当前的处理状态临时保存下来)。

关于新版本的介绍点击这里

Ubuntu 16.04安装,有PPA安装非常方便,输入以下三条命令:

sudo add-apt-repository ppa:dhor/myway

Ubuntu 16.04安装图像处理软件 RawTherapee 5.0

sudo apt-get update

sudo apt-get install rawtherapee

Ubuntu 16.04安装图像处理软件 RawTherapee 5.0

下载命令:

sudo apt-get remove rawtherapee

更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn