我们以模拟实际需求的形式来复习。需求如下:
1. 准备两台centos 6,其中一台机器跑mysql,另外一台机器跑apache和nginx + php
2. 同时安装apache和nginx,其中nginx启动80端口,用来跑静态对象(图片、js、css),apache监听88端口,负责跑动态页(php相关的),并且需要由nginx代理对外访问
3. mysql服务器需要开启慢查询日志
4. 搭建discuz、wordpress以及phpmyadmin,域名分别为bbs.abc.com, blog.abc.com, pma.abc.com
5. 配置discuz的伪静态(nginx)
6. apache不需要记录日志,nginx记录日志,但不记录图片等静态页的日志,并且配置日志切割
7. 配置图片防盗链(nginx)
8. 配置图片缓存7天,js,css缓存1天(nginx)
9. discuz和wordpress访问后台限制一下ip白名单,比如只允许192.168.1.100访问(nginx)
10. phpmyadmin整个站点需要配置用户认证(nginx)
11. 写一个mysql备份的脚本,每天5点执行,需要远程拷贝到web机器上
12. 把除了百度、google外的其他常见搜索引擎蜘蛛封掉,比如(bingbot/2.0、Sogou web spider/4.0、360Spider、YisouSpider、YandexBot/3.0)(nginx)大家好,里面的图片仅供参考,只是一种思路,不要照搬!!
对代理名词的理解:举个例子吧!你是供应商,你手下有一个业务代理,它帮你销售东西出去,如果你想不卖这个东西给某个公司或者地方,是不是给代理说说就好了。那我这里apache是供应商,nginx是代理商,所以nginx响应客户端,他知道客户的请求
实验环境:
1、VMware Workstation 10
2、设备A:MySQL,IP地址:192.168.137.102,HostName:mysql
3、设备B:LAMP环境+nginx代理,IP地址:192.168.137.107,HostName:lanp
4、Linux发行版:Centos 6.7 x86_64;
5、Nginx:http://nginx.org/download/nginx-1.6.2.tar.gz
6、Apache:httpd-2.2.16.tar.gz
7、PHP:php-5.3.28.tar.gz
8、MySQL:mysql-5.5.42-linux2.6-x86_64.tar.gz
9、discuz:Discuz_X3.2_SC_UTF8.zip
10、wordpress:wordpress-4.2.2-zh_CN.tar.gz
11、phpmyadmin:phpMyAdmin-4.0.8-all-languages.zip
实验步骤:
设备A:mysql

cd /usr/local/src/
tar zxvf mysql-5.5.-linux2.-x86_64.tar.gz
mv mysql-5.5.-linux2.-x86_64 /usr/local/mysql
cd /usr/local/mysql
mkdir -p /data/mysql
useradd -s /sbin/nologin -M mysql
chown -R mysql:mysql /data/mysql
cp support-files/my-large.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod /etc/init.d/mysqld
vi /etc/init.d/mysql,basedir=/usr/local/mysql,datadir=/data/mysql
./scripts/mysql_install_db –user=mysql –datadir=/data/mysql
vim /etc/profile.d/mysql.sh加入export PATH=$PATH:/usr/local/mysql/bin
chkconfig –add mysqld
chkconfig mysqld on
service mysqld start

登录mysql授权:grant all on *.* to ‘aming’@’192.168.137.107’ identified by ‘aminglinux.com’;

设备B:LAMP
1. 安装apache

cd /usr/local/src/
tar zvxf httpd-2.2..tar.gz
cd httpd-2.2.
./configure –prefix=/usr/local/apache2 –enable-mods-shared=most –enable-so
make&make install

apache加入chkconfig

cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
vim /etc/init.d/httpd

在第一行#!/bin/sh下增加两行文字

# chkconfig:
# description: Apache
chkconfig –level httpd on

2. 安装php

cd /usr/local/src/
tar zxvf php-5.3..tar.gz
cd php-5.3.
./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache2/bin/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
make&make install
cp /usr/local/src/php-5.3./php.ini-production /usr/local/php/etc/php.ini

3、 配置apache结合php

vim /usr/local/apache2/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

找到:

#ServerName www.example.com:

修改为:

ServerName localhost:
vim /usr/local/apache2/conf/httpd.conf找到:

Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all

改为:

Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all

测试LAMP环境:在浏览器访问192.168.137.107,如果显示IT Works!表示LAMP环境搭建成功

mkdir data
cd data

在data目录分别创建bbs、blog、pma目录

4.解压discuz并把upload下的内容移到bbs下

cd /usr/local/src
unzip Discuz_X3.2_SC_UTF8.zip
mv upload/* /data/bbs

5.解压wordpress并把wordpress下的内容移到blog下

[root@lanp src]# tar zxvf wordpress-4.2.-zh_CN.tar.gz
[root@lanp src]# mv wordpress/* /data/blog

6.解压phpmyadmin并把phpMyAdmin-4.0.8-all-languages下的内容移到pma下

[root@lanp src]# unzip phpMyAdmin-4.0.-all-languages.zip
[root@lanp src]# mv phpMyAdmin-4.0.-all-languages/* /data/pma

7.把apache端口改成88:进入apache主配置文件,把lisen 80改成88

8.[root@lanp ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf(添加三个虚拟主机,并把80端口改成88)

#ServerAdmin webmaster@dummy-host.example.com
DocumentRoot “/data/bbs”
ServerName bbs.abc.com
#ServerAlias www.dummy-host.example.com
ErrorLog “logs/bbs.abc.com-error_log”
CustomLog “logs/bbs.abc.com-access_log” common #ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot “/data/blog”
ServerName blog.abc.com
ErrorLog “logs/blog.abc.com-error_log”
CustomLog “logs/blog.abc.com-access_log” common #ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot “/data/pma”
ServerName pma.abc.com
ErrorLog “logs/pma.abc.com-error_log”
CustomLog “logs/pma.abc.com-access_log” common

检查配置文件是否有语法错误:

[root@lanp ~]# /usr/local/apache2/bin/apachectl -t
Syntax OK

检查88端口是否监听

[root@lanp ~]# /usr/local/apache2/bin/apachectl restart
[root@lanp ~]# netstat -lnp

9.在真机win上的host文件里绑定ip和虚拟主机域名(host文件路径:C/windows/System32/drivers/etc/hosts

192.168.137.107 bbs.abc.com blog.abc.com pma.abc.com

10.安装discuz

在浏览器访问bbs.abc.com/install/,会出现discuz图形安装界面,点我同意,出现很多目录不可写,为啥不可写呢?因为ps aux |grep httpd,httpd是以daemon用户运行。所以需要把discuz中不可写的目录的属主和属组改成daemon,chown -R daemon:daemon config/ data uc_client/data uc_server/data
回到浏览器刷新,下一步,再全新安装discuz
在mysql中创建discuz库并授权一个用户

mysql> create database discuz;
mysql> grant all on *.* to ‘aming’@’192.168.137.107’ identified by ‘aminglinux.com’;
mysql> flush privileges;

回到discuz浏览器,数据库名为discuz,数据库用户名为aming,数据库密码aminglinux.com

到此discuz论坛安装完毕

11.安装wordpress
在mysql中创建blog库

mysql> create database blog;

在浏览器中访问blog.abc.com:88进行安装http://s1.51cto.com/wyfs02/M00/78/4C/wKiom1Z6BiTyW7WFAAD-3ngXLGQ414.png根据错误提示,在blog目录下创建wp-config.php然后把浏览器中方框内信息拷贝至wp-config.php目录

12.安装phpmyadmin

cp libraries/config.default.php config.inc.php

更改

$cfg[‘Servers’][$i][‘user’] = ‘root’;
$cfg[‘Servers’][$i][‘password’] = ‘yourrootpassword’;
$cfg[‘Servers’][$i][‘host’] = ‘yourdbip’;
$cfg[‘Servers’][$i][‘auth_type’] = ‘config’;##认证模式

在浏览器中访问pma.abc.com:88进行安装

13.安装nginx

[root@lanp src]# wget http://nginx.org/download/nginx-1.6.2.tar.gz
[root@lanp src]# tar zxvf nginx-1.6..tar.gz
[root@lanp nginx-1.6.]# ./configure –prefix=/usr/local/nginx –with-pcre
make &make install

nginx启动脚本和配置文件

vim /etc/init.d/nginx //加入如下内容
#!/bin/bash
# chkconfig: –
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings NGINX_SBIN=”/usr/local/nginx/sbin/nginx”
NGINX_CONF=”/usr/local/nginx/conf/nginx.conf”
NGINX_PID=”/usr/local/nginx/logs/nginx.pid”
RETVAL=
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
} case “$” in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
configtest)
configtest
;;
*)
echo $”Usage: $ {start|stop|reload|restart|configtest}”
RETVAL=
esac
exit $RETVAL
chmod  /etc/init.d/nginx

chkconfig –add nginx
chkconfig nginx on
service nginx start
service nginx configtest#(检测配置文件,configtest相当于-t)
vim /usr/local/nginx/conf/nginx.conf #清空原来的配置,加入如下内容
user nobody nobody;

worker_processes ;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile ;
events
{
use epoll;
worker_connections ;
}
http {
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size ;
server_names_hash_max_size ;
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;
keepalive_timeout ;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
connection_pool_size ;
client_header_buffer_size 1k;
large_client_header_buffers 4k;
request_pool_size 4k;
output_buffers 32k;
postpone_output ;
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;
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 8k;
gzip_comp_level ;
gzip_http_version 1.1;
gzip_types text/plain application/x-javascript text/css text/htm application/xml;
include vhosts/*.conf;
} cd /usr/local/nginx/conf/
mkdir vhosts
touch discuz.conf
touch pma.conf
touch blog.conf 14.discuz.conf
server
{
listen 80;
server_name bbs.abc.com;
index index.html index.htm index.php;
root /data/bbs; #根据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.31.141;
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;
} 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=viewthread&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 /home/logs/discuz.log combined_realip;

检测nginx配置文件:

/usr/local/nginx/sbin/nginx -t

重启

nginx:service nginx restart

在浏览器访问bbs.abc.com,是可以正常进入discuz页面的。

15.blog.conf配置(参考 http://www.upupw.net/nginxhelp/n33.html)

server
{
listen ;
server_name blog.abc.com;
index index.html index.htm index.php;
root /data/blog;
location /wp-admin/ {
allow 127.0.0.1;
deny all;
location ~ \.php$ {
proxy_pass http://127.0.0.1:88;
proxy_set_header Host $host;
}
} location / {
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;
} }

检测nginx配置文件是否有语法错误:

/usr/local/nginx/sbin/nginx -t

重启nginx:

service nginx restart

在浏览器访问:blog.abc.com,是可以访问的

16.配置pma.conf

server
{
listen ;
server_name pma.abc.com;
index index.html index.htm index.php;
root /data/pma; location / {
auth_basic “Auth”;
auth_basic_user_file /usr/local/nginx/conf/htpasswd; 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;
} }
}

检测nginx配置文件是否有语法错误:

/usr/local/nginx/sbin/nginx -t

重启nginx:

service nginx restart

浏览器访问:pma.abc.com是可以访问到的

17、配置nginx的日志切割

[root@lanp vhosts]# vim /usr/local/sbin/logrotate.sh
#!/bin/bash
d=`date -d “- day” +%Y%m$d`
/bin/mv /home/logs/discuz.log /home/logs/discuz_$d.log
/etc/init.d/nginx reload >/dev/null >/dev/null
cd /home/logs
gzip discuz_$d.log

18、mysql备份脚本无需密码通过ssh执行rsync来同步文件的方法可以参考http://www.jb51.net/article/60192.htm

vim mysqlbak.sh
#!/bin/bash
source /etc/profile
d=`date +%F`
/usr/local/mysql/bin/mysqldump -uroot -p838024 wordpress >/data/mysqlbak/$d.wordpresssql
/usr/local/mysql/bin/mysqldump -uroot -p838024 discuz >/data/mysqlbak/$d.discuzsql
/usr/local/mysql/bin/mysqldump -uroot -p838024 phpmyadmin >/data/mysqlbak/$d.phpmyadminsql
rsync -avLupz -e “ssh -p ” /data/mysqlbak/ 192.168.137.107:/tmp/

再把脚本放进crontab计划任务

chmod a+x mysqlbak.sh
crontab -e
*/ * * * * /root/shell/mysqlbak.sh

关于rsync命令:

本地和远程需要安装rsync和openssh-clients

yum install rsync和yum install openssh-clients

lamp+nginx代理+discuz+wordpress+phpmyadmin搭建的更多相关文章

  1. lamp+nginx代理+discuz+wordpress+phpmyadmin

    实验课题:搭建LAMP,安装Nginx,作为代理,将MySQL安装在单独的机器,apache负责动态,nginx负责静态 实验环境: 1.VMware Workstation 11 2.设备A:MyS ...

  2. LAMP 实现全过程及wordpress的搭建

    一.介绍 1. LAM(M)P: L:linux A:apache (httpd) M:mysql, mariadb M:memcached 缓存 P:php, perl, python WEB 资源 ...

  3. Nginx+php+mysql+wordpress搭建自己的博客站点

    服务器环境要求Centos 6 或以上版本(由于我们的目标是半小时内搭建好,那就选简单yum安装)MySQL 5或更新版本Nginx 1或更新版本PHP 5 或更新版本 php-fpm 5或更新版本 ...

  4. 搭建sftp服务+nginx代理

    在公司,经常会用到sftp服务,比如两个公司对接生产项目,其中一方,要在sftp上上传pdf文件,另一方公司要在sftp服务器上用nginx代理直接下载pdf文件.下面就说说我在实际中应用到的sftp ...

  5. 10分钟学会windows中iis搭建服务器集群实现负载均衡和nginx代理转发

    前言 我们之前聊过 10分钟搭建服务器集群--Windows7系统中nginx与IIS服务器搭建集群实现负载均衡:https://www.cnblogs.com/xiongze520/p/103087 ...

  6. nginx反向代理uwsgi django服务器搭建总结

    1.安装python.django.虚拟环境 参考帖子:安装python django https://blog.csdn.net/a249900679/article/details/5152720 ...

  7. nginx代理https站点(亲测)

    nginx代理https站点(亲测) 首先,我相信大家已经搞定了nginx正常代理http站点的方法,下面重点介绍代理https站点的配置方法,以及注意事项,因为目前大部分站点有转换https的需要所 ...

  8. Httpd服务进阶知识-基于Apache Modele的LAMP架构之Discuz!案例

    Httpd服务进阶知识-基于Apache Modele的LAMP架构之Discuz!论坛案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装依赖包及数据库  博主推荐阅读: ...

  9. day65:nginx代理&nginx负载均衡

    目录 1.nginx代理 2.nginx代理与配置 3.nginx负载均衡调度多web节点(静态页面) 4.nginx负载均衡调度多应用节点(blog) 5.nginx_proxy + web应用节点 ...

随机推荐

  1. HTML-参考手册: HTML ASCII

    ylbtech-HTML-参考手册: HTML ASCII 1.返回顶部 1. HTML ASCII 参考手册 ASCII 字符集被用于因特网上不同计算机间传输信息. ASCII 字符集 ASCII ...

  2. 96、搬家到csdn

    大家好: 今天开始会将所有的博客搬家到CSDN,以后请参考CSDN上的博客:http://blog.csdn.net/u012416045 谢谢 维真

  3. mybatis PageBounds应用分页

    第一步:分页工具类 package com.smartmorse.vo; import java.util.HashMap; import java.util.List; import java.ut ...

  4. PHP面试 MySQL的高可扩展和高可用

    MySQL的高可扩展和高可用 面试题一 MySQL分表和分区的工作原理,分表和分区的使用场景和优缺点. 分区表的原理 对用户而言,分区表时一个独立的逻辑表,但是底层MySQL将其分成了多个物理子表,这 ...

  5. Tomcat负载均衡、调优核心应用进阶学习笔记(五):Tomcat调优和Tomcat监控(差评)

    文章目录 tomcat调优 tomcat监控 tomcat调优 vi catalina.sh # --------------------------------------------------- ...

  6. Dubbo入门到精通学习笔记(十九):MySQL源码编译安装、MySQL主从复制的配置

    文章目录 MySQL 源码编译安装(CentOS-6.6+MySQL-5.6) 一.服务器配置: 二.源码安装 MySQL5.6.26: MySQL主从复制的配置 环境 依赖课程 MySQL 主从复制 ...

  7. 文件转byte[ ]

    /** * 将文件转换成byte数组 * @param tradeFile * @return */public byte[] fileToByte(String fileUrl){ // 第1步.使 ...

  8. python之求字典最值

    本例子求字典最小值 首先字典分为键和值 eg: {键:值} prices = { 'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20, ...

  9. MYSQL-连续出现的数字

    编写一个 SQL 查询,查找所有至少连续出现三次的数字. +----+-----+| Id | Num |+----+-----+| 1 | 1 || 2 | 1 || 3 | 1 || 4 | 2 ...

  10. python 对redis key的基本操作

    首先看一下Python 操作redis.StrictRedis 的初始化方法__init__ def __init__(self, host='localhost', port=6379, db=0, ...