康盛创想项目部Linux 服务器部署标准(最新版)

1,065 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,065
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

康盛创想项目部Linux 服务器部署标准(最新版)

  1. 1. 项目部 Linux 服务器部署标准Comsenz Project Department Linux Server Deployment Standard 版本: 5.1.2 Version: 5.1.2 适用操作系统: CentOS 5.2-x86_64 发布日期: 2009 年 07 月 1 日 Distribution Date: September 1, 2009 By Comsenz Victor
  2. 2. 一、系统约定软件源代码包存放位置 /usr/local/src源码包编译安装位置(prefix) / usr/local/software_name ( software_na me 为软件名)脚本以及维护程序存放位置 /usr/local/sbinMySQL 数据库位置 /data/mysql(默认为/var/lib/mysql,可 按情况设置,此处/data 分区为最大的 分区)Apache 网站根目录 /data/www/wwwroot ( 可 按 情 况 设 置 , 此处/data 分区为最大的分区)Apache 虚拟主机日志根目录 /data/www/logs(可按情况设置,此处 /data 分区为最大的分区)Apache 运行账户 www:www二、系统环境部署及调整1. 检查系统是否正常 # more /var/log/messages (检查有无系统级错误信息) # dmesg (检查硬件设备是否有错误信息) # ifconfig(检查网卡设置是否正确) # ping www.163.com (检查网络是否正常)2. 关闭不需要的服务 # ntsysv 以下仅列出需要启动的服务,未列出的服务一律推荐关闭: atd crond irqbalance microcode_ctl network portmap sendmail sshd syslog3. 重新启动系统
  3. 3. # init 64. 配置 vim # vi /root/.bashrc 在 alias mv=mv -i 下面添加一行:alias vi=vim 保存退出。 # echo syntax on > /root/.vimrc # source /root/.bashrc5. 使用 yum 对系统进行更新并且安装必要软件包 # yum update –y 安装 ntpd 以校正时间 # yum install ntp –y注:如果安装的不是最新的操作系统版本,在连接公网的条件下,建议使用yum 对系统更新。6. 定时校正服务器时钟,定时与中国国家授时中心授时服务器同步 # crontab -e 加入一行: 1 */6 * * * ntpdate 210.72.145.44 > /dev/null 2>&1注:以上为公网条件下;若在内网则需要自己搭建时间同步服务器。7. 源码编译安装所需包 (Source) (1) GD2 # cd /usr/local/src # tar xzvf gd-2.0.34.tar.gz # cd gd-2.0.34 # ./configure --prefix=/usr/local/gd2 # make # make install (2) LibXML2 # cd /usr/local/src # tar zxvf libxml2-2.6.32.tar.gz # cd libxml2-2.6.32 # ./configure --prefix=/usr/local/libxml2 # make
  4. 4. # make install (3) LibMcrypt # cd /usr/local/src # tar xjvf libmcrypt-2.5.8.tar.bz2 # cd libmcrypt-2.5.8 # ./configure --prefix=/usr/local/libmcrypt # make # make install (4) Apache 日志截断程序 # cd /usr/local/src # tar xzvf cronolog-1.7.0-beta.tar.gz # cd cronolog-1.7.0-beta # ./configure --prefix=/usr/local/cronolog # make # make install8. 升级 OpenSSL 和 OpenSSH # cd /usr/local/src # tar zxvf openssl-0.9.8h.tar.gz # cd openssl-0.9.8h # ./config --prefix=/usr/local/openssl # make # make test # make install # cd .. # tar zxvf openssh-5.1p1.tar.gz # cd openssh-5.1p1 # ./configure "--prefix=/usr" "--with-pam" "--with-zlib" "--sysconfdir=/etc/ssh" "--with-ssl-dir=/usr/local/openssl" "--with-md5-passwords"
  5. 5. # make # make install ( 1)禁用 SSH V1 协议 vi /etc/ssh/sshd_config: #Protocol 2,1 改为: Protocol 2 ( 2)禁用服务器端 GSSAPI 找到以下两行,并将它们注释: GSSAPIAuthentication yes GSSAPICleanupCredentials yes ( 3)禁用 DNS 域名反解 找到: #UseDNS yes 改为: UseDNS no ( 4)禁用客户端 GSSAPI # vi /etc/ssh/ssh_config 找到: GSSAPIAuthentication yes 将这行注释掉。 最后,确认修改正确后重新启动 SSH 服务 # service sshd restart # ssh -v 确认 OpenSSH 以及 OpenSSL 版本正确。三、编译安装 L.A.M.P 环境1. 下载软件 # cd /usr/local/src
  6. 6. httpd-2.2.11.tar.gz mysql-5.1.34-linux-x86_64-icc-glibc23.tar.gz php-5.2.8.tar.bz2 eaccelerator-0.9.5.3.tar.bz2 memcache-2.2.3.tgz ZendOptimizer-3.3.3-linux-glibc23-x86_64.tar.gz2. 安装 MySQL # tar xzvf mysql-5.1.34-rc-linux-x86_64-icc-glibc23.tar.gz # mv mysql-5.1.34-rc-linux-x86_64-icc-glibc23 /usr/local/ # ln –s /usr/local/ mysql-5.1.34-rc-linux-x86_64-icc-glibc23 /usr/local/mysql # useradd mysql –s /sbin/nologin # chown -R mysql:root /usr/local/mysql/ # cd /usr/local/mysql # ./scripts/mysql_install_db --user=mysql # cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld # chown root:root /etc/rc.d/init.d/mysqld # chmod 755 /etc/rc.d/init.d/mysqld # chkconfig --add mysqld # chkconfig --level 3 mysqld on # cp ./support-files/my-huge.cnf /etc/my.cnf # mv /usr/local/mysql/data /data/mysql # chown -R mysql:mysql /data/mysql/ # vi /etc/my.cnf 修改以下内容: 在 [mysqld] 段 增 加 或 修 改 : datadir = /data/mysql skip-innodb wait-timeout = 5 max_connections = 512 max_connect_errors = 10000000 thread_concurrency = CPU 个 数 ×2 将 log-bin 注释(如果需要使用 mysql 的主从备份功能,需要 log- bin 参数打开,不能注释) # bin/mysqladmin -u root password password_for_root (注:password_for_root 为 mysql 的 root 帐户的密码,用户自行设定)
  7. 7. 针对大型用户 mysql 优化的参数设置 (供参考 ): [mysqld] port = 3306 socket = /tmp/mysql.sock datadir = /data/mysql skip-locking skip-name-resolve skip-innodb skip-symbolic-links local-infile=0 low_priority_updates=1 back_log = 300 key_buffer = 256M max_allowed_packet = 16M thread_stack = 128K table_cache = 1024 sort_buffer_size = 4M read_buffer_size = 256K join_buffer_size = 4M record_buffer = 2M read_rnd_buffer_size = 4M myisam_sort_buffer_size = 64M thread_cache_size = 64 query_cache_size = 32M tmp_table_size = 196M max_connections = 1600 max_connect_errors = 10000000000000 wait_timeout = 5 thread_concurrency=16 long_query_time = 1 log-slow-queries = /data/mysql/slow.log3. 编译安装 Apache # cd /usr/local/src # tar xjvf httpd-2.2.11.tar.bz2 # cd httpd-2.2.11 # ./configure
  8. 8. "--prefix=/usr/local/apache2" "--with-included-apr" "--enable-so" "--enable-deflate=shared" "--enable-expires=shared" "--enable-rewrite=shared" "--enable-static-support" "--disable-userdir" # make # make install # echo /usr/local/apache2/bin/apachectl start >> /etc/rc.local4. 编译安装 PHP 在编译安装 PHP 之前,我们首先关闭 selinux,以免编译时出现错误。 # vi /etc/selinux/config 找到:SELINUX=enforcing 改为:SELINUX=disabled # echo 0 > /selinux/enforce 开始安装编译 PHP: # cd /usr/local/src # tar xjvf php-5.2.8.tar.bz2 # cd php-5.2.8 #./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp --with-libxml-dir=/usr/local/libxml2 --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-curl --with-mcrypt=/usr/local/libmcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-sockets --enable-exif --enable-zend-multibyte --disable-ipv6--disable-cgi # make # make install # cp php.ini-dist /usr/local/php/etc/php.ini5. 安装 Eaccelerator
  9. 9. # cd /usr/local/src # tar jxvf eaccelerator-0.9.5.3.tar.bz2 # cd eaccelerator-0.9.5.3 # /usr/local/php/bin/phpize # ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config --with-eaccelerator-shared-memory --with-eaccelerator-sessions --with-eaccelerator-content-caching # make # make install # mkdir /usr/local/php/ext # cp modules/eaccelerator.so /usr/local/php/ext/ # 安装为 Zend 扩展 # vi /usr/local/php/etc/php.ini 插入 zend_extension="/usr/local/php/ext/eaccelerator.so" eaccelerator.shm_size="16" eaccelerator.cache_dir="/tmp/eaccelerator" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="0" eaccelerator.shm_prune_period="0" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9" # mkdir /tmp/eaccelerator # chmod 0777 /tmp/eaccelerator6. 安装 memcache 扩展 # cd /usr/local/src/ # tar zxvf memcache-2.2.3.tgz # cd memcache-2.2.3
  10. 10. # /usr/local/php/bin/phpize # ./configure --with-php-config=/usr/local/php/bin/php-config # make # make install # cp modules/memcache.so /usr/local/php/ext/7. 安装 Zend Optimizer # cd /usr/local/src # tar xzvf ZendOptimizer-3.3.3-linux-glibc23-x86_64.tar.gz # ./ ZendOptimizer-3.3.3-linux-glibc23-x86_64/install.sh 安装过程中需要指定 php.ini 的路径即/usr/local/php/etc 最后暂时先不要选择重启 Apache。8. 整合 Apache 与 PHP 修改 PHP 配置文件: # vi /usr/local/php/etc/php.ini 找到: extension_dir = "./" 改为: extension_dir = "/usr/local/php/ext" 找到: ;extension=php_zip.dll 在该行下添加 extension=memcache.so 修改完成后保存退出。 修改 Apache 配置文件: # vi /usr/local/apache2/conf/httpd.conf 找到: AddType application/x-gzip .gz .tgz 在该行下面添加 AddType application/x-httpd-php .php 找到: <IfModule dir_module> DirectoryIndex index.html </IfModule> 将该行改为
  11. 11. <IfModule dir_module> DirectoryIndex index.html index.htm index.php </IfModule> 找到: User daemon Group daemon改为:User www Group www 找到: <Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory>将其中的 Deny from all 改为 Allow from all 找到: #Include conf/extra/httpd-mpm.conf #Include conf/extra/httpd-info.conf #Include conf/extra/httpd-vhosts.conf #Include conf/extra/httpd-default.conf 去掉前面的“#”号,取消注释。 注意:以上 4 个扩展配置文件中的设置请按照相关原则进行合理配置! 修改完成后保存退出。 添加 www 用户,用来运行 Apache # useradd www 重启 Apache # /usr/local/apache2/bin/apachectl restart
  12. 12. 根据虚拟主机中网站路径的设置(例如 /data/www/wwwroot),测试是否配置成功 # cd /data/www/wwwroot # vi phpinfo.php <?php phpinfo ( ); ?> 退出并保存。 访问 http://IP 地址/phpinfo.php,检查 phpinfo 中的各项信息是否正确。 注:有时无法访问是因为系统开启了防火墙,建议关闭,设置自己的防火墙策略(例如“三 服务器安全设置”中的设置),或者使用硬件防火墙。9. 提升 PHP 安全性 在 php.ini 中进行设置提升 PHP 安全性。 # vi /etc/php.ini、 找到并修改以下几处设置为: upload_tmp_dir = /tmp expose_php = Off display_errors = Off disable_functions =phpinfo,putenv,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server10. 提升 Apache 安全性及优化
  13. 13.   进入 Apache 配置文件目录/usr/local/apache2/conf/extra  # cd /usr/local/apache2/conf/extra    编 译 部 分 配 置 文 件 :   # vi httpd-mpm.conf 找到并更更改以下内容: <IfModule mpm_prefork_module> ServerLimit 1024 StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 640 MaxRequestsPerChild 0 </IfModule>  注:添加 ServerLimit 这行参数,根据网站的访问量相应的调整 ServerLimit和 MaxClients 两项参数,MaxClients 值不能大于 ServerLimit 的值。  # vi httpd-default.conf  KeepAlive Off 注:此处默认为 Off,用户可根据前端负载均衡器的配置中是否保持会话连接来选择开启或关闭,建议一般用户设置为 Off  修改以下参数为:  ServerTokens Prod ServerSignature off 修改以上 PHP 与 Apache 相关设置后需要重启 Apache 服务器。三、服务器安全性设置1. 设置系统防火墙 # vi /usr/local/sbin/fw.sh
  14. 14. 将以下脚本命令粘贴到 fw.sh 文件中。#!/bin/bash# Stop iptables service firstservice iptables stop# Load FTP Kernel modules/sbin/modprobe ip_conntrack_ftp/sbin/modprobe ip_nat_ftp# Inital chains default policy/sbin/iptables -F -t filter/sbin/iptables -P INPUT DROP/sbin/iptables -P OUTPUT ACCEPT# Enable Native Network Transfer/sbin/iptables -A INPUT -i lo -j ACCEPT# Accept Established Connections/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT# ICMP Control/sbin/iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT# WWW Service/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT# FTP Service/sbin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT# SSH Service/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT # chmod 755 /usr/local/sbin/fw.sh # echo /usr/local/sbin/fw.sh >> /etc/rc.local # /usr/local/sbin/fw.sh

×