手机版
你好,游客 登录 注册
背景:
阅读新闻

CentOS 5.6+Nginx 1.0+PHP 5.3.6+MySQL 5.5.11构建LEMP(X64)平台

[日期:2011-07-05] 来源:51cto  作者:qunchaomin [字体: ]
  1. /usr/local/webserver/mysql/scripts/mysql_install_db --basedir=/usr/local/webserver/mysql --datadir=/data0/mysql/data --user=mysql 

一、获取相关开源程序

  1、本文基本以源码编译为主,首先需要安装基础编译环境所需要的软件和库。本文安装CentOS系统时只安装最基础的包(安装时软件套件选择时只选了Server一项),下面的所需要的包可根据自己系统环境情况自行调整。

  a)、通过CentOS光盘安装(以光盘作为Yum源)

  1. mkdir /media/CentOS/  
  2. mount /dev/cdrom /media/CentOS/  
  3.    
  4. yum -y --disablerepo=\* --enablerepo=c5-media install gcc gcc-c++ autoconf \  
  5. libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 \  
  6. libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 \  
  7. bzip2-devel  ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \  
  8. krb5 krb5-devel libidn libidn-devel openssl openssl-devel libtool  libtool-libs \  
  9. libevent-devel libevent openldap openldap-devel nss_ldap openldap-clients \  
  10. openldap-servers libtool-ltdl libtool-ltdl-devel bison 

b)、通过mirrors.163.com安装(以mirrors.163.com为Yum源)

 

  1. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup  
  2. wget http://mirrors.163.com/.help/CentOS5-Base-163.repo  
  3. yum makecache  
  4.    
  5. yum -y --enablerepo=c5-media install gcc gcc-c++ autoconf \  
  6. libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 \  
  7. libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 \  
  8. bzip2-devel  ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \  
  9. krb5 krb5-devel libidn libidn-devel openssl openssl-devel libtool  libtool-libs \  
  10. libevent-devel libevent openldap openldap-devel nss_ldap openldap-clients \  
  11. openldap-servers libtool-ltdl libtool-ltdl-devel bison 

2、下载最新的Nginx、Mysql、PHP程序及相关库的源码包 

  1. mkdir -p /data0/software  
  2. cd /data0/software  
  3.    
  4. wget http://nginx.org/download/nginx-1.0.0.tar.gz  
  5. wget http://cn.php.net/get/php-5.3.6.tar.gz/from/this/mirror  
  6. wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.11.tar.gz/from/http://mysql.ntu.edu.tw/  
  7. wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz  
  8. wget "http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0"  
  9. wget "http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz?modtime=1194463373&big_mirror=0"  
  10. wget http://pecl.php.net/get/memcache-2.2.6.tgz  
  11. wget "http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&big_mirror=0"  
  12. wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.12.tar.gz  
  13. wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2  
  14. wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz  
  15. wget ftp://gd.tuwien.ac.at/pub/graphics/ImageMagick/ImageMagick-6.6.9-5.tar.gz  
  16. wget http://pecl.php.net/get/imagick-3.0.0.tgz  
  17. wget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz 

二、安装MySQL 5.5.11

  1、首先安装CMAKE(Mysql5.5.11已经采用CMAKE编译) 

  1. tar zxvf cmake-2.8.4.tar.gz  
  2. cd cmake-2.8.4  
  3. ./configure --prefix=/usr  
  4. make  
  5. make install  
  6. cd .. 

2、安装MySQL 5.5.11

  a)新建一个用于运行MySQL的用户

 

  1. /usr/sbin/groupadd mysql  
  2. /usr/sbin/useradd -g mysql mysql   
  3.  

b)解包并编译安装MySQL

 

  1. tar xvf mysql-5.5.11.tar.gz   
  2. cd mysql-5.5.11  
  3.    
  4. cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql/ \  
  5. -DMYSQL_DATADIR=/data0/mysql/data \  
  6. -DMYSQL_UNIX_ADDR=/data0/mysql/mysqld.sock \  
  7. -DWITH_INNOBASE_STORAGE_ENGINE=1 \  
  8. -DWITH_MYISAM_STORAGE_ENGINE=1 \  
  9. -DENABLED_LOCAL_INFILE=1 \  
  10. -DMYSQL_TCP_PORT=3306 \  
  11. -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \  
  12. -DDEFAULT_CHARSET=utf8 \  
  13. -DDEFAULT_COLLATION=utf8_general_ci \  
  14. -DMYSQL_UNIX_ADDR=/data0/mysql/mysql.sock \  
  15. -DWITH_DEBUG=0 \  
  16. -DWITH_READLINE=1 \  
  17. -DWITH_SSL=yes \  
  18. -DSYSCONFDIR=/data0/mysql  
  19.    
  20. make  
  21. make install  
  22. cd .. 

c)将MySQL安装目录的权限赋予mysql用户

 

  1. chmod +w /usr/local/webserver/mysql  
  2. chown -R mysql:mysql /usr/local/webserver/mysql 

d)创建MySQL数据库存放目录

 

  1. mkdir -p /data0/mysql/data/  
  2. mkdir -p /data0/mysql/binlog/  
  3. mkdir -p /data0/mysql/relaylog/  
  4. chown -R mysql:mysql /data0/mysql/ 

e)以mysql用户帐号的身份建立数据表

 

  1. /usr/local/webserver/mysql/scripts/mysql_install_db --basedir=/usr/local/webserver/mysql --datadir=/data0/mysql/data --user=mysql 

f )创建my.cnf配置文件

 

  1. vi /data0/mysql/my.cnf  
  2.    
  3. [client]  
  4. default-character-set=utf8 
  5. port    = 3306 
  6. socket  = /tmp/mysql.sock  
  7.    
  8. [mysqld]  
  9. character-set-server = utf8 
  10. replicate-ignore-db = mysql 
  11. replicate-ignore-db = test 
  12. replicate-ignore-db = information_schema 
  13. user    = mysql 
  14. port    = 3306 
  15. socket  = /tmp/mysql.sock  
  16. basedir = /usr/local/webserver/mysql  
  17. datadir = /data0/mysql/data  
  18. log-error = /data0/mysql/mysql_error.log  
  19. pid-file = /data0/mysql/mysql.pid  
  20. open_files_limit    = 10240 
  21. back_log = 600 
  22. max_connections = 5000 
  23. max_connect_errors = 6000 
  24. table_cache = 614 
  25. external-locking = FALSE 
  26. max_allowed_packet = 32M 
  27. sort_buffer_size = 1M 
  28. join_buffer_size = 1M 
  29. thread_cache_size = 300 
  30. #thread_concurrency = 8 
  31. query_cache_size = 512M 
  32. query_cache_limit = 2M 
  33. query_cache_min_res_unit = 2k 
  34. default-storage-engine = MyISAM 
  35. thread_stack = 192K 
  36. transaction_isolation = READ-COMMITTED  
  37. tmp_table_size = 246M 
  38. max_heap_table_size = 246M 
  39. long_query_time = 3 
  40. log-slave-updates  
  41. log-bin = /data0/mysql/binlog/binlog  
  42. binlog_cache_size = 4M 
  43. binlog_format = MIXED 
  44. max_binlog_cache_size = 8M 
  45. max_binlog_size = 1G 
  46. relay-log-index = /data0/mysql/relaylog/relaylog  
  47. relay-log-info-file = /data0/mysql/relaylog/relaylog  
  48. relay-log = /data0/mysql/relaylog/relaylog  
  49. expire_logs_days = 30 
  50. key_buffer_size = 256M 
  51. read_buffer_size = 1M 
  52. read_rnd_buffer_size = 16M 
  53. bulk_insert_buffer_size = 64M 
  54. myisam_sort_buffer_size = 128M 
  55. myisam_max_sort_file_size = 10G 
  56. myisam_repair_threads = 1 
  57. myisam_recover  
  58.    
  59. interactive_timeout = 120 
  60. wait_timeout = 120 
  61.    
  62. skip-name-resolve  
  63. slave-skip-errors = 1032,1062,126,1114,1146,1048,1396  
  64.    
  65. server-id = 1 
  66.    
  67. innodb_additional_mem_pool_size = 16M 
  68. innodb_buffer_pool_size = 512M 
  69. innodb_data_file_path = ibdata1:256M:autoextend  
  70. innodb_file_io_threads = 4 
  71. innodb_thread_concurrency = 8 
  72. innodb_flush_log_at_trx_commit = 2 
  73. innodb_log_buffer_size = 16M 
  74. innodb_log_file_size = 128M 
  75. innodb_log_files_in_group = 3 
  76. innodb_max_dirty_pages_pct = 90 
  77. innodb_lock_wait_timeout = 120 
  78. innodb_file_per_table = 0 
  79.    
  80. log-slow-queries = /data0/mysql/slow.log  
  81. long_query_time = 10 
  82. log-queries-not-using-indexes  
  83.    
  84. [mysqldump]  
  85. quick  
  86. max_allowed_packet = 32M   
  87.  

g)创建管理MySQL数据库的shell脚本(注:此处操作有点疑问,需 /usr/local/webserver/mysql/bin/mysqld_safe 启动mysql后,才能对该shell脚本正常使用)

 

  1. vi /data0/mysql/mysql  
  2.    
  3. #!/bin/bash  
  4.    
  5. mysql_username="admin" 
  6. mysql_password="000000" 
  7.    
  8. function_start_mysql()  
  9. {  
  10.     printf "Starting MySQL...\n"  
  11.     /bin/sh /usr/local/webserver/mysql/bin/mysqld_safe --defaults-file=/data0/mysql/my.cnf 2>&1 > /dev/null &  
  12. }  
  13.    
  14. function_stop_mysql()  
  15. {  
  16.     printf "Stoping MySQL...\n"  
  17.     /usr/local/webserver/mysql/bin/mysqladmin -u ${mysql_username} -p${mysql_password} -S /tmp/mysql.sock shutdown  
  18. }  
  19.    
  20. function_restart_mysql()  
  21. {  
  22.     printf "Restarting MySQL...\n"  
  23.     function_stop_mysql  
  24.     sleep 5  
  25.     function_start_mysql  
  26. }  
  27.    
  28. function_kill_mysql()  
  29. {  
  30.     kill -9 $(ps -ef|grep 'bin/mysqld_safe'|grep -v 'grep'|awk '{printf $2}')  
  31.     kill -9 $(ps -ef|grep 'libexec/mysqld'|grep -v 'grep'|awk '{printf $2}')  
  32. }  
  33.    
  34. if [ "$1" = "start" ]; then  
  35.     function_start_mysql  
  36. elif [ "$1" = "stop" ]; then  
  37.     function_stop_mysql  
  38. elif [ "$1" = "restart" ]; then  
  39. function_restart_mysql  
  40. elif [ "$1" = "kill" ]; then  
  41. function_kill_mysql  
  42. else  
  43.     printf "Usage: /data0/mysql/mysql {start|stop|restart|kill}\n"  
  44. fi 

赋予shell脚本可执行权限

 

  1. chmod +x /data0/mysql/mysql   
  2.  

h)测试Mysql的启动的关闭

  启动MySQL

 

  1. /data0/mysql/mysql start   
  2.  

通过命令行登录管理MySQL服务器(提示输入密码时直接回车,缺省的Mysql的root用户无密码)

 

  1. /usr/local/webserver/mysql/bin/mysql -u root -p -S /tmp/mysql.sock 

创建一个具有root权限的用户:admin,密码是:000000(用于上面建的管理脚本中的mysqladmin)

 

  1. GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY '000000';  
  2. GRANT ALL PRIVILEGES ON *.* TO 'admin'@'127.0.0.1' IDENTIFIED BY '000000'; 

停止MySQL:

 

  1. /data0/mysql/mysql stop   
  2.  

g)、设置libmysqlclient的软链,防止编译其它依赖Mysql软件时出现libmysqlclient.so.18: cannot open shared object file 的错误

linux
相关资讯       CentOS 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款