ISV系统部署规范.docx_第1页
ISV系统部署规范.docx_第2页
ISV系统部署规范.docx_第3页
ISV系统部署规范.docx_第4页
ISV系统部署规范.docx_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

淘宝-ISV文档文件编号: SA-ISV-系统部署规范-V1.0.docISV系统部署规范草案版本号V1.7编 写 人: 山大编写时间:2010-2-26 版本修订记录版本编号修改日期修订章节修改者修订说明1.02010-02-26全部山大创建文档1.12010-03-03大部山大讨论,更改1.22010-03-08应用部署参考踏空增加nginx,squid应用部署参考及注意事项1.32010-03-11全部山大,踏空修改目录等1.42010-3-23部分山大修改分区,增加安全设置,增加shterm1.52010-4-22部分山大更改php等安全配置1.62010-5-12部分山大更改mysql登陆1.72010-6-10部分山大更改shterm管理及上传版权说明本文件中出现的任何文字叙述、文档格式、插图、照片、方法、过程等内容,除另有特别注明,版权均属淘宝公司所有,受到有关产权及版权法保护。任何个人、机构未经淘宝公司的书面授权许可,不得复制、引用或传播本文件的任何片断,无论通过电子形式或非电子形式。ISV系统部署规范草案目录1. 文档目的:为了规范化,标准化,保障应用安全,便于运维和管理,规范ISV的系统部署,特别拟定此手册。2. 系统约定u Linux系统 采用版本 Redhat RHCE 4 update 7以上,RHCE 5 update 2,以上一般使用64位系统,原则不使用32位系统必须使用32位系统的,内存最多分配4G,u 原则不使用Windows系统,特殊需要请通过PM申请。u 数据库一般使用Mysql,不能使用MSSQL和ORACLE等付费数据库3. 系统分区默认物理机(300G硬盘)分五个区n /boot 100M 启动分区n / 10G 根分区, /opt不做独立分区 n /usr 15G 系统应用分区n /var 20G 系统日志分区n /home 数据和应用分区 剩余大小 默认虚拟机(80G硬盘)分两个区n /boot 100M 启动分区n / 根分区 剩余大小 分区默认使用Ext3,有特殊需要分区请和淘宝运维联系系统目录说明:/home 用户数据和web数据目录,和配置文件/ 根 一般不放用户文件/usr 一般系统程序存放/var 系统的日志,一般不放用户的日志/opt 一些下载的源文件可以放这里4. 系统目录约定RPM包和源码包存放位置/opt/taobao/install 源码包编译安装位置(prefix)/home/admin/apps脚本以及维护程序存放位置/home/admin/bin备份文件/home/admin/backup用户脚本的输出日志/home/admin/logs/日志Crontab命令脚本/home/admin/bin/crontabCrontab日志输出/home/admin/logs/crontab用户临时文件/home/admin/tmpMySQL 程序安装位置/home/mysqlMySQL 数据库位置,binlog,errlog/home/mysql/varApache 程序/home/admin/apps/httpdApache home目录目录/home/admin/域名或应用名临时文件/home/admin/tmp/Jboss程序/home/admin/apps/jbossJboss Home目录/home/admin/应用名Tomcat程序/home/admin/apps/tomcatTomcat数据文件/home/admin/apps/tomcat/ROOTNginx程序文件/home/admin/apps/nginx/Nginx数据文件/home/admin/域名或应用名其他有需要请补充注意:应用要安装在/home/admin/apps/下面,应用的程序文件要在/home/admin/”应用名”/下5. 账户约定5.1特权账号 Root 帐号是服务器的最高权限拥有者,只有在涉及到系统维护管理的时候才需使用,因此作出下述规定:(1) 在root帐号内,不允许保存任何文件(必要已经审批工具除外);/root/ (2) 不允许用root运行任何非系统必须的程序(特殊服务除外)。5.2工作帐号约定使用admin:admin, gid和uid都使用500是生产服务运行所使用的帐号,此帐号的动作将影响到生产服务运行的稳定性,因此在工作帐号的目录内,只允许存放下列条件所允许的程序、配置文件、数据文件、日志、脚本、备份文件、crontab;(1) 线上服务所必须的,应用端口尽量不要用1024一下端口,用admin部署。(2) 运行维护所必须的。(3) 部署时可以拥有ROOT权限, 部署完之后应当收回ROOT权限。(4) 添加账户groupadd -g 500 adminuseradd -g 500 -u 500 admin6. 进程约定u 生产服务的进程需要以admin账户来启动u 服务端口尽量不要使用1024以下端口,不需要root的特权u 特殊进程请必须告知淘宝运维7. 端口约定应用端口备注apache80默认使用80端口,使用admin起来,赋予httpd 4755权限mysql3306默认使用3306端口,使用mysql账户memcache11211jboss9001tomcat8080如果需要直接对外,在LB上面80映射过来Nginx8080如果需要直接对外,在LB上面80映射过来squid8080如果需要直接对外,在LB上面80映射过来Nfs,portmapPhp-cgi10080snmp161有其他需要的请补充给淘宝运维。8. 文件和目录规范文件及目录结构,让所有文件都在它们应该在的位置,是为了降低由于文件数量众多带来的安全风险,保证线上服务环境的整洁、环保与安全;规范文件及目录权限,避免未授权帐户读取、修改或执行文件,降低由此造成的风险,保证线上服务环境的独立性。注意点:一个目录下面不允许多达6000个文件以上, 如果文件数量很多, 想办法采用多级目录解决。/home/admin的目录/home/admin/ APPS/ (Httpd)/ bin/ logs/ lib/ conf/ htdocs//网站数据请独立出来bin/ crontab logs/ crontab backup/tmp/程序文件或域名作为目录 9. 数据安全和备份a) 程序文件备份i. ISV自己需要有svn版本管理和本机备份ii. 服务器上有条件的保留7日的滚动备份,iii. 配置文件做7天的滚动备份b) 数据库备份i. 需要热备,mysql 通过master slave做主从复制ii. 冷备,对于不大的数据库,每天定时在重库上作七天轮询dump备份,对于比较大的数据库,超过10G,采用增量备份c) 附件等重要数据文件i. 设计上最好能够分布式机制,保存保存2份,最好3份数据。ii. 不能分布式,必须有异机冗余备份,譬如Nfs,用 Rsync做备份iii. 最好能够考虑定期冷备份到光盘或者磁带iv.d) 日志备份尽量压缩保存文件原则保留90天日志没必要的日志不需要备份10. 安全注意a) 要确保帐户的安全,密码要使用强密码,不能传递密码,本机保存密码文件要加密。b) 管理端口:管理访问必须通过acls,源地址必须做限制c) 系统级别:公开的服务端口,必须通过负载均衡出去,开放aclsd) 应用层:防注入和跨站,扫描e) 后台管理工具,phpmyadmin,jmx-console,web-console等必须要告诉淘宝运维,测试安全性f) 后台管理地址,也需要列出来,告诉淘宝运维,测试安全性g) 开放的应用管理地址需要用apache作地址限制和帐户设置,示例h) 部署安全11. crontab注意事项a) 脚本当中应当输出到具体日志中b) Crontab上面脚本日志输出要到 /dev/null 2&1 或者指定到文件, 避免邮件警报把服务器日志塞满c) 脚本放在/home/admin/bin/crontab下面d) 日志输出到/home/admin/logs/crontab下面e) Crontab 格式#add by shanda for update monitor 20100222*/50 * * * * /home/admin/bin/crontab/update.sh /dev/null 2&1 #update by shanda 2010022612. 登陆服务器u 请向淘宝运维申请服务器登陆账号u 需要通过登陆服务器登陆 登陆设置如下:u 需要固定IP地址做ACLS访问许可u 一般使用SecureCRT来登录,请把 会话选项终端-仿真 终端改成 Xterm. u 如果经常连接超时,可以设置一下自动发送连接:u 如果用了一段时间突然发现无法登陆,报密码错误或者帐号被锁定:这是因为系统默认3个月会自动更改一次密码,到期前系统会发一封密码邮件给你,如果没有注意,连续错误5次会账号会自动锁定,锁定后请联系Shterm的管理员来更改密码。谢谢!u 如果手动修改自己的密码: 通过5 用自己的帐号登陆,进入账户设置,再输入一次密码,注意密码更改规则:新密码长度不应小于 8 个字符,不能与前 5 次的设置相同;最少要包含 1 个数字字符, 1 个大写字母, 1 个小写字母, 1 个其他字符;由于启动了 CrackLib,请勿设置简单密码。13. 文件上传a) 服务器可以通过80端口走http协议wget来下载需要的文件。b) Shterm禁止过了直接rz,sz,c) 上传可以通过sftp上传 设置:登陆服务器地址,端口22,用你自己的账号,登陆后选择内部服务器和账号工具可以使用FlashFXP,Filezilla,Winscp,SecureFX等d) Linux机器可以直接scp 下载Scp yourname5:/ /admin/home/admin/www/default.css /home/admin/www/new.css 上传Scp /home/admin/www/new.tgz yourname5:/ /admin/home/admin/www/new.tgz备注:你的账号登陆服务器 目标服务器 目标账号 目标目录14. 外部访问u 外部访问需要通过负载均衡设备的VIP访问u 需要提供给淘宝运维要访问的域名,映射到的服务器以及开放的端口u 经过安全审核和运维审核之后才能开通外部访问。15. 时间同步目前已默认配置时间服务器/etc/ntp.conf 请不要更改。16. 监控 snmp/etc/snmp/snmpd.conf 目前系统安装已经配置系统监控:服务器的网卡流量,磁盘空间,内存,cpu,load必须监控应用监控:必要的应用监控请提交需求请不要更改snmpd.conf,有需要更改,请和淘宝联系,谢谢! 17. 系统参数优化Web服务器优化 数据库服务器优化 请把需要优化的参数提供给淘宝。18. 域名的使用ISV应用原则不能使用淘宝域名域名必须要经过备案还能启用19. Sendmail的使用1.没有必要请不要启用sendmail服务2.不允许利用服务器发送垃圾邮件3.使用sendmail请注意邮件队列/var/spool/mqueue 20. 应用部署参考(等待补充)a) Apache部署参考1.安装,配置文件,启动,日志轮询,维护,常见问题,优化安装: 直接拷贝编译好的文件程序文件 /home/admin/apps/httpd配置文件 /home/admin/apps/httpd/conf/启动文件 /home/admin/apps/httpd/bin/日志文件 /home/admin/apps/httpd/logsWeb文件 /home/admin//日志请安装cronolog 按年月日分日志隐藏banner,在conf/httpd.conf里添加:ServerTokens ProductOnlyServerSignature Off2.建议加载mod_evasive20防御CC攻击,但并未设置。建议做如下配置。具体可根据产品的具体情况调整:mod_evasive20配置: DOSHashTableSize 10000 DOSPageCount 300 DOSSiteCount 60 DOSPageInterval 10 DOSSiteInterval 10 DOSBlockingPeriod 300 DOSEmailNotify DOSSystemCommand sudo /sbin/iptables -A INPUT -s %s -j DROP DOSLogDir /tmp DOSWhiteList 192.168.*.*b) Mysql部署参考i. 安装,配置文件,启动,日志轮询,维护,常见问题,优化安装:直接拷贝编译好的文件. 提供64位 5.1版本mysql 程序文件 /home/mysql 已经安装好 选择mysql用户。首先需要安装用mysql用户登录数据库机器,admin用户ssh mysqllocalhost Mysql账户或直接选择或者通过登录的服务器的admin用户ssh mysql目标地址 。cp /home/mysql/share/mysql/mysql.server /etc/init.d/mydqldchown mysql:mysql /etc/f 配置文件改成mysql用户停止脚本:/etc/init.d/mysqld stop 启动脚本: /etc/init.d/mysqld start 数据文件,binlog,errlog /home/mysql/var/ 设定强密码 mysqladmin password 强密码 口令至少8位,必须包含字母(大小写)、数字、特殊字符(#$%&等)编译参数参考:./configure -prefix=/home/mysql/ -enable-assembler -with-extra-charsets=complex -enable-thread-safe-client -with-big-tables -with-readline -with-ssl -with-embedded-server -enable-local-infile -with-plugins=innobase & make & make install授权参考:GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALERT ON dbname.* TO usernameip/netmask IDENTIFIED BY dbpassword WITH GRANT OPTION;配置参考mysqldskip-networking #禁止远程连接数据库local-infile=0 #禁止MySQL对本地文件存取删除默认数据库和数据库用户mysql drop database test;mysql use mysql;mysql delete from db;mysql delete from user where not (host=localhost and user=root);mysql flush privileges;Mysql的配置Mysql的读写复制Mysql的备份Mysql配置:Mysql的配置 /etc/f ; owner是mysql :chown mysql /etc/f mysqlduser=mysqlskip-name-resolveold_passwords=1slow_query_log=/home/mysql/slowquery.loglong_query_time=2log-bin = mysql-binexpire_logs_days = 7max_connections=10000default-character-set=utf8 key_buffer = 32Mmax_allowed_packet = 4Mtable_cache = 2048ksort_buffer_size = 512Mnet_buffer_length = 64K#myisam_sort_buffer_size = 128Mjoin_buffer_size = 64Mread_buffer_size = 128Minnodb_max_dirty_pages_pct = 20innodb_flush_log_at_trx_commit = 2innodb_buffer_pool_size = 4096Minnodb_additional_mem_pool_size = 512Minnodb_log_buffer_size = 4Minnodb_log_file_size = 500Minnodb_log_files_in_group = 4innodb_file_per_tableset-variable = wait_timeout=30set-variable = interactive_timeout=30max_connect_errors = 1000thread_cache = 24thread_stack = 256kopen-files-limit = 28196query_cache_type=2query_cache_size = 32M#back_log = 1000tmp_table_size = 1024Mmysqld_safelog-error=/home/mysql/mysqld.logpid-file=/home/mysql/mysqld.pid Mysql的备份Mysql读写复制:mysql读写复制设置设置主数据库 从数据库1。在主数据库上开设一个同步账号GRANT REPLICATION SLAVE ON *.* to slaveuser identified by slave* WITH GRANT OPTION;2。主服务器f设置设置配置server-id = 1 binlog-do-db = wp_cs #多个数据库分开行写binlog-ignore-db = mysqllog-bin = mysql-bin master-connect-retry=60 expire_logs_days = 7 #设置binlog保存7天从服务器配置fserver-id = 2 #设置从机id标识,如果有多个从机,可以顺序增加ID为3,4.master-host = #主机地址master-user = slaveuser #主机mysql数据库用户master-password = slave* #主机mysql数据库密码replicate-do-db = wp_cs #多个数据库分开行写binlog-ignore-db = mysql#replicate-ignore-db = mysql #不同步的数据库,如果有多个数据库,每个数据库一行log-bin = mysql-bin #日志log-slave-updates #同步方式master-connect-retry=60expire_logs_days = 7 #设置binlog保存7天3.把主数据库导入到从数据库,并设置mysqldump -quick -flush-logs -lock-all-tables -A -default-character-set=utf8 -u root -p* /tmp/mysql.back.sql导入到从数据库/home/mysql/bin/mysql -default-character-set=utf8 -u root -p /home/admin/backup/mysqlbak/mysql.all.sql.$(date +%w)把命令放到脚本/home/admin/bin/crontab_bin/mysql.backup.shcrontab 设置0 1 * * * /home/admin/bin/crontab_bin/mysql.backup.sh /dev/null 2&1c) Php,apache部署参考程序 /home/admin/apps/php 配置 /home/admin/apps/php/etc/安全注意:1.apache建议用nobody起来,不要使用admin起来,避免用户通过apache获得太多的权限 2.web目录建议使用admin权限,目录设定755,不允许nobody的用户写入和更改文件,只允许admin更改文件;3.允许上传的目录,尽量放到一个特定的目录,譬如uploads,或者attachments, 目录权限可以设定为777, 同时需要再apache里面设定这个目录不允许执行php,具体设置,避免用户上传执行php文件Options FollowSymLinks MultiViewsAllowOverride NoneOrder allow,denyAllow from allphp_flag engine off 4.php.ini设置disable_functions=exec,passthru,popen,proc_open,shell_exec,system,phpinfo,assertsafe_mode = on ;如果影响多可以设成Off,必须告知淘宝原因。safe_mode_gid = offopen_basedir = WEBSITE ;譬如/home/admin/apps/apache/htdocs 可允许apache访问的php的文件目录safe_mode_include_dir = WEBSITE ;譬如/home/admin/apps/apache/htdocs/includes 可允许包含的文件目录safe_mode_exec_dir = WEBSITE ;譬如/home/admin/apps/apache/htdocs/exec 可允许执行禁止的php函数register_globals = Off ; 关闭全局变量display_errors = Off ;关闭错误信息提示enable_dl = Off ;不允许调用dlallow_url_fopen = Off ;关闭远程文件allow_url_include = Off ; 关闭远程文件session.cookie_httponly = 1 ;http only 开启,防止script跨站读取session.cookie_secure = 0 ; https secure 开启 ,如果需要https可以打开log_errors = On ; 错误日志 开启error_log = /home/admin/logs/php.err.log ;错误日志的路径,譬如/home/admin/apps/php/logsmagic_quotes_gpc = On ;如果需要关闭,请在程序当中 set_magic_quotes_gpc(0);d) Jboss和JDK部署参考安装: 直接拷贝编译好的文件JDK 直接拷贝 /home/admin/apps/jdk程序文件 /home/admin/apps/jboss 配置文件 /home/admin/apps/jboss/conf/启动文件nohup /home/admin/apps/jboss/bin/run.sh b & 在启动文件里面指定Java home停止命令:/home/admin/apps/jboss/bin/shutdown.sh -S日志文件 /home/admin/apps/jboss /logsWeb文件 /home/admin/apps/jboss/.default/deploy/ /home/admin/apps/jboss/.default/deploy/ /Jboss虚拟主机配置:建立应用 yourname.war , 在war下面建立 WEB-INF,里面,新建jboss-web.xml,里面添加server/default/deploy/jboss-web.deploye/server.xml 里面增加虚拟主机/ 注意事项:删除web-console,jmx-console,如:http:/*.*.*.*/jmx-console http:/*.*.*.*/web-console 1.删除server/default/deploy下目录jmx-console.war、management2.关闭status统计:注释server/default/deploy/jboss-web.deployer/ROOT.war/WEB-INF/web.xml Status Servlet 模块3. cd server/default/deploy/jboss-web.deployer/ROOT.war 删除默认文件 rm -f manager jboss.css index.html favicon.icoe) JDK和 Tomcat-apache部署参考下载: 从isvconsole 同步相应的版本安装 直接拷贝编译好的文件端口:8080启动和停止 使用admin启动/home/admin/apps/tomcat /bin/startup.sh 在启动文件当中指定 Java home,停止 /home/admin/apps/tomcat /bin/shutdown.sh export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC CLASS_PATH JAVA_HOME TOMCAT_HOME CATALINA_HOME配置 web 更改 conf/server.xml 注意通过IP地址不能访问或者定向到应用页面。更改数据库连接/home/admin/apps/tomcat/webapps/ROOT/WEB-INF/classes /perties删除Tomcat Manager 页面,如:http:/*.*.*.*/manager/html删除webapps目录下的默认的docs, examples , host-manager ,manager文件夹,防止通过web管理tomcat服务器f) Nginx部署下载: 从isvconsole 同步相应的版本安装 直接拷贝编译好的文件设置路经:/home/admin/apps/nginx端口:8080启动和停止 使用admin启动启动:/home/admin/apps/nginx/sbin/nginx (或者在启动的时候加-c参数指定配置文件)停止:/usr/bin/killall nginxReload: /bin/kill -HUP cat /home/admin/apps/nginx/nginx.pid检查配置文件语法:/home/admin/apps/nginx/sbin/nginx -t由于nginx不像apache一样日志支持管道输出,所以日志的rotate只能自己写脚本来定时分割(下例):#!/bin/bash# This script run at 00:00# The logs pathLOG_PATH=/home/admin/nginx/logsYYYY=date -d yesterday +%YMM=date -d yesterday +%mDD=date -d yesterday +%dmkdir -p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论