云主机安装postfix,dovecot,mysql,tomcat,memcached,maven包发布

来源:互联网 发布:程序员有多累 编辑:程序博客网 时间:2024/06/06 02:38

各软件版本

postfix阿里云预装版, 

dovecot使用yum安装,

mysql 5.5.45

memcached 1.4.25

jdk1.8.0_25

tomcat 8.0.28

maven 3.3.3


机器配置

阿里云主机,20G系统盘,300G数据盘,CentOS6.5 64位


挂载数据盘

辅助命令:

fdisk -l可以查看硬盘情况

df -h 可以查看挂载后的情况


执行分区命令:

fdisk -S 56 /dev/xvdb    命令,对数据盘进行分区;根据提示,依次输入“n”,“p”“1”,两次回车,“wq”,


对于新盘,做格式化:

mkfs.ext4 /dev/xvdb1 或者 mkfs.ext3 /dev/xvdb1

稍等一会,(注意有两个提示,前面这个会自动跳过)在提示中输入:done(回车)


这里要注意:

如果你之前就有数据盘,只是你把系统盘重置了,需要将数据盘再次挂载到重置后的系统上,那么就不要对其格式化(跳过此步骤),直接执行后面的步骤挂载就可以了


创建目录(用来做挂载点):

mkdir mydata

在根目录下创建cd /


写入分区挂载信息:

echo '/dev/xvdb1 /mydata ext4 defaults 0 0' >> /etc/fstab

执行这个命令后,用cat /etc/fstab查看时,发现格式不太对,可以用vi /etc/fstab进行编辑


执行挂载命令:

mount -a

可以使用df -h查看挂载后的情况了


安装postfix和dovecot

阿里云预装了postfix,只需要配置就行了,而且在写该文章的时候,阿里云已经是默认postfix为MTA(2015-12-09)。

可以执行执行此步骤查看:

alternatives --config mta #选择对应的postfix序号

yum remove sendmail #移除sendmail


参考这个文章,简简单单就搞好了postfix和dovecot

安装postfix:http://www.server-world.info/en/note?os=CentOS_6&p=mail&f=1

安装dovecot:http://www.server-world.info/en/note?os=CentOS_6&p=mail&f=2


文章中下面配置,注意user postfix和group=postfix,这好像是useradd增加时的组设定对应关系。


unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix 
}


如:

mkdir /mydata/user #创建用户工作主目录

#chmod 777 /mydata/user #设定权限,会自动创建相关邮件目录(如果提示没有权限,就做这个操作)

useradd -g postfix -d /mydata/user/tom -s /sbin/nologin tom  #创建用户并设定用户的工作目录,这样邮件目录也会在这里了

passwd tom #设定密码,也就是邮箱密码,注意如果邮箱账号登录不成功,不要加邮箱后缀


#删除用户及其工作目录,同时删除该用户的邮件池:

sudo userdel -r tom


域名映射

vi /etc/hosts

ip  service.domain.com

我这里用service.domain.com来发邮件,例如:test@service.domain.com


MX记录映射

A记录   主机service  对应 ip

MX记录  主机@        对应 service.edm666.com


修改maillog:

/etc/syslog.config或者2./etc/rsyslog.conf

找到/var/log/maillog,改为自己的目录


重启log:

/etc/init.d/rsyslog restart


附相关配置

myhostname = service.domain.com
mydomain = service.domain.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, service.edm666.com
mynetworks = 168.100.189.0/28, 127.0.0.0/8 #不用改可以
relay_domains = $mydestination
home_mailbox = Maildir/
mail_spool_directory = /mydata/mail_spool
smtpd_banner = $myhostname ESMTP
# limit an email size for 10M
message_size_limit = 10485760
# limit a mailbox for 1G
mailbox_size_limit = 1073741824


# for SMTP-Auth
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject


postfix错误及解决方法:

错误:

dovecot: pop3-login: Aborted login (auth failed, 1 attempts):


解决方法:

vi /etc/dovecot/conf.d/10-auth.conf
去掉disable_plaintext_auth前面#,修改为disable_plaintext_auth = no

vi /etc/dovecot/conf.d/10-ssl.conf
修改为ssl = no

重启dovecot服务
service dovecot restart


错误:
dovecot: pop3(zhang): Error: open(/mydata/mail/zhang) failed: Permission denied (euid=500(zhang) egid=12(mail) missing +w perm: /mydata/mail, euid is not dir owner)
dovecot: pop3(zhang): Error: Opening INBOX failed: Mailbox doesn't exist: INBOX


解决方法:

这表示没有权限,用chmod 777赋权限,或者给指定的组赋权限


错误:

Dovecot 2.0.x: Error: service(pop3-login): listen(::, 110) failed: Address family not supported by protocol


解决方法:

it means that Dovecot is trying to bind to an IPv6 interface, but your system doesn't support IPv6.  The solution is to tell Dovecot to only listen on an IPv4 interface.  You can do this by adding the following to the very top of your /etc/dovecot.conf file
listen = *


The internal default is
listen = *, ::

增加SPF配置

解析为TXT记录,输入子域名,如果不使用子域名,输入@或为空就行了,记录值为v=spf1 ip4:110.110.100.100 -all


你可以将邮件里 "SMTP 设置" 的 "HELO/EHLO、主机名" 设置成 mail.abc.com,这样比较规范。


添加反向解析PTR

在阿里云中添加工单,把ip和域名给他,如果是子域名的话,就给子域名

反向解析测试:

ping ip

nslookup -q=ptr ip


配置DKIM

安装DKIM

下载:http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

复制到linux。

执行:rpm -Uvh /tmp/epel-release-6-8.noarch.rpm

执行:yum install opendkim


生成密钥

# 请替换下面的域名,其它不用改
export domain=service.test.com
mkdir /etc/opendkim/keys/$domain
cd /etc/opendkim/keys/$domain
opendkim-genkey -d $domain -s default
chown -R opendkim:opendkim /etc/opendkim/keys/$domain
echo "default._domainkey.$domain $domain:default:/etc/opendkim/keys/$domain/default.private" >> /etc/opendkim/KeyTable
echo "*@$domain default._domainkey.$domain" >> /etc/opendkim/SigningTable


做DKIM解析DNS记录

新建一个TXT记录,

主机记录为:default._domainkey.service,(如果使用域名test.com,这里解析为default._domainkey)

记录值为:打开/etc/opendkim/keys/domain.com/default.txt,找到如下记录:

v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD+PPODKDK+4z1iHuyjzP4Sj5DKruJ5kYX6QwSYgoBjtGigmM3DV1f0M/gsDf2rbRSdfkFBnB+dN4l1VxFJdEmlXVaJ894W/kimjgASoLxUMPdy9sNmDtZ8+9W/oJvfcnl/DI/7uzL5PaXxCjhL5QxRNgHMENQOuJ99NTtzMSXvxQIDAQAB

注意不要引号。


修改配置DKIM文件

vi /etc/opendkim.conf

1. 将Mode 改为 Mode sv 

2. 将Domain 改为 Domain lomu.me(lomu.me是之前设置的域名) 

3. 将所有变量前面的#去掉,但是KeyFile、Statistics加上# 

4. 再把SigningTable /etc/opendkim/SigningTable改成SigningTable refile:/etc/opendkim/SigningTable


配置postfix增加dkim配置

vi /etc/postfix/main.cf


增加如下配置:

# opendkim setup

smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = inet:127.0.0.1:8891
milter_default_action = accept


重启服务:

service opendkim restart
service postfix restart
chkconfig opendkim on


检查DKIM是否生效

在线工具:

http://dkimcore.org/c/keycheck

Seletor: default

Domain name: service.test.com,(如果是不带子域名,则为test.com)


命令方式:

windows: nslookup -q=txt default._domainkey.service.test.com

linux: dig default._domainkey.service.test.com


增加DMARC

DNS添加一个TXT记录

记录名: _dmarc.service (如果是test.com,则为 _dmarc)

记录值:v=DMARC1; p=none


jdk安装

1.8.0_25版本


检查是否已有java版本存在

rpm -qa | grep java


版本不对移除:

rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-1.45.1.11.1.el6.x86_64


下载jdk对应版本的rpm包到某个linux目录中。

我是下载到本地,下面找对应的版本:

http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html#jdk-8u25-oth-JPR


执行安装:

rpm -ivh jdk-8u25-linux-x64.rpm

用java -version检查安装是否正确


环境变量:

$vi /etc/profile

输入o(表示编辑),在最后加入以下内容:
JAVA_HOME=/usr/java/jdk1.8.0_25
JRE_HOME=/usr/java/jdk1.8.0_25/jre
MYSQL_HOME=/mydata/app/mysql
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$MYSQL_HOME/bin:$MYSQL_HOME/lib
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

使环境变量立即生效:source /etc/profile


用java -version检查安装是否正确


安装tomcat

tomcat8.0.28

下载:

http://tomcat.apache.org/download-80.cgi


解压:

tar -zxv -f apache-tomcat-8.0.28.tar.gz


移动目录:

mv apache-tomcat-8.0.28 tomcat


启动:

 /usr/local/tomcat/bin/startup.sh  //启动tomcat,注意要看到有jre路径,否则就是java环境变量配置不正确


开放端口(默认为8080):

/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT  

/etc/rc.d/init.d/iptables save

/etc/rc.d/init.d/iptables restart


检验Tomcat是否正常 运行:

http://192.168.10.138:8080/


tomcat自启动参考文章:

http://blog.csdn.net/xqf222/article/details/38556815


编辑处理:

server.xml增加utf-8配置URIEncoding:

<Connector port="8080" protocol="HTTP/1.1"  
                useBodyEncodingForURI="true"  
                URIEncoding="UTF-8"  
               connectionTimeout="20000"  
               redirectPort="8443" />  

注意,你文件本身的编码应该要用UTF-8


安装mysql

查看是否已安装:

yum list installed | grep mysql


移除已安装:

yum -y remove mysql-libs.x86_64


下载:

http://downloads.mysql.com/archives/get/file/mysql-5.5.45.tar.gz


安装必要的软件包:

yum -y install  gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake bison bison-devel


# 新增用户组

groupadd mysql


# 新增用户

useradd mysql -s /sbin/nologin -M -g mysql


# 新建数据库执行文件目录
mkdir -p /usr/local/mysql


# 新建数据库数据文件目录
mkdir -p /db/mysql/data


 # 修改目录拥有者
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /db/mysql/data
chown -R mysql:mysql /usr/local/mysql/.
chown -R mysql:mysql /db/mysql/data/.


# 编辑PATH搜索路径
vi /etc/profile
添加如下两行:
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
export PATH

# 生效PATH搜索路径
source /etc/profile

# 安装编译源码所需的工具和库
yum -y install wget gcc-c++ ncurses-devel cmake make perl


# 解压缩源码包

tar -zxv -f mysql-5.6.17.tar.gz


编译包(注意修改目录或端口):

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/db/mysql/data \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306


执行安装:

make && make install


# 复制配置文件
cp /usr/local/mysql/support-files/my-small.cnf /etc/my.cnf

# 进入安装路径
cd /usr/local/mysql

# 执行配置脚本
scripts/mysql_install_db --user=mysql --datadir=/db/mysql/data

# 复制服务启动脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

# 启动MySQL服务
service mysql start

# 设置开机自动启动服务
chkconfig mysql on


大小写不敏感:

vi /etc/my.cnf 添加如下内容,lower_case_table_names=1
 


修改MySQL的root用户的密码以及打开远程连接

mysql
mysql> use mysql;


mysql> desc user;
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "password";    //为root添加远程连接的能力,其中password为明文
mysql> flush privileges;

mysql> select Host,User,Password from user where User='root';

mysql> exit


删除用户权限

revoke delete on *.* from root@'101.233.72.100';

drop user 'root'@'localhost';


上面改密码后,在本机登录使用命令:

mysql -u root -p 


安装memcached

查看是否已安装libevent:

rpm -qa|grep libevent 

没有安装,则执行下面的操作,

先下载:https://sourceforge.net/projects/levent/files/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gz


执行安装:

#tar zxvf libevent-2.0.22-stable.tar.gz
#cd libevent-2.0.22-stable
#./configure --prefix=/usr/local/libevent #这个是定义安装目录
#make

#make install


下载并安装memcached:

http://www.memcached.org/files/memcached-1.4.25.tar.gz


安装:

# tar xzvf memcached-1.4.15.tar.gz 
# cd memcached-1.4.15 
# ./configure --with-libevent=/usr/local/libevent  --prefix=/usr/local/memcached
# make 
# make install 


启动一个memcache进程:

/usr/local/memcached/bin/memcached -d -m 256 -u root -p 11211 -c 1024 –P /tmp/memcached.pid

上面

-m 256表示256M内存

-d 表示启动一个守护进程

-c 选项是最大运行的并发连接数,默认是1024


如果是远程访问,防火墙请开放端口。


自启动设置:

详细看这个url也行:http://cowbane.iteye.com/blog/970230

在解压的目录中,找到memcached.sysn文件,然后修改相关的参数和路径,执行以下操作:

cp到/etc/init.d目录下并改名为memcached,然后执行chmod a+x memcached,如下:

    shell > cp memcached.sysv /etc/init.d/memcached
    shell > chmod 755 /etc/init.d/memcached
    

将memcached加入系统服务:
    shell > chkconfig --add memcached
    shell > chkconfig memcached on
  

以服务方式运行memcached
    shell > service memcached start


辅助命令:

ps aux|grep memcached或者ps -ef | grep memcached

杀掉进程:

kill -9 10068或者kill cat /tmp/memcached.pid


maven web项目发布

打包成war包,然后复制到tomcat/webapps目录,访问包名会自动解包。

在项目目录下执行如下命令:

D:\prts_java\test>mvn package -Dmaven.test.skip=true


注意:

1.不能放多个包在同一个目录中,否则会提示端口占用,需要其它方式设置。

2.解包后,先停止tomcat,再删除war包。

后面更新相关的class和页面文件就行了,如果有lib也都单独更新就OK。

更新后,要重启一下tomcat。


maven jar打包

主要是为了做服务使用,用maven打包的话,能够自动把配置文件相关目录结构自动处理好。

maven pom配置

在pom.xml文件中增加如下配置:

<build><plugins><plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-jar-plugin</artifactId>        <version>2.6</version>        <configuration>            <archive>                <manifest>                    <addClasspath>true</addClasspath>                    <classpathPrefix>lib/</classpathPrefix>                    <mainClass>your.App</mainClass>                </manifest>            </archive>        </configuration>    </plugin> </plugins></build>


打包方法:

运行cmd,打开项目的根目录,执行命令:mvn clean package


注意:

如果你的项目类型是web的话,就会生成war包,如果是其它类型,会自动生成jar包


制作windows服务

主要使用java service warpper工具

下载工具:

下载community版本,stable版本在用的时候,会提示要liscen。下载地址如下:

http://wrapper.tanukisoftware.com/download/3.5.27/wrapper-delta-pack-3.5.27.zip


打包

打包为jar类型,参考上面有介绍


配置

参考:http://blog.csdn.net/a123demi/article/details/43058545#t3

主要就是wrapper.conf的文件配置,其它都是复制粘贴。

一般是如下目录结构:

bin

conf (wrapper.conf在这里修改)

lib (这里放自己的依赖包)

logs

your.jar


运行和卸载

执行bin目录下的InstallApp-NT.bat,UninstallApp-NT.bat


注意

如果提示引用失败什么的,查看jar包中的META-INF/MANIFEST.MF文件中的lib目录结构,然后修改将文件放到相关目录中。


制作linux服务

下载64位linux:

http://wrapper.tanukisoftware.com/download/3.5.27/wrapper-linux-x86-64-3.5.27.tar.gz


配置:

参考这个url中的一部分:)

http://blog.csdn.net/lhx1026/article/details/3936939


其中要注意的:

文件赋予执行权限 
chmod 775 /opt/testapp/bin/test
chmod 775 /opt/testapp/bin/wrapper 


文中conf中的lib引用改了一下,改为如下:

wrapper.java.classpath.1=../test.jar
wrapper.java.classpath.2=../lib/wrapper.jar
wrapper.java.classpath.3=../lib/*.jar


文中第4步我改了一下,替换为如下:

# ln -s /usr/local/queuesApp/bin/test /etc/init.d/test  #做个链接
# chkconfig --levels 235 test on   #加入服务


服务删除:

# chkconfig --del test

服务显示:

# chkconfig --list | grep test


运行:

service test start,stop,restart,status


后记

1.注意iptables要加-A INPUT -i lo -j ACCEPT,这样在服务器端才能telnet localhost 8080,相关的程序连接本机mysql,memcached才能正常工作


0 0