Virtualbox搭建LNMP-2

源码安装lnmp

第一步:安装MySQL

1  创建组和用户:

groupadd  mysql  
useradd  -g  mysql  mysql  -s  /sbin/nologin

2  创建数据库安装目录:

mkdir  -p  /usr/local/mysql

3  创建数据库配置文件存放目录:

mkdir -p /etc/mysql

4  创建数据库存放目录

mkdir  -p  /data/mysql  
chown  -R  mysql:mysql  /data/mysql

5  数据库安装

#安装cmake,cmake用于安装MySQL,可以使用yum -y install cmake,或从源文件安装如下 
mkdir -p /usr/local/cmake  
tar zxpvf cmake-2.8.9.tar.gz  
cd cmake-2.8.9  
./configure --prefix=/usr/local/cmake  
make  
make install
#在文件/etc/profile尾部加入下列行    
#export PATH=$PATH:/usr/local/cmake/bin   
echo "export PATH=$PATH:/usr/local/cmake/bin" >> /etc/profile  
source /etc/profile # 或者 . /etc/profile
tar  zxpvf  mysql-5.5.27.tar.gz  
cd  mysql-5.5.27  
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql   
-DSYSCONFDIR=/etc/mysql   
-DMYSQL_DATADIR=/data/mysql   
-DMYSQL_TCP_PORT=3306   
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock   
-DMYSQL_USER=mysql   
-DDEFAULT_CHARSET=utf8   
-DDEFAULT_COLLATION=utf8_general_ci   
-DEXTRA_CHARSETS=all   
-DWITH_READLINE=1   
-DWITH_SSL=system   
-DWITH_EMBEDDED_SERVER=1   
-DENABLED_LOCAL_INFILE=1   
-DWITH_INNOBASE_STORAGE_ENGINE=1   
-DWITHOUT_PARTITION_STORAGE_ENGINE=1  
make  
make install

6  配置数据库

cd  /usr/local/mysql  
cp ./support-files/my-huge.cnf  /etc/mysql/my.cnf  
#修改/etc/mysql/my.cnf文件,将下列行添加到[mysqld]部分  
vi /etc/mysql/my.cnf  
datadir = /data/mysql

7  生成mysql系统数据库

scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

 

8  把MySQL加入系统开机启动

cp  ./support-files/mysql.server  /etc/rc.d/init.d/mysqld  
chkconfig  mysqld  on  
#启动mysql  
service  mysqld start

9  把MySQL可执行文件加入系统变量,把MySQL库文件连接到系统默认位置

#在文件/etc/profile尾部加入下列行  
#export  PATH=$PATH:/usr/local/mysql/bin  
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile  
source /etc/profile #或 . /etc/profie

可采用下列两种方式之一把MySQL库连接到系统默认位置(安装php时会用到libmysqlclient库):

(1)

ln  -s  /usr/local/mysql/lib/libmysqlclient.so.*  /usr/lib

(2)

vi /etc/ld.so.conf  
#把下面一行加入/etc/ld.so.conf文件尾部  
/usr/local/mysql/lib  
ldconfig    
# 使用ldconfig -p查看设置结果  
ldconfig -p | less

10  创建具有root权限的用户(user)和密码(123456789)

mysql -u root -p -S /tmp/mysql.sock # (提示输入密码是直接回车)  
GRANT  ALL  PRIVILEGES  ON  *.*  TO  'user'@'localhost'   IDENTIFIED  BY  '123456789';  
GRANT  ALL  PRIVILEGES  ON  *.*  TO  'user'@'127.0.0.1'  IDENTIFIED  BY  '123456789';

11  为root用户设置初始密码

mysqladmin -u root  password  'new password'

12  删除空密码账号

#以根用户登陆  
mysql -u root -p  
USE mysql  
SELECT host,  user,  password  FROM user;  
DELETE FROM user WHERE password="";  
FLUSH privileges;

第二步:PHP和扩展模块的安装与配置

1  安装PHP依赖库

(1)安装  libiconv:

tar  zxpvf  libiconv-1.14.tar.gz  
cd  libiconv-1.14  
./configure  --prefix=/usr/local  
make  
make  install

(2)安装  libmcrypt

tar  zxpvf  libmcrypt-2.5.8.tar.gz  
cd  libmcrypt-2.5.8  
./configure  
make  
make   install  
ldconfig  
cd  libltdl  
./configure  --enable-ltdl-install  
make  
make  install

(3)安装  mhash

tar  zxpvf  mhash-0.9.9.9.tar.gz  
cd  mhash-0.9.9.9  
./configure  
make  
make  install  
ln  -s  /usr/local/lib/libmcrypt.*  /usr/lib  
ln  -s  /usr/local/lib/libmhash.*   /usr/lib

(4)安装  mcrypt

tar zxpvf mcrypt-2.6.8.tar.gz  
cd  mcrypt-2.6.8  
ldconfig  
./configure  
make  
make  install

2  安装PHP

mkdir -p /usr/local/php  
tar  zxpvf  php-5.4.6.tar.gz  
cd  php-5.4.6  
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc   
--with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock   
--with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir   
--with-zlib --with-libxml-dir=/usr --enable-xml   
--disable-rpath --enable-bcmath --enable-shmop   
--enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers   
--enable-mbregex --enable-fpm   
--enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --enable-ftp --with-openssl   
-with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl   
--with-xmlrpc --enable-zip --enable-soap --without-pear   
--with-gettext --enable-session  
  
make ZEND_EXTRA_LIBS='-liconv'  
make install  

cp php.ini-production /usr/local/php/etc/php.ini  
#将php可执行文件路径添加到系统路径  
  
echo "export PATH=$PATH:/usr/local/php/bin:/usr/local/php/sbin" >> /etc/profile  
  
source /etc/profile

3  安装PHP扩展模块

(1)安装  memcached

#安装memcached依赖包libevent  
tar  zxpvf  libevent-2.0.19-stable.tar.gz  
cd libevent-2.0.19-stable  
./configure  --prefix=/usr/local/libevent  
make  
make install 

#安装  memcached  
tar zxpvf memcached-1.4.14.tar.gz  
cd  memcached-1.4.14  
./configure  --with-libevent=/usr/local/libevent  
make  
make install 

#安装PHP的memcache扩展  
tar  zxpvf  memcache-3.0.6.tgz  
cd  memcache-3.0.6  
phpize  
./configure  --enable-memcache  --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir  
make  
make install

(2)安装  eaccelerator

tar zxpvf eaccelerator-eaccelerator-42067ac.tar.gz  
cd eaccelerator-eaccelerator  
phpize  
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config  
make  
make install

(3)安装  PDO_MYSQL

tar  zxpvf  PDO_MYSQL-1.0.2.tgz  
cd  PDO_MYSQL-1.0.2  
phpize  
ln -s /usr/local/mysql/include/* /usr/local/include/  
./configure  --with-php-config=/usr/local/php/bin/php-config  --with-pdo-mysql=/usr/local/mysql  
make  
make install

(4)安装  ImageMagick

tar  zxpvf  ImageMagick-6.7.9.0.tar.gz  
cd  ImageMagick-6.7.9.0  
./configure  
make  
make  install

(5)安装  imagick

tar  zxpvf  imagick-3.1.0RC2.tgz  
cd  imagick-3.1.0RC2  
phpize  
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig # MagickWand.pc所在库目录,可以在/usr目录下使用find -name "MagickWand.pc"查找该路径  
./configure  --with-php-config=/usr/local/php/bin/php-config  
make  
make install

4  配置PHP扩展模块

(1)修改php.ini文件

当前所有扩展模块都存放在目录:/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525

#修改extension_dir = "./"  
vi  /usr/local/php/etc/php.ini  
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/"  
#添加下列行  
extension = "memcache.so"  
extension = "pdo_mysql.so"  
extension = "imagick.so"  
#修改output_buffering  
output_buffering = on

(2)配置 eAccelerator 加速PHP

mkdir -p /usr/local/eaccelerator_cache  
vi /usr/local/php/etc/php.ini  
#将下列几行加入文件php.ini尾部  
[eaccelerator]  
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/eaccelerator.so"  
eaccelerator.shm_size="64"  
eaccelerator.cache_dir="/usr/local/eaccelerator_cache"  
eaccelerator.enable="1"  
eaccelerator.optimizer="1"  
eaccelerator.check_mtime="1"  
eaccelerator.debug="0"  
eaccelerator.filter=""  
eaccelerator.shm_max="0"  
eaccelerator.shm_ttl="3600"  
eaccelerator.shm_prune_period="3600"  
eaccelerator.shm_only="0"  
eaccelerator.compress="1"  
eaccelerator.compress_level="9"

(3)配置php-fpm

mv  /usr/local/php/etc/php-fpm.conf.default  /usr/local/php/etc/php-fpm.conf  
vi  /usr/local/php/etc/php-fpm.conf

修改php-fpm配置参数:[global]  [www]

[global]  
pid = run/php-fpm.pid  
  
[www]  
user  = www  
group = www  
pm.max_children = 128  
pm.start_servers = 20  
pm.min_spare_servers = 5  
pm.max_spare_servers = 35  
pm.max_requests = 5000 
#设置php-fpm开机自启动  
#回到php源文件目录  
cd /usr/local/src/php-5.4.6  
cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm  
chmod +x /etc/rc.d/init.d/php-fpm  
chkconfig php-fpm on  
#为Nginx创建用户组和用户名  
groupadd www  
useradd -g www www -s /sbin/nologin  
  
service php-fpm start

第三步:Nginx安装及配置

1  安装依赖库

mkdir  /usr/local/pcre  
tar zxpvf  pcre-8.31.tar.gz  
cd pcre-8.31  
./configure --prefix=/usr/local/pcre  
make  
make install

2  安装Nignx

tar zxpvf nginx-1.2.3.tar.gz  
cd nginx-1.2.3  
./configure --user=www --group=www --prefix=/usr/local/nginx   
--with-http_stub_status_module --with-http_ssl_module   
--with-http_gzip_static_module --with-pcre=/usr/local/src/pcre-8.31  
  
make  
make install

--with-pcre指向安装源文件目录

echo "export PATH=$PATH:/usr/local/nginx/sbin" >> /etc/profile  
source /etc/profile  
#启动nginx  
nginx

3 设置nginx开机启动

# 创建nginx配置文件  
vi /etc/rc.d/init.d/nginx  
  
#!/bin/bash  
# nginx Startup script for the Nginx HTTP Server  
# it is v.1.2.3 version  
# chkconfig: - 85 15  
# description: Nginx is a high-performance web and proxy server.  
# It has a lot of features, but it's not for everyone.  
# processname: nginx  
# pidfile: /var/run/nginx.pid  
# config: /usr/local/nginx/conf/nginx.conf  
  
nginxd=/usr/local/nginx/sbin/nginx  
  
nginx_config=/usr/local/nginx/conf/nginx.conf  
  
nginx_pid=/var/run/nginx.pid  
  
RETVAL=0  
  
prog="nginx"  
  
# Source function library  
. /etc/rc.d/init.d/functions  
  
# Source networking configuration  
. /etc/sysconfig/network  
  
# Check that networking is up  
[ ${NETWORKING} = "no" ] && exit 0  
[ -x $nginxd ] || exit 0  
  
# Start nginx daemons functions.  
  
start() {  
  
if [ -e $nginx_pid ]; then  
    echo "nginx already running..."  
    exit 1  
fi  
  
    echo -n $"Starting $prog: "  
  
    daemon $nginxd -c ${nginx_config}  
  
    RETVAL=$?  
  
    echo  
  
    [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx  
  
    return $RETVAL  
  
}  
  
  
# Stop nginx daemons functions.  
  
stop() {  
    echo -n $"Stopping $prog: "  
  
    killproc $nginxd  
  
    RETVAL=$?  
  
    echo  
  
    [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid  
}  
  
reload() {  
    echo -n $"Reloading $prog: "  
     
    #kill -HUP `cat ${nginx_pid}`  
     
    killproc $nginxd -HUP  
  
    RETVAL=$?  
  
    echo  
  
}  
  
  
# See how we were called.  
case "$1" in  
  
start)  
    start  
    ;;  
  
stop)  
    stop  
    ;;  
  
reload)  
    reload  
    ;;  
  
restart)  
    stop  
    start  
    ;;  
  
status)  
    status $prog  
    RETVAL=$?  
    ;;  
  
*)  
  
  
echo $"Usage: $prog { start | stop | restart | reload | status | help }"  
  
exit 1  
  
esac  
  
exit $RETVAL  
  
#保存文件  
wq
chmod +x /etc/rc.d/init.d/nginx  
chkconfig nginx on  
service nginx restart

4 fastcgi配置文件

#确认fastcgi配置文件存在  
vi /usr/local/nginx/conf/fastcgi_params  
#文件内容如下  
fastcgi_param  QUERY_STRING       $query_string;  
fastcgi_param  REQUEST_METHOD     $request_method;  
fastcgi_param  CONTENT_TYPE       $content_type;  
fastcgi_param  CONTENT_LENGTH     $content_length;  
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;  
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;  
fastcgi_param  REQUEST_URI        $request_uri;  
fastcgi_param  DOCUMENT_URI       $document_uri;  
fastcgi_param  DOCUMENT_ROOT      $document_root;  
fastcgi_param  SERVER_PROTOCOL    $server_protocol;  
fastcgi_param  HTTPS              $https if_not_empty;  
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;  
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;  
fastcgi_param  REMOTE_ADDR        $remote_addr;  
fastcgi_param  REMOTE_PORT        $remote_port;  
fastcgi_param  SERVER_ADDR        $server_addr;  
fastcgi_param  SERVER_PORT        $server_port;  
fastcgi_param  SERVER_NAME        $server_name;  
# PHP only, required if PHP was built with --enable-force-cgi-redirect  
fastcgi_param  REDIRECT_STATUS    200;

5  配置nginx, /usr/local/nginx/conf/nginx.conf文件内容如下

#user  nobody;  
worker_processes  8;  
  
#error_log  logs/error.log;  
#error_log  logs/error.log  notice;  
#error_log  logs/error.log  info;  
  
#pid        logs/nginx.pid;  
  
  
events {  
    worker_connections  65535;  
}  
  
  
http {  
    include       mime.types;  
    default_type  application/octet-stream;  
  
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
    #                  '$status $body_bytes_sent "$http_referer" '  
    #                  '"$http_user_agent" "$http_x_forwarded_for"';  
  
    #access_log  logs/access.log  main;  
  
    server_names_hash_bucket_size 128;  
    client_header_buffer_size 32k;  
    large_client_header_buffers 4 32k;  
    client_max_body_size 8m;  
  
    sendfile        on;  
    tcp_nopush     on;  
  
    #keepalive_timeout  0;  
    keepalive_timeout  65;  
    tcp_nodelay on;  
    fastcgi_connect_timeout 300;  
    fastcgi_send_timeout 300;  
    fastcgi_read_timeout 300;  
    fastcgi_buffer_size 64k;  
    fastcgi_buffers 4 64k;  
    fastcgi_busy_buffers_size 128k;  
    fastcgi_temp_file_write_size 128k;  
  
    gzip  on;  
    gzip_min_length 1k;  
    gzip_buffers 4 16k;  
    gzip_http_version 1.0;  
    gzip_comp_level 2;  
    gzip_types text/plain application/x-javascript text/css application/xml;  
    gzip_vary on;  
  
    server {  
        listen       80;  
        server_name  localhost;  
  
        #charset koi8-r;  
  
        #access_log  logs/host.access.log  main;  
  
        location / {  
            root   html;  
            index  index.html index.htm index.php;  
        }  
  
        #error_page  404              /404.html;  
  
        # redirect server error pages to the static page /50x.html  
        #  
        error_page   500 502 503 504  /50x.html;  
        location = /50x.html {  
            root   html;  
        }  
  
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80  
        #  
        #location ~ .php$ {  
        #    proxy_pass   http://127.0.0.1;  
        #}  
  
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  
          
        location ~ .php$ {  
            root           html;  
            fastcgi_pass   127.0.0.1:9000;  
            fastcgi_index  index.php;  
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;  
            include        fastcgi_params;  
        }  
  
        # deny access to .htaccess files, if Apache's document root  
        # concurs with nginx's one  
        #  
        #location ~ /.ht {  
        #    deny  all;  
        #}  
    }  
  
  
    # another virtual host using mix of IP-, name-, and port-based configuration  
    #  
    #server {  
    #    listen       8000;  
    #    listen       somename:8080;  
    #    server_name  somename  alias  another.alias;  
  
    #    location / {  
    #        root   html;  
    #        index  index.html index.htm;  
    #    }  
    #}  
  
  
    # HTTPS server  
    #  
    #server {  
    #    listen       443;  
    #    server_name  localhost;  
  
    #    ssl                  on;  
    #    ssl_certificate      cert.pem;  
    #    ssl_certificate_key  cert.key;  
  
    #    ssl_session_timeout  5m;  
  
    #    ssl_protocols  SSLv2 SSLv3 TLSv1;  
    #    ssl_ciphers  HIGH:!aNULL:!MD5;  
    #    ssl_prefer_server_ciphers   on;  
  
    #    location / {  
    #        root   html;  
    #        index  index.html index.htm;  
    #    }  
    #}  
  
}
service nginx restart


你可能感兴趣的:(Virtualbox搭建LNMP-2)