标签 centos6 下的文章

centos6.6配置用户家目录为网站根目录

1.配置虚拟机

[webserver@webserver6602 ~]$ sudo vi /etc/nginx/conf.d/webserver.conf 
server {
    listen       80;
    server_name  webserver.com;

    #charset koi8-r;
    access_log  /var/log/nginx/webserver.access.log  main;
    error_log /var/log/nginx/webserver.error.log warn;
    root   /home/webserver/html;
    location / {
        #root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        #root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        #root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

2.打开selinux
参考:http://blog.csdn.net/qidizi/article/details/41291397

setsebool -P httpd_read_user_content 1  #只设置这个就好了
setsebool -P httpd_enable_homedirs 1 

3.设置文件权限

chmod o+x /home/webserver
chmod o+x /home/webserver/html

4.重启nginx就ok了

centos 6.6默认iptable规则

今天在自己电脑上新装了centos6.6虚拟机,然后装了nginx,没有进行任何其他设置,然后就发现只能在centos上面可以访问nginx,看了下iptable的规则

[root@centos6 ~]# iptables-save
# Generated by iptables-save v1.4.7 on Sun Jul 26 15:53:13 2015
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [5819:366868]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 
COMMIT
# Completed on Sun Jul 26 15:53:13 2015

看上去好像没有问题啊,默认策略也是接受,看到最后的两句,不明白是什么意思,搜了下原来是

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
# 这两条的意思是在INPUT表和FORWARD表中拒绝所有其他不符合上述任何一条规则的数据包。并且发送一条host prohibited的消息给被拒绝的主机。

记录下,参考http://zhidao.baidu.com/link?url=1bwvdaSb6sKL_FzefyzVFd5GYoZOE4LMNiSG6Oe4WTGQb4ygdzWXVAlitJqLqQcjG1Zwg_xC1_6-Iflwq69il_

centos6.6设置samba和nginx访问用户家目录

之前都是把服务器搭好,在用php输出一个phpinfo就算是搭建成功了,要搭的环境是要实际运行的,所以出现了一些问题,主要是selinux,虽说直接关掉selinux就可以,但是感觉还是开着好一点,于是。。。。
要共享的是test用户家目录家的www文件夹(/home/test/www)
1.环境都搭好之后,开始共享文件,因为是共享家目录,所以不需要改samba配置文件,增加一个samba用户

smbpasswd -a test
#下面需要设置下用户密码

设置selinux

setsebool -P samba_enable_home_dirs on

ok,可以共享了,进入共享目录,操作文件,没有问题,
2.然后设置nginx共享,可以参见另一篇文章http://blog.csdn.net/scchary/article/details/47017475
然后ok了
3.因为我是用的thinkphp,所以php会自己创建文件,这时候就不行了,权限是ok的,是selinux的问题

chcon -t httpd_sys_content_t -R /home/test/www

参考自:http://www.linuxidc.com/Linux/2012-04/58440.htm
ok
4.再就发现samba不能共享了,又是selinux

setsebool -P samba_export_all_ro on

好了
参考网址http://os.51cto.com/art/201204/332440.htm
5.再就发现thinkphp创建的文件所属组和用户都是 apache (我的php-fpm运行身份是apache:apache),我登陆samba的用户是test,不能操作那些生成的文件,于是想起了SGID

chmod g+x -R /home/test/www

ok

LINUX设置自定义服务(centos6.6)

安装了一个amoeba,这个并不是系统服务,要设置开机启动,于是就去修改/etc/rc.local文件,用了绝对路径,在命令行下测试是可以成功启动的,但是开机不生效,于是想把这个设置成系统的服务,之前没做过,记录下
1.照格式写shell

vi /etc/init.d/amoeba
#!/bin/bash
#
# auditd        This starts and stops auditd
#
# chkconfig: 2345 11 88
# description: This starts the Linux Auditing System Daemon, \
#              which collects security related events in a dedicated \
#              audit log. If this daemon is turned off, audit events \
#              will be sent to syslog.
#
#
######forjava
export JAVA_HOME=/usr/java/jdk1.6.0_45
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
#######

###amoeba
export AMOEBA_HOME=/usr/local/amoeba/
export PATH=$PATH:$AMOEBA_HOME/bin
#######
case "$1" in
start)
        echo "Starting amoeba"
        /usr/local/amoeba/bin/amoeba start &
        ;;

stop)
        echo "Stop amoeba"
        /usr/local/amoeba/bin/amoeba stop
        ;;
restart)
        echo "Stop amoeba..."
        /usr/local/amoeba/bin/amoeba stop
        echo "Starting amoeba"
        /usr/local/amoeba/bin/amoeba start &
        ;;
esac

再配置

chmod +x amoeba #给权限
chkconfig --add amoeba #添加到系统服务

ok

利用mysql的amoeba实现主从和读写分离

1.主从

主从数据库是通过mysql自带的功能完成的,mysql版本是5.7.7
主数据库:192.168.1.121
从数据库:192.168.1.122
统一主从数据的远程登陆账户密码,因为后面amoeba完成读写分离的需要这样
我就用root了,密码为123456
在主数据的配置文件的[mysqld]下面添加

#主数据库配置
log-bin=mysql-bin       #打开mysql二进制日志
server-id=1             #设置mysql_id主从不能相同,不能和其他的服务器相同
binlog-do-db=test       #设置二进制日志记录的库,多个数据库像这样复制一份就好了,所有数据库都需要记录,就去掉这一项
#binlog-do-db=test1        
binlog-ignore-db=mysql  #设置二进制日志不记录的库
sync_binlog=1

从数据库配置
在从数据库的配置文件的

#mysql主从配置 从数据库配置
log-bin=mysql-bin
server-id=2
replicate-do-db=test          #设置同步的库
replicate-ignore-db=mysql     #设置不同步的库
log-slave-updates             #同步后记录二进制日志
slave-skip-errors=all
sync_binlog=1
slave-net-timeout=60

在主数据库里面获得master的数据

mysql> show master status\G
*************************** 1. row ***************************
             File: mysql-bin.000002  #这个会用到
         Position: 913               #这个会用到
     Binlog_Do_DB: test
 Binlog_Ignore_DB: mysql
Executed_Gtid_Set: 
1 row in set (0.00 sec)

在从数据库里面设置主数据库

mysql>stop slave;
mysql>change master to master_host='192.168.1.121',master_user='root',
master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=913;
mysql>start slave;

在从数据库查看是否成功,标记的两个都是yes就是好了

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.121
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 375
               Relay_Log_File: 192-relay-bin.000004
                Relay_Log_Pos: 541
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes       #这个是yes
            Slave_SQL_Running: Yes       #这个是yes
              Replicate_Do_DB: test
          Replicate_Ignore_DB: mysql
...后面太长,省略了

我在这里碰到一个问题

mysql> show slave status\G;
*************************** 1. row ***************************
...前面太长省略
             Slave_IO_Running: No
...省略
                Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
...省略

因为我是直接复制的虚拟机,所以mysql的uuid相同了,把数据目录的auto.conf文件删除就ok了

2.读写分离

下载jdk我是下载地址
根据版本下载,我下载的是 jdk-6u45-linux-x64.bin
安装

安装
#mkdir/usr/java/
//新建一个文件夹,把安装包给拷贝到这个文件夹下面
#chmod755jdk-6u25-linux-i586.bin
//给文件授权#
./jdk-6u25-linux-i586.bin//解压文件
配置jdk环境变量
#vim/etc/profile
//打开文件
在文件最后添加如下内容
######forjava
export JAVA_HOME=/usr/java/jdk1.6.0_45
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
#######
#source/etc/profile//重新执行一遍(有必要)
=============================================================================
测试JDK和AMOEBA_HOME是否设置成功
#java-version
//查看jdk版本验证java环境变量是否配置成功
javaversion"1.6.0_45"

安装amoeba

下载Amoeba并安装
#mkdir/usr/local/amoeba///创建文件夹
#cd/usr/local/amoeba///打开说创建的文件夹
#wget
http://sourceforge.net/projects/amoeba/files/Amoeba%20for%20mysql/2.x/amoeba-mysql-binary-2.1.0-RC5.tar.gz/download
//下载Amoeba文件
#md5sumamoeba-mysql-binary-2.1.0-RC5.tar.gz//校验MD5一般不需要
44f6708652a46f28a95338f35f5d4083amoeba-mysql-binary-2.1.0-RC5.tar.gz
#chmod755amoeba-mysql-binary-2.1.0-RC5.tar.gz//文件授权
#tar-zxvfamoeba-mysql-binary-2.1.0-RC5.tar.gz/解压文件
配置Amoeba环境变量
#vim/etc/profile
//打开文件
在结尾添加如下内容###amoeba
export AMOEBA_HOME=/usr/local/amoeba/
export PATH=$PATH:$AMOEBA_HOME/bin#######

配置 AMOEBA配置文件
配置mysql服务器的信息

vi /usr/local/amoeba/conf/dbServers.xml

...这一部分不需要改省略掉...
 <dbServer name="abstractServer" abstractive="true">
                <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">
                        <property name="manager">${defaultManager}</property>
                        <property name="sendBufferSize">64</property>
                        <property name="receiveBufferSize">128</property>
                        #配置这部分的数据库服务器的mysql的账号和密码,端口
                        <!-- mysql port -->
                        <property name="port">3306</property>

                        <!-- mysql schema -->
                        <property name="schema">test</property>

                        <!-- mysql user -->
                        <property name="user">root</property>


                        <property name="password">123456</property>

                </factoryConfig>
...这一部分不需要改省略掉...
#以下面的格式设置好mysql服务器的ip,设置好别名,别名不能一样,在其他地方会用到
<dbServer name="Master"  parent="abstractServer">
               <factoryConfig>
                       <!-- mysql ip -->
                       <property name="ipAddress">192.168.1.121</property>
               </factoryConfig>
</dbServer>

<dbServer name="Server1"  parent="abstractServer">
        <factoryConfig>
                <!-- mysql ip -->
                <property name="ipAddress">192.168.1.122</property>
        </factoryConfig>
</dbServer>

<dbServer name="Server2"  parent="abstractServer">
        <factoryConfig>
                <!-- mysql ip -->
                <property name="ipAddress">192.168.1.123</property>
        </factoryConfig>
</dbServer>
#这个比较特殊,用作轮询
<dbServer name="multiPool" virtual="true">
       <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
               <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
               #这个属性设置成1,代表的就是轮询,
               <property name="loadbalance">1</property>
               <!-- Separated by commas,such as: server1,server2,server1 -->
                #这个选项里面填上面几个设置的名字,会依次轮询填进去的服务器
               <property name="poolNames">Server1,Server2</property>
       </poolConfig>
</dbServer>
...这一部分不需要改省略掉...

配置amoeba的信息

...这一部分不需要改省略掉...
#下面这部分设置连接amoeba的账号密码,通过mysql连接mysql的时候就填这里设置的账号的密码
<property name="authenticator">
        <bean class="com.meidusa.amoeba.mysql.server.MysqlClientAuthenticator">

                <property name="user">root</property>

                <property name="password">123456</property>

                <property name="filter">
                        <bean class="com.meidusa.amoeba.server.IPAccessController">
                                <property name="ipFile">${amoeba.home}/conf/access_list.conf</property>
                        </bean>
                </property>
        </bean>
</property>
...这一部分不需要改省略掉...
下面这部分就是设置读写分离和负载均衡的
<queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">
        <property name="ruleLoader">
                <bean class="com.meidusa.amoeba.route.TableRuleFileLoader">
                        <property name="ruleFile">${amoeba.home}/conf/rule.xml</property>
                        <property name="functionFile">${amoeba.home}/conf/ruleFunctionMap.xml</property>
                </bean>
        </property>
        <property name="sqlFunctionFile">${amoeba.home}/conf/functionMap.xml</property>
        <property name="LRUMapSize">1500</property>
        #默认连接的数据库
        <property name="defaultPool">Master</property>
        #DML操作的数据库,填主数据库就行了
        <property name="writePool">Master</property>
        #填设置了轮询的dbServer的名称
        <property name="readPool">multiPool</property>

        <property name="needParse">true</property>
</queryRouter>

这样就ok了,在这一步碰到问题

#amoeba start
The stack size specified is too small, Specify at least 160k
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

解决方法:

# vim amoeba
#修改58行的Xss参数:
DEFAULT_OPTS="-server -Xms1024m -Xmx1024m -Xss128k"
#修改为:
DEFAULT_OPTS="-server -Xms1024m -Xmx1024m -Xss256k"

参考:http://wenku.baidu.com/view/848d692e2e3f5727a4e96218.html?qq-pf-to=pcqq.c2c
http://blog.itpub.net/90618/viewspace-774894/