天天看点

centos LAMP环境搭建

说明:

1.官网采用LAMP框架,nginx做前端轮询代理

2、移除系统自带的rpm包的http mysql php

yum remove httpd mysql mysql-server php php-cli php-common php-devel php-gd  -y

3 安装必备的开发包

/usr/bin/yum -y install ntp vim-enhanced gcc gcc-c++ flex bison autoconf automake bzip2-devel \

ncurses-devel zlib-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel libXpm-devel \

gettext-devel  pam-devel libtool libtool-ltdl openssl openssl-devel fontconfig-devel \

libxml2-devel curl-devel  libicu libicu-devel libmcrypt libmcrypt-devel libmhash  libxml2 \

libmhash-devel  mysql-devel   libxslt libxslt-devel curl tcl expect

4.同步系统时间:

vim /etc/ntp.conf

server 3.cn.pool.ntp.org

server 3.asia.pool.ntp.org

server 0.asia.pool.ntp.org

chkconfig ntpd on

service ntpd restart

5.IP分配

    nginx:192.168.201.4  192.168.201.5  192.168.201.6  192.168.201.7  

    apache:192.168.201.123---192.168.201.138

一.nginx搭建

1.下载源码包nginx-1.4.2

2.安装nginx

./configuer  --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module & make & make install

3.配置文件如下

user  nobody;

worker_processes  8;

pid               logs/nginx.pid;

events {

        use epoll;

        worker_connections  65535;

        }

http {

#       设置一个共享内存区域reqnum,以用于限制每个客户端IP可以并发连接的请求数

#        limit_conn_zone $binary_remote_addr zone=reqnum:10m;

#       每个客户端IP每分钟只允许5个连接

#        limit_req_zone $binary_remote_addr zone=reqone:10m rate=10r/m;

        include       mime.types;

        default_type  application/octet-stream;

        sendfile              on;  

        tcp_nopush            on;   

        tcp_nodelay           on; 

        keepalive_timeout     60; 

        server_tokens         off;

        log_format    wwwlog  '$remote_addr - $remote_user [$time_local] "$request" '              

                              '$status $body_bytes_sent "$http_referer" '             

                              '"$http_user_agent" $http_x_forwarded_for';    

        access_log    /usr/local/nginx/logs/access.log wwwlog;

        gzip                    on; 

        gzip_min_length         1k; 

        gzip_buffers            4 16k; 

        gzip_http_version       1.1; 

        gzip_comp_level         3; 

        gzip_types              text/plain application/x-javascript text/css applicati

on/xml; 

        gzip_vary on;

        server_names_hash_bucket_size   128;   

        client_header_buffer_size       32k;  

        client_max_body_size            300m; 

        client_body_buffer_size         512k; 

        large_client_header_buffers     4   32k;  

        proxy_connect_timeout           60; 

        proxy_send_timeout              120; 

        proxy_read_timeout              120; 

        proxy_buffer_size               16k; 

        proxy_buffers                   4   64k; 

        proxy_busy_buffers_size         128k; 

        proxy_temp_file_write_size      128k; 

        index           index.php  index.htm index.html default.php default.htm defaul

t.html index.php3;

upstream os_server {

#                       ip_hash;

#                       server 192.168.201.122:80 weight=1;

                        server 192.168.201.123:80 weight=1;

                        server 192.168.201.124:80 weight=1;

                        server 192.168.201.125:80 weight=1;

                        server 192.168.201.126:80 weight=1;

                        server 192.168.201.127:80 weight=1;

                        server 192.168.201.128:80 weight=1;

                        server 192.168.201.129:80 weight=1;

                        server 192.168.201.130:80 weight=1;

                        server 192.168.201.131:80 weight=1;

                        server 192.168.201.132:80 weight=1;

                        server 192.168.201.133:80 weight=1;

                        server 192.168.201.134:80 weight=1;

                        server 192.168.201.136:80 weight=1;

                        server 192.168.201.137:80 weight=1;

                        server 192.168.201.138:80 weight=1;

                                     }  

upstream m_server {

                        }

upstream weixin_server {

                        server 192.168.201.35:80 weight=1;

                        server 192.168.201.34:80 weight=1;

upstream op_server {    

#                       server 192.168.201.34:80 weight=1;

#---------------------------www.lqxshop.com-----------------------

server {

         listen 80;

         server_name    www.shop.com www.ilqx.cn www.chenggongfang.com wx.lqxshop.c

om;

         #限制每个连接的带宽大小

         #limit_rate 40k;

         #限制每个客户端ip在指定时间内容允许连接的请求数,且超过限制连接频率的连接数不

得超过burst指定

         #limit_req zone=reqone burst=50;

         #使用前面定义的共享内存区域,限制每个客户端IP并发连接的最大数

         #limit_conn    reqnum   20;

location / {

             proxy_set_header HTTP_REFERER  $http_referer;

             proxy_pass http://os_server;

             proxy_set_header Host   $host;

             proxy_set_header X-Real-IP      $remote_addr;

             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

             index  index.html index.php index.htm index.jsp;

           }

}

#--------------------------------m.lqxshop.com----------------------

         server_name    m.shop.com m1.shop.com m2.shop.com;

             proxy_pass http://m_server;

             index  index.html index.htm index.jsp;

  }

#--------------------------------weixin.lqxshop.com----------------------

          #限制每个连接的带宽大小

          #limit_rate 40k;

          #限制每个客户端ip在指定时间内容允许连接的请求数,且超过限制连接频率的连接数

          #limit_req zone=reqone burst=50;

          #使用前面定义的共享内存区域,限制每个客户端IP并发连接的最大数

         server_name    weixin.shop.com;

             proxy_pass http://weixin_server;

#--------------------------------op.lqxshop.com----------------------

         #limit_rate 30k;

           #使用前面定义的共享内存区域,限制每个客户端IP并发连接的最大数

         server_name    op.shop.com;

             proxy_pass http://op_server;

二.APP(Apache+php)搭建

1、移除系统自带的rpm包的http mysql php

2 安装必备的开发包

3.同步系统时间:

4.安装Apache:

##############安装需要的插件:apr、apr-util、pcre、libmcrypt######################################

cd /usr/local/src/

cd apr-1.4.8################(rm: cannot remove `libtoolT': No such file or directory///////修改configure文件,+++++把RM='$RM'改为RM='$RM  -f'+++++)

./configure --prefix=/usr/local/apr && make && make install

cd ../apr-util-1.5.2/

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ && make && make install

cd ../pcre-8.33/

./configure --prefix=/usr/local/pcre --enable-utf8 && make && make install

cd ../libmcrypt-2.5.8/

./configure --prefix=/usr/local/libmcrypt && make && make install

###################开始安装Apache,并修改开启启动##################################################

cd ../httpd-2.4.6/

./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-mods-shared=most --with-mpm=worker --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre/

make && make install 

/usr/local/apache/bin/apachectl start

cp /usr/local/apache/bin/apachectl  /etc/init.d/httpd

vim /etc/init.d/httpd(第二行添加注释信息,添加为系统服务)

# chkconfig: 35 61 61

# description: Apache

chkconfig --add httpd

chkconfig httpd on

5.安装php:

cd ../php-5.5.3/

./configure --prefix=/usr/local/php --mandir=/usr/local/share/man --infodir=/usr/local/share/info --with-apxs2=/usr/local/apache/bin/apxs --enable-cgi --with-mysql --with-config-file-path=/usr/local/php/etc --with-pdo-mysql --with-mysqli --enable-zip  -enable-sockets --enable-soap --enable-pcntl --enable-mbstring --enable-intl --enable-calendar --enable-bcmath --enable-exif --with-mcrypt --with-mhash --with-gd --with-png-dir --with-jpeg-dir --with-freetype-dir --with-libxml-dir --with-curl --with-zlib   --with-openssl --with-kerberos=shared --with-gettext=shared --with-xmlrpc=shared --with-mcrypt=/usr/local/libmcrypt 

make && make install

装载XXX模块 

cd /usr/local/httpd-2.2.22/modules/generators/

/usr/local/apache/bin/apxs -i -a -c mod_cgi.c

6.apache和php结合:

vim /usr/local/apache/conf/httpd.conf

查找AddType application/x-gzip .gz .tgz,在该行下面添加

AddType application/x-httpd-php .php

查找DirectoryIndex index.html 把该行修改成

DirectoryIndex index.html index.htm index.php

测试apache和php是否整合成功,下面我们测试apache和php是否整合成功,在apache文档跟目录下新建一个小小的php程序

cd /usr/local/apache/htdocs

vi index.php  //在index.php文件中写入下面三行

<?php

phpinfo();

?>

重启apache服务

/sbin/service  httpd restart

访问,在浏览器中输入http://localhost(ip地址)/index.php 出现php信息界面则说明整合成功

elinks http://localhost/index.php

成功的页面

三.mysql搭建

10    11

软件源代码包存放位置               /opt

软件解压位置   /usr/local/src

源码包编译安装位置(prefix)         /usr/local/

脚本以及维护程序存放位置           /script

数据库文件位置:           /data/mysql/

数据库日志位置:   /data/log

数据库备份目录:   /data/backup

1.卸载默认的mysql及apache的rpm包

yum install ntp

service ntpd stop

ntpdate cn.pool.ntp.org

service ntpd start

chkconfig --level 2345 ntpd on

2.安装依赖包

yum install gcc gcc-c++ make cmake ncurses-devel vim -y

cd /opt

 tar zxvf cmake-2.8.5.tar.gz -C /usr/local/src

 cd /usr/local/src

cd cmake-2.8.5/

./configure

3.编译安装mysql

tar zxvf mysql-5.5.23.tar.gz -C /usr/local/src/

cd /usr/local/src/mysql-5.5.23

     cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

         -DMYSQL_DATADIR=/data/mysql \

         -DWITH_MYISAM_STORAGE_ENGINE=1 \

         -DWITH_INNOBASE_STORAGE_ENGINE=1 \

         -DWITH_ARCHIVE_STORAGE_ENGINE=1 \

         -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

         -DENABLED_LOCAL_INFILE=1 \

         -DDEFAULT_CHARSET=utf8 \

         -DDEFAULT_COLLATION=utf8_general_ci \

         -DEXTRA_CHARSETS=all  

  make && make install

groupadd -r -g 3306 mysql

useradd -u 3306 -g mysql -r -M -s /sbin/nologin mysql

mkdir -p /data/mysql/

mkdir -p /data/log/

chown -R mysql:mysql /data/

chown -R mysql:mysql /usr/local/mysql/*

cp support-files/my-huge.cnf /etc/my.cnf 

4.初始化

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql &   //初始化数据库

5.启动项

cp support-files/mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

/chkconfig --add mysqld

chkconfig  --level 2345 mysqld on

service  mysqld start

netstat -tnlp |grep 3306

6.相关命令

# cd /usr/local/bin //进入用户的默认搜索路径下建立mysql命令的软连接,可以直接执行mysql命令

 #  ln -s /usr/local/mysql/bin/mysql mysql

 #  ln -s /usr/local/mysql/bin/mysqldump mysqldump

 #  ln -s /usr/local/mysql/bin/mysqladmin  mysqladmin

 #  ln -s /usr/local/mysql/bin/mysqlbinlog

vim /etc/my.cnf  ,在[mysqld]配置参数下面添加下面几行(大概37行下面),根据服务

skip-external-locking

key_buffer_size = 256M

max_allowed_packet = 500M

table_open_cache = 2048

sort_buffer_size = 8M

read_buffer_size = 4M

read_rnd_buffer_size = 16M

myisam_sort_buffer_size = 128M

###添加

log-error=/data/log/mysql.err.log 

skip-name-resolv 

max_connections = 3000

max_connect_errors = 2000

slow_query_log

long_query_time = 2

slow_query_log_file = /data/log/slow.log 

bulk_insert_buffer_size = 64M

query_cache_type = 1

query_cache_size =256M

query_cache_limit = 4M

ft_min_word_len = 2

join_buffer_size = 16M

innodb_file_per_table  

log-bin-trust-function-creators=1

myisam_repair_threads = 1

innodb_log_files_in_group = 3

thread_cache_size = 8

# Try number of CPU's*2 for thread_concurrency

thread_concurrency = 8

innodb_buffer_pool_size = 2G //修改这个参数为物理内存的80%

:wq //保存退出

rm -rvf  /data/mysql/ib* myslq-bin* //删除原来的默认文件

service mysqld restart

mysql -u root

Mysql> grant all privileges on *.* to lqx@'%' identified by 'shlqx1!';

Mysql>flush privileges;

     本文转自yzy121403725 51CTO博客,原文链接:http://blog.51cto.com/lookingdream/1861511,如需转载请自行联系原作者