码迷,mamicode.com
首页 > 其他好文 > 详细

LANMP实验课题

时间:2015-05-22 11:47:38      阅读:355      评论:0      收藏:0      [点我收藏+]

标签:软件   linux   ip地址   动态   

实验课题:搭建LAMP,安装Nginx,作为代理,将MySQL安装在单独的机器,apache负责动态,nginx负责静态


实验环境:

1、VMware Workstation 11

2、设备A:Nginx+Apache+PHP,IP地址:192.168.1.10,Host:web

3、设备B:MySQL,IP地址:192.168.1.11,Host:mysql

4、Linux发行版:Centos 6.6 x86;

5、Nginx:http://nginx.org/download/nginx-1.6.2.tar.gz

6、Apache:http://syslab.comsenz.com/downloads/linux/httpd-2.2.16.tar.gz

7、PHP:http://cn2.php.net/distributions/php-5.3.28.tar.gz

8、MySQL:http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.42-linux2.6-i686.tar.gz


实验准备:

1、分别在设备A和B中下载各个软件;

2、更新系统时间;

3、清空Iptables,关闭Selinux。


实验步骤:


设备A

一、安装apache

# 解压软件包,进入目录文件
[root@web src]# tar -xvf httpd-2.2.16.tar.gz
[root@web src]# cd httpd-2.2.16
# 编译参数
[root@web httpd-2.2.16]# ./configure --prefix=/usr/local/apache2 --bindir=/usr/bin/ 
--sbindir=/usr/sbin/ --enable-mods-shared=most --enable-so
......................开始编译......................
# 第一个错误提示:未安装gcc编译器,我们yum这个软件就好
configure: error: in `/usr/local/src/httpd-2.2.16/srclib/apr‘:
configure: error: no acceptable C compiler found in $PATH      
See `config.log‘ for more details.
configure failed for srclib/apr
......................继续编译........................
config.status: creating support/log_server_status
config.status: creating support/logresolve.pl
config.status: creating support/phf_abuse_log.cgi
config.status: creating support/split-logfile
config.status: creating build/rules.mk
config.status: creating build/pkg/pkginfo
config.status: creating build/config_vars.sh
config.status: creating include/ap_config_auto.h
config.status: executing default commands
......................编译完成...........................
[root@web httpd-2.2.16]# make
[root@web httpd-2.2.16]# make install
# 编辑apache配置文件
[root@web httpd-2.2.16]# vim /usr/local/apache2/conf/httpd.conf
......................................
# 修改为:ServerName localhost:80
#ServerName 
.....................................
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all  <== Deny修改为Allow
</Directory>
# 退出,保存
# 测试配置文件的正确性
[root@web httpd-2.2.16]# apachectl -t
Syntax OK
# 启动apache
[root@web httpd-2.2.16]# apachectl start
测试apache
[root@web httpd-2.2.16]# curl localhost
<html><body><h1>It works!</h1></body></html>

 浏览器测试

技术分享




二、安装Nginx

[root@web src]# tar -xvf nginx-1.6.2.tar.gz
[root@web src]# cd nginx-1.6.2
[root@web nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --sbin-path=/usr/sbin/ 
--with-pcre
................................................................
# 提示未安装pcre-devel的,直接yum去安装
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
...........................................................
# 提示未安装zlib-devel的,直接yum去安装
./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.
............................................................

[root@web nginx-1.6.2]# make
[root@web nginx-1.6.2]# make install
# 编辑启动脚本
[root@web nginx-1.6.2]# vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings

NGINX_SBIN="/usr/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"

start() {
        echo -n $"Starting $prog: "
        mkdir -p /dev/shm/nginx_temp
        daemon $NGINX_SBIN -c $NGINX_CONF
        RETVAL=$?
        echo
        return $RETVAL
}

stop() {
        echo -n $"Stopping $prog: "
        killproc -p $NGINX_PID $NGINX_SBIN -TERM
        rm -rf /dev/shm/nginx_temp
        RETVAL=$?
        echo
        return $RETVAL
}

reload(){
        echo -n $"Reloading $prog: "
        killproc -p $NGINX_PID $NGINX_SBIN -HUP
        RETVAL=$?
        echo
        return $RETVAL
}

restart(){
        stop
        start
}

configtest(){
    $NGINX_SBIN -c $NGINX_CONF -t
    return 0
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  reload)
        reload
        ;;
  restart)
        restart
        ;;
  configtest)
        configtest
        ;;
  *)
        echo $"Usage: $0 {start|stop|reload|restart|configtest}"
        RETVAL=1
esac
exit $RETVAL

[root@web nginx-1.6.2]# chmod 755 /etc/init.d/nginx
[root@web nginx-1.6.2]# chkconfig --add nginx
[root@web nginx-1.6.2]# chkconfig nginx on
# 这里要先停止apache服务,再启动nginx,因为nginx监听端口和apache的相同,都是80
[root@web nginx-1.6.2]# apachectl stop
[root@web nginx-1.6.2]# service nginx start
正在启动 Nginx:                                           [确定]

# 检测nginx服务是否启动
[root@web nginx-1.6.2]# ps aux|grep nginx|grep -v grep
root     30545  0.0  0.0   3552   516 ?        Ss   22:16   0:00 nginx: master process 
/usr/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody   30546  0.0  0.0   3736   872 ?        S    22:16   0:00 nginx: worker process

浏览器测试

技术分享




三、安装PHP

[root@web src]# tar -xvf php-5.3.28.tar.gz
[root@web src]# cd php-5.3.28
[root@web php-5.3.28]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/sbin/apxs 
--with-config-file-path=/usr/local/php/etc --with-libxml-dir --with-gd --with-jpeg-dir 
--with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 
--with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring 
--enable-sockets --enable-exif --disable-ipv6 --with-mysql=mysqlnd --with-mysqli=mysqlnd 
--with-pdo-mysql=mysqlnd
...........................................
# 未检测到libxml2-devel,进行yum安装
checking libxml2 install dir... yes
checking for xml2-config path...
configure: error: xml2-config not found. Please check your libxml2 installation.
...........................................
# 未检测到openssl-devel,进行yum安装
configure: error: Cannot find OpenSSL‘s <evp.h>
..........................................
# 未检测到bzip2-devel,进行yum安装
checking for BZip2 support... yes
checking for BZip2 in default path... not found
configure: error: Please reinstall the BZip2 distribution
.......................................
# 未检测到libjpeg-turbo-devel,进行yum安装
configure: error: jpeglib.h not found.
........................................
# 未检测到libpng-devel,进行yum安装
configure: error: png.h not found.
........................................
# 未检测到freetype-devel,进行yum安装
configure: error: freetype.h not found.
.......................................
# 未检测到libmcrypt-devel,这个需要先yum安装epel-release,再进行yum安装
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
.....................................
+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE.  By continuing this installation |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

Thank you for using PHP.

[root@web php-5.3.28]# make
[root@web php-5.3.28]# make install




四、Apache与PHP整合

[root@web php-5.3.28]# vim /usr/local/apache2/conf/httpd.conf
..............................................
# 查看模块是否有增加这一行
LoadModule php5_module        modules/libphp5.so
...............................................
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType application/x-httpd-php .php  <== 增加这一行
...............................................    
# 编辑PHP测试页面
[root@web php-5.3.28]# vim /usr/local/apache2/htdocs/phpinfo.php
<?php
phpinfo();
?>
[root@web php-5.3.28]# apachectl -t
Syntax OK
[root@web php-5.3.28]# apachectl restart

浏览器测试

技术分享





机器B


安装MySQL

[root@mysql src]# useradd -s /sbin/nologin mysql
[root@mysql src]# mkdir -p /date/mysql
[root@mysql src]# chown -R mysql.mysql /date/mysql/
[root@mysql src]# tar -xvf mysql-5.5.42-linux2.6-i686.tar.gz
[root@mysql src]# mv mysql-5.5.42-linux2.6-i686 /usr/local/mysql
[root@mysql src]# cd /usr/local/mysql/
[root@mysql mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/date/mysql/

# 警告:hosts中未定义主机名,进行修改
WARNING: The host ‘mysql‘ could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !
Installing MySQL system tables...

# 未检测到libaio-devel,进行yum安装
./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object
 file: No such file or directory

Installation of system tables failed!  Examine the logs in
/date/mysql/ for more information.

You can try to start the mysqld daemon with:

    shell> ./bin/mysqld --skip-grant &

and use the command line tool ./bin/mysql
to connect to the mysql database and look at the grant tables:

    shell> ./bin/mysql -u root mysql
    mysql> show tables

Try ‘mysqld --help‘ if you have problems with paths.  Using --log
gives you a log in /date/mysql/ that may be helpful.

Please consult the MySQL manual section
‘Problems running mysql_install_db‘, and the manual section that
describes problems on your OS.  Another information source are the
MySQL email archives available at http://lists.mysql.com/.

Please check all of the above before submitting a bug report
at http://bugs.mysql.com/

[root@mysql mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/date/mysql/
Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

./bin/mysqladmin -u root password ‘new-password‘
./bin/mysqladmin -u root -h mysql password ‘new-password‘

Alternatively you can run:
./bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd . ; ./bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd ./mysql-test ; perl mysql-test-run.pl

Please report any problems at 
 

[root@mysql mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@mysql mysql]# chmod 755 !$
chmod 755 /etc/init.d/mysqld
[root@mysql mysql]# vim !$
vim /etc/init.d/mysqld
.........................
# 这两个目录指定一下
basedir=/usr/local/mysql
datadir=/data/mysql
...........................
[root@mysql mysql]# chkconfig --add mysqld
[root@mysql mysql]# chkconfig mysqld on
[root@mysql mysql]# cp support-files/my-large.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y
[root@mysql mysql]# service mysqld start
Starting MySQL.. SUCCESS!
# 创建mysql的root密码
[root@mysql mysql]# /usr/local/mysql/bin/mysqladmin -uroot password 
New password:
Confirm new password:
[root@mysql mysql]# /usr/local/mysql/bin/mysqladmin -uroot password
New password:
Confirm new password:
[root@mysql mysql]# /usr/local/mysql/bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.42-log MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

mysql>



环境测试:

一、搭建论坛

      1、在设备A上下载Discuz x3.2

           http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip 

      2、论坛开始安装

# 创建网站程序文件目录
[root@web ~]# mkdir /data/discuz/    <== 放网站程序的地方,起一个自己知道的名字
# 解压安装程序,将upload里面的文件移到 网站监控目录下/data/mydiscuz 
[root@web mydiscuz]# mv upload/* .   
[root@web ~]# vim /usr/local/apache2/conf/httpd.conf

............................................
# Virtual hosts
# 修改apache主配置文件httpd.conf,开启虚拟主机配置
将这一行前面的注释符“#”去掉
Include conf/extra/httpd-vhosts.conf
............................................

# 修改apache虚拟主机配置文件httpd-vhosts.conf,保留以下内容,
[root@web ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
NameVirtualHost *:80
<VirtualHost *:80>    
ServerName bbs.abc.com    
DocumentRoot "/data/discuz"
</VirtualHost>
[root@web ~]# apachectl -t
Syntax OK
[root@web ~]# apachectl restart

        在浏览器上进行配置

        1、

技术分享

           2、

技术分享


         提示相关目录没有权限,我们开始配置

[root@web ~]# cd /data/discuz/
[root@web discuz]# chown -R daemon.daemon config/ data/ uc_client/data/ uc_server/data/

         修改之后下一步

         3、在设备B上为设备A进行配置MySQL数据库权限

[root@mysql ~]# /usr/local/mysql/bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 44
Server version: 5.5.42-log MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

# 创建discuz数据库
mysql> create database discuz;
Query OK, 0 rows affected (0.00 sec)

# mysql> grant all on discuz.* to ‘mydiscuz‘@‘192.168.0.100‘ identified by ‘mydiscuz123‘;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye


        为网站配置数据库信息

技术分享

        4、开始安装

技术分享

            5、安装完毕

技术分享




              进行Nginx代理配置

# 修改主配置文件
[root@web ~]# vim /usr/local/nginx/conf/nginx.conf
user nobody nobody;
worker_processes 4;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;

events
{
    use epoll;
    worker_connections 6000;
}

http

{
    include mime.types;
    default_type application/octet-stream;
    server_names_hash_bucket_size 3526;
    server_names_hash_max_size 4096;
    log_format combined_realip ‘$remote_addr $http_x_forwarded_for [$time_local]‘
    ‘$host "$request_uri" $status‘
    ‘"$http_referer" "$http_user_agent"‘;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    client_header_timeout 10;
    client_body_timeout 10;
    send_timeout 10;
    connection_pool_size 256;
    request_pool_size 4k;
    client_header_buffer_size 1k;
    large_client_header_buffers 8 4k;
    output_buffers 4 32k;
    postpone_output 1460;
    client_max_body_size 10m;
    client_body_buffer_size 256k;
    client_body_temp_path /usr/local/nginx/client_body_temp;
    proxy_temp_path /usr/local/nginx/proxy_temp;
    fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
    fastcgi_intercept_errors on;

    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_comp_level 5;
    gzip_http_version 1.1;
     gzip_types text/plain application/x-javascript text/css text/htm application/xml;
    include vhosts/*.conf;
}

[root@web ~]# vim /usr/local/nginx/conf/vhosts/discuz.conf
[root@web ~]# mkdir /usr/local/nginx/conf/vhosts
[root@web ~]# vim /usr/local/nginx/conf/vhosts/discuz.conf
server
{
    listen 80 default;
    server_name bbs.swt.com;
    index index.html index.htm index.php;
    root /data/discuz;
#根据user_agent控制
    if ($http_user_agent ~ ‘bingbot/2.0|MJ12bot/v1.4.2|Spider/3.0|YoudaoBot|Tomato|Gecko/20100315‘){
            return 403;
    }
# 配置管理中心白名单
    location ~ admin.php {
        allow 192.168.0.50;
        deny all;
        proxy_pass   http://127.0.0.1:88;
        proxy_set_header Host   $host;
    }
# 配置动态代理解析
    location ~ \.php$ {
         proxy_pass   http://127.0.0.1:88;
         proxy_set_header Host   $host;
         proxy_set_header X-Real-IP      $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

# 配置缓存文件
    location ~ .*\.(js|css)?$
    {
          expires    24h;
          access_log off;
    }
# 配置防盗链
    location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ {
         expires 7d;
         valid_referers none blocked server_names *.abc.com *.a.com *.b.com *.baidu.com         *.google.com *.google.cn *.soso.com ;
         if ($invalid_referer) {
              return 403;
              #rewrite ^/ http://www.example.com/nophoto.gif;
         }
         access_log off;
    }
# 配置discuz伪静态
        rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;
        rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2
        &page=$3 last;
        rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewth
        read&tid=$2&extra=page%3D$4&page=$3 last;
        rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page
        =$3 last;
        rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 
        last;
        rewrite ^([^\.]*)/(fid|tid)-([0-9]+)\.html$ $1/index.php?action=$2&value=$3 last;


    access_log logs/discuz.log combined_realip;
}

# 修改apache监听端口为88,防止与nginx端口冲突

[root@web ~]# /usr/local/apache2/bin/apachectl -t
Syntax OK
[root@web ~]# /usr/local/apache2/bin/apachectl restart
[root@web ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@web ~]# service nginx start
正在启动 Nginx:                                           [确定]



本文出自 “Topspeed_King” 博客,请务必保留此出处http://mylinuxlife.blog.51cto.com/4706737/1653725

LANMP实验课题

标签:软件   linux   ip地址   动态   

原文地址:http://mylinuxlife.blog.51cto.com/4706737/1653725

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!