准备两台机器,一台跑mysql,一台跑web
一:安装mysql
192.168.31.166是web机器
在web机器上登录mysql:
web机器:安装的环境是LAMP加nginx,这里面不存在LNMP,nginx只是作为一个代理,那他作为代理的时候是不需要php环境的。
LAMP环境安装好后,接下来做一些配置
上图是bbs是discuz论坛
wordpress在cn.wordpress.org下载
解压wordpress:
pma就是phpmyadmin
添加三个虚拟主机
检查配置文件是否正确、检查80端口是否监听
在host文件添加
现在在浏览器访问bbs.abc.com,因为这个我们没有安装,我们是直接复制的也就是他这个里面已经存在了配置文件,他的配置文件使我们的老系统、老论坛的配置文件,可能我们访问会存在一些问题,如下图所示,当然你也可以重新安装。当然在这里我用另外一种方法去改他,去改配置文件的方法,
UC_DBNAME还没有,等会把本地的mysql拷贝过去。为啥要讲这种方法,因为日后可能会面临网站迁移,改域名。
global是全局的
现在改完了,可以试着刷新浏览器,发现错误已经发生了改变,实际上他已经连上对方数据库,但是对方数据库里并没有指定aming这个库,所以需要把库拷贝过去
这个错误说明对方机器需要安装rsync和openssh-clients
浏览器再次刷新下:又报这样的错,是权限问题
现在再次刷新浏览器,正常了,进入discuz页面了。
点默认版块又报错了
这是rewrite伪静态,那我们把伪静态再次配置下,在bbs虚拟主机中添加伪静态规则
再次刷新浏览器,又报错
进入虚拟主机配置文件,把之前的参数删掉,用下面的参数
现在再次刷新浏览器,点默认版块,现在是正常了,但是图片没加载进来
还有个地方:cd /data/bbs/,用grep他的目的是为了看在哪些文件里用到了www.1.com,-r目的是搜索那些子目录
进入管理中心把缓存删一下:
现在再次刷新浏览器,图片就加载进来了
安装wordpress,只要把wordpress程序放到指定的目录下去,然后再去绑定好这个域名就可以直接访问安装了
提交后会无法连接数据库
这是因为没有创建数据库里
创建wp-config.php
把复制的文本拷贝过来。
下面来安装phpmyadmin
如何去动静分离?80端口如何用nginx启动?apache要启动88端口。用80端口代理88端口
把apache端口改成88:进入apache主配置文件,把lisen 80改成88
再进入apache虚拟主机配置文件把80端口改成88
配置discuz.conf
server
{
listen 80;
server_name bbs.abc.com;
index index.html index.htm index.php;
root /date/bbs;
#根据user_agent控制(这个user_agent可以在apache里面配置,也可以在nginx里配置)
if ($http_user_agent ~ 'bingbot/2.0|MJ12bot/v1.4.2|Spider/3.0|YoudaoBot|Tomato|Gecko/20100315'){
return 403;
}
location ~ \.php$ { (这里是:访问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 *.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配置文件是否正确,重启nginx
配置blog.conf (参考 http://www.upupw.net/nginxhelp/n33.html)
server
{
listen 80;
server_name blog.abc.com;
index index.html index.htm index.php;
root /date/blog;
#根据user_agent控制
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 *.baidu.com\
*.google.com *.google.cn *.soso.com ;
if ($invalid_referer) {
return 403;
#rewrite ^/ http://www.example.com/nophoto.gif;
}
access_log off;
}
测试:在浏览器访问blog.abc.com,出现重定向循环
配置pma
server
{
listen 80;
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记录日志,但不记录图片等静态页的日志,并且配置日志切割
discuz和wordpress访问后台限制一下ip白名单,比如只允许192.168.1.100访问(nginx)
192.168.31.144是真机的ip
浏览器访问:
那么为什么是403呢?因为我们走的是代理,代理的ip是127.0.0.1,所以在这里虚拟主机配置文件你限制任何一个ip,只要把127.0.0.1打开,所有的ip都可以访问
重启apache,重新访问
他阻断的是代理的ip,那这个时候我们该怎么办?只能去再nginx上去做限制了
vim discuz.conf
回到apache虚拟主机配置文件
把方框内注释掉。把apache的放开,把nginx的限制
重启apache和nginx
访问:
那么现在用另外一个ip去访问下:达到目的了
wordpress的后台在哪里呢?
wordpress也是在nginx里去限制
phpmyadmin整个站点需要配置用户认证(nginx)
写一个mysql备份的脚本,每天5点执行,需要远程拷贝到web机器上