• LAMP搭建


    安装步骤
    1.配置前的包准备工作
    2.安装apache
    3.安装myql
    4.安装php
    5.安装redis
    6.安装memcached
    7.安装PHP扩展

    8.验证

    1、配置前的包准备工作
    yum install -y wget gcc openssl gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers gd-devel pcre-devel pcre bison flex

    2、安装apache:
    mkdir -p /newdisk/software
    cd /newdisk/software
    wget http://mirror.esocc.com/apache//apr/apr-1.5.2.tar.gz
    wget http://mirror.esocc.com/apache//apr/apr-util-1.5.4.tar.gz
    tar -xzvf apr-1.5.2.tar.gz
    tar -xzvf apr-util-1.5.4.tar.gz
    wget http://archive.apache.org/dist/httpd/httpd-2.4.16.tar.gz
    tar -xzvf httpd-2.4.16.tar.gz
    cp -rf apr-1.5.2 /newdisk/software/httpd-2.4.16/srclib/apr/
    cp -rf apr-util-1.5.4 /newdisk/software/httpd-2.4.16/srclib/apr-util

    /usr/sbin/groupadd www
    /usr/sbin/useradd -r -g www www
    cd httpd-2.4.16
    ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd --with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared --enable-static-support --enable-ssl=shared
    make
    make install

    #验证配置文件正确性
    /usr/local/apache2/bin/apachectl -t
    /usr/local/apache2/bin/apachectl start

    #添加apache服务自启动:
    echo "/usr/local/apache2/bin/apachectl start">>/etc/rc.d/rc.local

    3、安装mysql:
    yum install libaio cmake ncurses-devel -y
    cd /newdisk/software
    wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.13.tar.gz/from/http://cdn.mysql.com/

    tar xzf mysql-5.6.13.tar.gz

    cd mysql-5.6.13

    /usr/sbin/groupadd mysql
    /usr/sbin/useradd -g mysql mysql

    ln -s /usr/local/mysql/lib/libmysqlclient.so.18.1.0 /usr/lib64/libmysqlclient.so.18
    ln -s /usr/local/mysql/lib/libmysqlclient.so.18.1.0 /usr/lib/libmysqlclient.so.18
    ln -s /usr/local/mysql/lib/libmysqlclient.so.18.1.0 /usr/local/lib64/libmysqlclient.so.18
    ln -s /usr/local/mysql/lib/libmysqlclient.so.18.1.0 /usr/local/lib/libmysqlclient.so.18

    /usr/bin/cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=0 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_USER=mysql -DINSTALL_LAYOUT=STANDALONE -DENABLED_PROFILING=ON -DMYSQL_MAINTAINER_MODE=OFF -DWITH_DEBUG=OFF

    make

    make install

    chmod a+w /usr/local/mysql
    chown -R mysql:mysql /usr/local/mysql
    mkdir -p /newdisk/data/mysql/data

    chown -R mysql:mysql /newdisk/data/mysql/
    cp ./support-files/my-default.cnf /newdisk/data/mysql/my.cnf
    echo ''>/newdisk/data/mysql/my.cnf
    chmod a+w /var/run

    vi /newdisk/data/mysql/my.cnf

    [client]
    port = 3306
    socket = /tmp/mysql.sock
    character-set-server = utf8
    [mysqld]
    character-set-server = utf8
    collation-server = utf8_general_ci
    replicate-ignore-db = mysql
    replicate-ignore-db = test
    replicate-ignore-db = information_schema
    user = mysql
    port = 3307
    socket = /tmp/mysql.sock
    basedir = /usr/local/mysql
    datadir = /newdisk/data/mysql/data
    log-error = /newdisk/data/mysql/error.log
    pid-file = /var/run/mysql.pid
    local-infile = 0
    open_files_limit = 10240
    back_log = 1500
    max_connections = 4000
    max_connect_errors = 6000
    skip-external-locking
    max_allowed_packet = 32M
    thread_cache_size = 300
    query_cache_size = 512M
    query_cache_limit = 2M
    query_cache_min_res_unit = 2k
    default-storage-engine = MyISAM
    thread_stack = 256K
    transaction_isolation = READ-COMMITTED
    tmp_table_size = 256M
    max_heap_table_size = 256M
    net_buffer_length = 8K
    key_buffer_size = 200M
    low_priority_updates = 1
    read_buffer_size = 4M
    read_rnd_buffer_size = 16M
    bulk_insert_buffer_size = 64M
    myisam_sort_buffer_size = 128M
    myisam_max_sort_file_size = 10G
    myisam_repair_threads = 1
    myisam-recover-options
    interactive_timeout = 120
    wait_timeout = 120
    skip-name-resolve
    expire_logs_days = 30
    innodb_data_file_path = ibdata1:256M:autoextend
    innodb_lock_wait_timeout = 120
    explicit_defaults_for_timestamp=true
    innodb_force_recovery = 1 # files
    innodb_file_per_table
    innodb_log_file_size = 200M
    innodb_log_files_in_group = 3
    innodb_open_files = 4000
    table_open_cache = 8000
    table_open_cache_instances = 8

    #buffers
    innodb_buffer_pool_size = 100M
    innodb_buffer_pool_instances = 24
    innodb_log_buffer_size = 64M
    sort_buffer_size = 6M
    join_buffer_size = 8M

    #tune
    innodb_checksums = 0
    innodb_doublewrite = 0
    innodb_support_xa = 0
    innodb_thread_concurrency = 0
    innodb_flush_log_at_trx_commit = 2
    innodb_flush_method = O_DIRECT
    innodb_max_dirty_pages_pct = 50
    innodb_use_native_aio =1
    innodb_stats_persistent = 1
    innodb_spin_wait_delay = 6

    #performance special
    innodb_adaptive_flushing = 1
    innodb_flush_neighbors = 0
    innodb_read_io_threads = 16
    innodb_write_io_threads = 4
    innodb_io_capacity = 2000
    innodb_purge_threads = 1
    innodb_adaptive_hash_index = 1

    [mysqldump]
    quick
    max_allowed_packet = 32M
    [mysql]
    no-auto-rehash
    [myisamchk]
    key_buffer_size = 20M
    sort_buffer_size = 20M
    read_buffer = 2M
    write_buffer = 2M
    [mysqlhotcopy]
    interactive-timeout

    初始化DB:
    /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/newdisk/data/mysql/data --user=mysql --defaults-file=/newdisk/data/mysql/my.cnf

    启动DB:
    /usr/local/mysql/bin/mysqld_safe --defaults-file=/newdisk/data/mysql/my.cnf &

    更改数据库密码:
    /usr/local/mysql/bin/mysqladmin -uroot password 'aA123456'
    登录测试数据库,输入密码登录数据库,退出输入exit或者q:
    /usr/local/mysql/bin/mysql -uroot -p

    创建数据库启动文件:
    touch /etc/init.d/mysqld
    chmod +x /etc/init.d/mysqld
    vi /etc/init.d/mysqld
    #!/bin/sh
    #chkconfig: 345 90 90
    #description: MySQL version 5.6.13 listens on port 3307

    mysql_port=3307
    mysql_username="root"
    mysql_password="aA123456"
    function_start_mysql() { printf "Starting MySQL... "
    /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/newdisk/data/mysql/my.cnf 2>&1 > /dev/null &
    }
    function_stop_mysql() {
    printf "Stoping MySQL... "
    /usr/local/mysql/bin/mysqladmin -u ${mysql_username} -p${mysql_password} shutdown
    }
    function_restart_mysql() {
    printf "Restarting MySQL... "
    function_stop_mysql
    sleep 5
    function_start_mysql
    }
    function_kill_mysql() {
    kill -9 $(ps -ef | grep 'bin/mysqld_safe' | grep ${mysql_port} | awk '{printf $2}')
    kill -9 $(ps -ef | grep 'libexec/mysqld' | grep ${mysql_port} | awk '{printf $2}')
    }
    if [ "$1" = "start" ]; then
    function_start_mysql
    elif [ "$1" = "stop" ]; then
    function_stop_mysql
    elif [ "$1" = "restart" ]; then
    function_restart_mysql
    elif [ "$1" = "kill" ]; then
    function_kill_mysql
    else
    printf "Usage: /etc/init.d/mysqld-${mysql_port} {start|stop|restart|kill} "
    fi

    开启自启动数据库服务:
    chkconfig --add /etc/init.d/mysqld

    4、安装php:
    yum install libicu php-mcrypt libmcrypt libmcrypt-devel mhash-devel libicu-devel -y
    cd /newdisk/software
    wget http://museum.php.net/php5/php-5.4.33.tar.gz
    tar xzf php-5.4.33.tar.gz
    cd php-5.4.33
    cp -frp /usr/lib64/libjpeg.* /usr/lib/
    cp -frp /usr/lib64/libpng* /usr/lib/
    ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/etc/php --with-freetype-dir --with-gd --with-jpeg-dir --with-png-dir --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-zlib --with-curl --with-curlwrappers --enable-intl --with-icu-dir=/usr --with-libxml-dir --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --with-mcrypt --enable-mbregex --with-openssl --enable-soap --enable-gd-native-ttf --enable-ftp --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --with-mhash --enable-calendar --with-bz2 --with-gettext --enable-wddx --enable-mbstring=all
    make
    make test
    make install

    mkdir -p /etc/php
    cp php.ini-development /etc/php/php.ini
    vi /etc/php/php.ini
    #更改不显示错误
    display_errors = Off

    5、安装radis服务器:
    cd /newdisk/software
    wget http://download.redis.io/releases/redis-2.6.17.tar.gz
    tar -xzvf redis-2.6.17.tar.gz
    cp -rf redis-2.6.17 /usr/local/redis
    cd /usr/local/redis
    make
    make test
    make install

    安装过程中如果出现以下错误:

    make1: Entering directory `/usr/local/redis/src'
    You need tcl 8.5 or newer in order to run the Redis test
    make1: * [test] Error 1 make1: Leaving directory `/usr/local/redis/src' make: * [test] Error 2

    解决办法如下:
    cd /newdisk/software
    wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
    tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/
    cd /usr/local/tcl8.6.1/unix/
    ./configure
    make
    make install

    解决之后再次进入
    cd /usr/local/redis
    make clean
    make
    make test
    make install

    mkdir -p /usr/local/redis/bin
    mkdir -p /usr/local/redis/etc
    mkdir -p /usr/local/redis/var
    cd src/
    cp redis-server redis-cli redis-benchmark redis-sentinel /usr/local/redis/bin/
    cp ../redis.conf /usr/local/redis/etc/

    启动radis服务:

    /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf &

    添加到开机启动:

    echo "/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf &">>/etc/rc.d/rc.local

    验证radis服务器是否安装,查看6379端口是否开放:
    netstat -antupl|grep '6379'

    6、安装memcached服务器:
    6.1、安装libevent:
    cd /newdisk/software
    wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
    tar -xzvf libevent-1.4.13-stable.tar.gz
    cd libevent-1.4.13-stable
    ./configure --prefix=/usr/local/libevent
    make
    make install

    6.2、安装libmemcached:
    cd /newdisk/software
    wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
    tar -xzvf libmemcached-1.0.18.tar.gz
    cd libmemcached-1.0.18
    ./configure --prefix=/usr/local/libmemcached
    make
    make install

    6.3、安装memcached服务器:
    cd /newdisk/software
    tar -xzvf memcached-1.4.15.tar.gz
    cd memcached-1.4.15
    ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/
    make
    make install

    开启memcached:

    /usr/local/memcached/bin/memcached -d -m 10 -p 12000 -u root -c 256

    添加到开机启动:
    echo "/usr/local/memcached/bin/memcached -d -m 10 -p 12000 -u root -c 256">>/etc/rc.d/rc.local

    验证memcached服务器是否安装成功,查看12000端口是否开放:
    netstat -antupl|grep '12000'

    7、安装PHP扩展:

    7.1、安装memcached扩展:
    cd /newdisk/software
    wget http://pecl.php.net/get/memcached-2.1.0.tgz
    tar xzf memcached-2.1.0.tgz
    cd memcached-2.1.0
    /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config -with-libmemcached-dir=/usr/local/libmemcached/
    make
    make install

    7.2、安装radis扩展:
    cd /newdisk/software
    wget http://pecl.php.net/get/redis-2.2.3.tgz
    tar xzf redis-2.2.3.tgz
    cd redis-2.2.3
    /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php//bin/php-config
    make
    make test
    make install

    7.3、安装APC扩展
    cd /newdisk/software
    wget http://pecl.php.net/get/APC-3.1.13.tgz
    tar xzf APC-3.1.13.tgz
    cd APC-3.1.13
    /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make
    make test
    make install

    7.4、安装memcache扩展
    cd /newdisk/software
    wget http://pecl.php.net/get/memcache-2.2.7.tgz
    tar xzf memcache-2.2.7.tgz
    cd memcache-2.2.7
    /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make
    make test
    make install

    7.5、安装markdown扩展
    cd /newdisk/software
    wget http://pecl.php.net/get/markdown-1.0.0.tgz
    tar xzf markdown-1.0.0.tgz
    cd markdown-1.0.0
    /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make
    make install

    7.6、安装sphinx扩展
    cd /newdisk/software
    yum install libtool -y wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz
    tar zxvf coreseek-4.1-beta.tar.gz
    cd coreseek-4.1-beta
    cd csft-4.1/api
    cd libsphinxclient/
    sh -x buildconf.sh

    如果出现这样的错误:
    configure.in:20: error: possibly undefined macro: AC_PROG_LD
    If this token and others are legitimate, please use m4_pattern_allow.
    See the Autoconf documentation.
    configure.in:26: error: possibly undefined macro: AM_PROG_LIBTOOL
    rebuilding sphinxclient_config.h.in
    rebuilding Makefile.in files

    解决办法:
    cp -R /usr/share/aclocal/ /usr/share/aclocal-1.11/*

    ./configure
    make
    make install

    cd /newdisk/software
    wget http://pecl.php.net/get/sphinx-1.3.2.tgz
    tar xzvf sphinx-1.3.0.tgz
    cd sphinx-1.3.0
    /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make
    make test
    make install

    7.8、php主配置文件中加入扩展:

    vi /etc/php/php.ini

    找到这行:

    extension_dir = "./"

    修改为:

    extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"

    新增以下行:

    extension=redis.so
    extension=memcached.so extension=apc.so
    extension=discount.so
    extension=memcache.so

    8、验证

    编辑Apache配置文件:

    vi /etc/httpd/httpd.conf

    添加下面这行内容:

    Addtype application/x-httpd-php .php .php5 .phtml

    找到此行,加入index.php:

    DirectoryIndex index.php index.html

    重启apache,测试是否php文件能够正确解析:

    /usr/local/apache2/bin/apachectl restart

    在/usr/local/apache2/htdocs文件夹下新增一个php文件。

    echo "<?php echo 'Hello World'?>" > index.php

    输入地址http://IP地址,测试,如果能正确输出Hello World,说明能够正确解析php文件了。

  • 相关阅读:
    谈谈焦虑
    Bridge
    Abstract Factory
    开篇辞
    缓存穿透和缓存雪崩
    缓存与数据库的一致性思考
    GDB
    代码格式化
    CSMA/CA协议
    18年秋招(19届)复习指导+面经总结,手把手教你进大厂——阿里、网易、京东、多益等
  • 原文地址:https://www.cnblogs.com/luckyjinping/p/4763307.html
Copyright © 2020-2023  润新知