网站搭建项目一

来源:互联网 发布:用友医疗软件怎么样 编辑:程序博客网 时间:2024/06/10 22:52

1.搭建mysql proxy,实现读写分离
mysql proxy - lua script
mysql proxy 不应该在生产环境中使用
1)
mysql-master server(vm1)端:
yum -y install mysql-server mysql-connector-odbc  // 不用装mysql mysql-devel
/etc/init.d/mysqld start
mysqladimin -u root -p redhat
mysql -uroot -predhat


vim /etc/my.cnf
修改server_id = 1
log_bin = master_log


/etc/init.d/mysqld restart
mysqldump --all-database > /tmp/mysql-master.sql
mysql > show mater status;  //记录log position,假设master_log_file="xx1.000001",master_log_pos=106;
mysql > grant replication slave on *.* to
slave@'vm2.ip'  //从ip地址
mysql > grant replication slave on *.* to
slave@'vm3.ip' 
mysql > flush privileges;
scp /tmp/mysql-master.sql [vm2.ip]:/tmp/     //可以通过 mysqldump --all-databases | ssh vm2.ip "mysql" 直接同步到其他机器

scp /tmp/mysql-master.sql [vm3.ip]:/tmp/
--->转 2)配置 vm2 可以同步mysql-master
<--- 接3)授权给 proxy //这边仅作测试,测试完后可以删除掉 drop user
test@'host2.ip'
mysql -uroot -predhat
mysql > grant all privileges on *.* to
test@'host2.ip' identified by 'redhat' //host2 = proxy server
mysql > flush privileges;

<---接12)-----tomcat ejforum授权-------  tomcat server上可以使用mysqlproxy地址进行连接
mysql
> create database javatest;
mysql javatest < ejforum-2.3/install/script/easyjforum_mysql.sql  //nfs上挂载的东西,见12
GRANT ALL PRIVILEGES ON javatest.* TO
shan3@'host2.ip' IDENTIFIED BY 'redhat' WITH GRANT OPTION;  //mysqlproxy可以使用shan3用户来使用javatest数据库,当其他client需要访问javatest数据库时,只需用授予proxy的用户名和密码登录访问proxy server即可,不需直接访问真正的mysql server。
flush privileges;

//这边的discuz授权也是在这里授权
2)
mysql-slave server端(vm2):
yum -y install mysql-server mysql-connector-odbc

vim /etc/my.cnf

加入 server_id=2    //不然slave start 会报错


/etc/init.d/mysql start
mysqladmin -u root -p redhat
mysql < /tmp/mysql-master.sql
mysql -uroot -predhat
mysql > change master to master_host='vm1.ip',master_user='root',master_password='redhat',master_log_file="xx1.000001",master_log_pos=106;
mysql > slave start;
mysql > show slave status\G;  //检查
---> 转 3) 配置 vm3 也可以同步到maysql-master
3)
mysql-slave server端(vm3):clone 3)就好
yum -y install mysql-server mysql-connector-odbc

vim /etc/my.cnf

加入 server_id=3   //不然slave start 会报错


/etc/init.d/mysql start
mysqladmin -u root -p redhat
mysql < /tmp/mysql-master.sql
mysql -uroot -predhat
mysql > change master to master_host='vm1.ip',master_user='root',master_password='redhat',master_log_file="xx1.000001",master_log_pos=106;
mysql > slave start;
mysql > show slave status\G;  //检查
自己在vm1上写入数据,进一步检查是否AB同步?
---> 转4)
4)
mysql-proxy server端(真机2-host2):
 yum -y install  mysql-proxy 
 (需将mysql-proxy rpm包加入到yum 源中去)
cd /usr/src/mysql-proxy/
rpm -ivh  mysql-proxy-0.8.1-1.el6.x86_64.rpm //建议用yum安装方便
//实现读写分离
rpm -ql mysql-proxy | grep lua | grep rw //我们查询下该版即0.8.1是否有lua,没有的话我们从0.8.3中取
cd /usr/src/mysql-proxy
tar xf mysql-proxy-0.8.3.tar.gz
ls mysql-prxoy-0.8.3/lib/ | grep rw
cp mysql-prxoy-0.8.3/lib/rw-splitting.lua /usr/share/lua/5.1
vi /etc/sysconfig/mysql-proxy  //可以定义proxy后端的server ip地址
『注释掉前面几行,只留最后一行 proxy的启动参数 』
『-b vm1.ip:3306 -r vm2.ip:3306 -r vm3.ip -s /usr/share/lua/5.1/rw-splitting.lua』 //添加读写分离
service mysql-proxy start
//现在再做一次负载测试,读写分离实现
---> 转1)让master授权该mysql-proxy


5)客户端登录测试(192.168.0.X)
yum -y install mysql
mysql -utest -predhat -h'host2.ip' // -p4040 客户端登录时加默认端口 ,host2=proxy server (-p 4040? 在授权中指定么)
//这边的授权用户自己改动
---> 6)

 

2.网站搭建配置
6)dns server (真机2 - host2)
yum -y intall bind bind-chroot
配置www.jsp.comwww.php.com 2个域名解析 指向host1.ip() //注意named权限问题
--->7)


7)nginx server(真机1-host1)
cd /usr/src/iterms/nginx
rpm -ivh nginx-1.2.7-1.el6.ngx.x86_64.rpm
数据目录:/usr/share/nginx/
默认网站页面目录: /usr/share/nginx/html/
vim /etc/nginx/nginx.conf
     #gzip  on;
    upstream cgi_pool {
 server vm1:9000;
 server vm2:9000;
    }
 upstream jsp_pool {
 ip_hash;  //负载均衡
 server vm1:8080;
 server vm2:8080;
    }      
cd /etc/nginx/conf.d/   //配置文件
cp -a default.conf cgi.conf
vim cgi.conf
添加修改
    server_name 
www.php.com;
        root   /usr/share/nginx/discuz;
        index  index.php index.html index.htm;

    location ~ \.php$ {
    #    root           /usr/share/nginx/php;
        fastcgi_pass   cgi_pool;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
cp -a default.conf jsp.conf
vim jsp.conf
添加修改
    server_name 
www.jsp.com;
    location / {
#        root   /usr/share/nginx/html;
#        index  index.html index.htm;
        proxy_pass
http://jsp_pool/;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_4
04;
    }
 
/etc/init.d/nginx restart

 

8)php server (vm1)
yum install php php-mysql 
rpm -ivh spawn-fcgi-1.6.3-1.el6.x86_64.rpm
//建nginx用户,使其uid和gid跟前端一样,每台机器上相同的用户名建立相同的uid和gid 方便维护
//rpm --scripts -qp nginx/nginx-1.2.7-1.  //在nginx server端查看建nginx用户的命令,可以同样建
useradd nginx ....
vim /etc/sysconfig/spaum-fcgi
//需要在编译的时候有加上 cgi-enable 才有/usr/bin/php-cgi //端口方式利于扩展 //
options="-u nginx -g nginx -p 9000 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi"   //去掉监听网段,默认全网段
 //数据挂载
 mkdir /usr/share/ngix/discuz/ -p
 chown nginx. /usr/share/naginx/discuz/
mount nfs.ip:/var/nfs/discuz/ /usr/share/nginx/discuz/  //可以vim /etc/fstab 永久挂载

启动cgi服务器
service spawn-fcgi start
netstat -ntalp | grep 9000;
//页面授权


9)php server (vm2)

copy 8)

10)tomcat server (wm3)

tar xf jdk-7u15-linux-x64.tar.gz
cp -r jdk1.7.0_15/  /usr/local/java  //安装jdk
useradd tomcat
cd /home/tomcat
tar xf apache-tomcat-7.0.37.tar.gz -C /home/tomcat    //可以放到var或home目录下
ln -s apache-tomcat-7.0.37 tomcat //可以方便后续切换不同版本
cd /home/tomcat/tomcat/
vim /home/tomcat/.bashrc

export JAVE_HOME=/usr/local/java

. /home/tomcat/.bashrc
./startup.sh   //启动tomcat,这里可以测试下
http://localhost:8080
-----------
创建服务脚本:
参照tomcat.pdf 中普通用户使用的创建 page4 ,注意修改其中的一些路径
chown -R tomcat. /home/tomcat/tomcat
/etc/init.d/tomcat restart
cp  mysql-connector-java-5.1.23-bin.jar ~/tomcat/lib/   //将mysql的相关库copy过去
//网站根目录下
假设为 /home/tomcat/tomcat/ejforum/
mkdir -p /home/tomcat/tomcat/ejforum/ROOT/
chwon -R tomcat.  /home/tomcat/tomcat/ejforum/ROOT/
ejforum的数据放在nfs server 上
mount host1.ip:/var/nfs/ejforum/ /home/tomcat/tomcat/ejforum/ROOT/  (可以通过vim /etc/fstab 永久挂载)
cd /home/tomcat/tomcat/
vim conf/server.xml
添加虚拟主机,在原来虚拟主机配置下添加
      <Host name="
www.jsp1.com"  appBase="ejforum"  //修改
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
如果需要其为默认虚拟主机,则要修改。。。参照pdf
定义数据库
vim ejforum/ROOT/WEB-INF/conf/config.xml
 在database标签下修改
 username="shan3" password="redhat"  
 url="jdbc:mysql://host2.ip:3306/javatest?" // host2= mysql proxy ,参见1)所给定义
 /etc/init.d/tomcat restart


11)tomcat server (wm4)
与10)基本相同,只需修改 Host name="www.jsp2.com"  //如不单独访问也可以不修改


12)nfs server(host1)
//discuz
tar xf discuz* -C /var/nfs/discuz/ //应该是upload文件夹
chmod -R nginx /var/nfs/discuz/

//ejforum
useradd tomcat -u uid -g uid -s /sbin/nologin  //uid,gid 取自nginx端的tomcat id
unzip ejforum-2.3.zip
mv ejforum-2.3/ejforum/ /var/nfs/    //
chmod -R tomcat. /var/nfs/ejforum/

vim /etc/exports
/var/nfs 192.168.0.0/24(rw,async)
/etc/init.d/nfs start && chkconfig nfs on

---> 转到1)去授权


13)monitor server (host1)
 使用ganglia软件包监视cpu,memory
 
 
//clone机器,修改ip,主机名;chkconfig ; setenforce;授权,flush privileges;chown;hosts;dns;port;

文中蓝色字体为后续修改,实验中出现很多细节问题,最终还碰到的问题,

1. php 网页出现 “no input file specified” ,查看 nginx  server log : tail -f /var/log/nginx/error.log

会说index.php等网站根目录下的文件找不到。2种情况它指向的仍然是nginx server上的网站根目录,要么是cgi server上挂载到的根目录数据(从nfs处挂载到的)权限不够,

因为我们知道,nfs的默认挂载过来是nobody 所有者。

2.tomcat网站在上传附件时出现权限error,nfs问题。

3.如果客户端访问网站出现空白页,可以考虑是否安装了php-mysql等工具

4.再整个实验中,都将selinux设置为pemission,即 setenforce = 0


=====更新于7月16日=====

今天发现nfs共享出discuz,在访问http时会出现访问不到的问题,这里我们只能采用将discuz在本地完全搭建好之后,再进行数据的迁移,这样可以解决此问题

假设192.168.122.1 为nfs storage 、客户端和mysql端, 192.168.122.2 为http server

122.1机器:

mkdir /tmp/web_data          //给定需要共享出web数据的目录

chown apache /tmp/web_data

vim /etc/exports

加入"/tmp/web_data 192.168.122.0/24(rw,async)" 

/etc/init.d/nfs restart

=======

yum  -y install mysql-server mysql-devel php php-mysql

/etc/init.d/mysql start

mysql

> grant all on *.* to 'root'@'%' identified by 'uplooking';

> flush privileges;


122.2:

unzip Discuz.zip

cp -r ./upload/* /var/www/html/

chown -r apache /var/www/html/

/etc/init.d/httpd start


122.1:

firefox 

输入192.168.122.2 访问安装

数据库中 根据122.1上grant授权范围进行修改,安装成功之后,再次访问192.168.122.2 成功后

回到


122.2

mount 192.168.122.1:/tmp/web_data /mnt    //临时挂载web_data目录,此时里面没有web数据

cd /var/www/html

tar cf - . | tar xf - -C /mnt     //将当前已经安装完全的web数据迁移到web_data目录

umount /mnt        //卸载临时点

rm -rf *       //删除122.2 本地的web数据,我们最终要使用的是122.1上的web_data数据

mount 192.168.122.1:/tmp/web /var/www/html    //挂载122.1上的web数据

再到122.1上进行访问

原创粉丝点击