网站搭建项目一
2013-06-12 22:16
211 查看
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 "%r" %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上进行访问
相关文章推荐
- 通过一个简单的文章系统学习MVC3+Linq搭建网站--项目文件结构介绍(3)
- 从零开始搭建个人网站(7)nginx+uWSGI部署Django项目(下)
- vmware ubuntu linux tomcat Xshell Xftp 搭建网站后台——(七)项目发布,剧终!
- 【模拟开发环境】用JavaWeb项目搭建自己的网站
- Github搭建个人网站并上传个人项目
- OS-->使用GITHub搭建 个人(组织)网站 和 项目网站
- 夺命雷公狗ThinkPHP项目之----企业网站1之快速搭建后台
- 使用Eclipse搭建Maven项目(最近做个人网站,顺便记下来以防后面的项目要用)
- j2ee 简单网站搭建:(三)在搭建好的 spring maven web 项目中加入 mybatis 访问数据库
- 夺命雷公狗ThinkPHP项目之----企业网站3之后台栏目页的搭建(百度编辑器的引入)
- 公司网站,邮件,服务器搭建项目练习
- 自托管开源项目其二_搭建属于自己的RSS网站-Miniflux
- 系统学习MVC3+Linq搭建网站--项目文件结构介绍(3)
- .net core 2.0学习记录(一):搭建一个.Net Core网站项目
- 电影管理网站-第二章 API项目搭建
- 使用nodejs,express,mysql,Bootstrap开发采购招标网站(一)项目搭建
- 如何在局域网访问Tomcat项目(网站搭建过程中可能会遇到这个问题)
- 在Linux环境下快速搭建一个javaweb项目网站(阿里云ubuntu)
- 项目实战之中小网站的框架搭建过程
- 利用heroku搭建ruby网站项目