IIS下配置php运行环境

    在iis上配置php是一件很容易的事,只要稍作几部设置就可以完成iis整合php的设置!下面给大家介绍下iis下整合php的详细教程: 将PHP压缩包解压到某个位置,一般为 C:\PHP

    将php.ini-dist改名为php.ini,放到C:\windows目录下,注意php.ini上的权限,如果虚拟主机设置了权限去除了windows目录下的users,那么复制过去的php.ini是没有权限的,所有dll会无法加载

    php.ini中修改 extension_dir = "C:\php\ext" 设置PHP存放扩展的dll文件的路径 建立一个存放session的目录,比如为sessions

    在php.ini中修改 session.save_path = C:\php\sessions" 设置session存放在指定的这个目录 建立一个存放上传文件的临时目录,比如为temp(要求该目录的父目录有列文件夹的权限,否则也会有权限问题) 在php.ini中修改 upload_tmp_dir = "C:\PHP\temp" 给整个PHP目录users的读权限,给sessions目录和temp目录的users的读写权限 将output_buffering=Off改为output_buffering=On ,开启输出缓冲 开启后可以解决一些网站打开报错或打开空白的情况,并且不会对其他正常网站造成不良影响。

    开启常用的扩展,即去掉相应;extension=XXX.dll前面的分号 下面为常用扩展
    extension=php_curl.dll
    extension=php_gd2.dll ;图形处理用,比如图片缩放,水印
    extension=php_mbstring.dll ;phpmyadmin需要
    extension=php_mcrypt.dll
    extension=php_mhash.dll
    extension=php_mssql.dll ;sqlserver需要
    extension=php_mysql.dll ;mysql需要
    extension=php_mysqli.dll ;同上
    extension=php_pdo.dll
    extension=php_pdo_mssql.dll
    extension=php_pdo_mysql.dll
    extension=php_pdo_sqlite.dll
    IsapI方式:
    在IIS的web服务扩展里,添加一条扩展指向C:\php\php5isapi.dll文件,设置为允许
    在IIS的“网站--主目录--配置--应用程序扩展”里,添加.php的扩展名指向C:\php\php5isapi.dll(与CGI方式二选一,建议使用此方法) 给PHP目录加上users的读权限
    给整个PHP目录加上users的读权限(其实是需要加network service权限就可以),如果用ISAPI模式,是需要有这个权限的,CGI的不需要 使用此方式,c:\windows\php.ini文件必须有network service的读权限。
    CGI方式:
    在IIS的web服务扩展里,添加一条扩展指向C:\php\php-cgi.exe文件,设置为允许
    在IIS的“网站--主目录--配置--应用程序扩展”里,添加.php的扩展名指向d:\php\php-cgi.exe(与ISAPI方式二选一,不建议) 给PHP目录加上users的读权限
    php.ini里设置cgi.force_redirect = 0,这个值不设置时默认为1,用CGI必须设置为0 支持mysql 除了开启php_mysql.dll扩展外,还要将PHP目录下的libmysql.dll复制到c:\windows\system32下 支持MSSQL(可以不设置)
    除了开启php_mssql.dll扩展外,还要将ntwdblib.dll文件复制到c:\windows\system32下
    注意:PHP里自带的这个文件的版本不对,是连接不了的,要使用所连接的sql server安装目录下的ntwdblib.dll文件的版本。 2000数据库对dll文件版本有要求,2005的话,似乎用任意版本的dll都可以连。
    支持curl
    除了php.ini开启curl扩展外,还要将libeay32.dll, ssleay32.dll这两个文件放到system32文件夹下才可以
    支持mcrypt
    除了php.ini开启mcrypt扩展外,还要将libmcrypt.dll放到system32文件夹下才可以
    其他设置一般为默认不动,用户需要时再设置
    post_max_size = 8M 默认是8M
    upload_max_filesize = 2M 默认是2M
    开启全局变量
    register_globals = Off 默认不开启
    加大超时时间限制
    max_execution_time = 30 默认是30秒
    或者设置其他内容等
    按照以上的方法做完以后,如果可以打开php页面的话,那么说明你的iis下整合php配置成功了

mysql双机热备

    所谓的双机热备就是保证两个数据库的状态同步。其中一个数据库的操作会自动同步到另外一个数据库中去,保证两个数据库的数据一致。

    二:作用

    • 容灾切换,当一个数据库服务器宕机可以将连接切换到另一个数据库。
    • 负载均衡,做读写分离,数据库的读和写分摊到不同的数据库当中,减轻单个数据库服务器的压力

    三:原理

    大概介绍一下数据库是如何实现双机热备的。

    首先先说说主从同步概念,就是数据库读操作都放在主数据库上,一旦数据有变化,则从数据库将主数据库的数据变化同步过来,保证从数据库的数据与主数据库的数据一致。

    看下图

    在这里插入图片描述

    主数据库开启binlog记录数据库的数据变化情况,从数据库开启一条I/O thread不断的去读取主树据库的binlog,然后交由另一条SQL thread去执行相应的sql,将数据变化同步过来。

    因此主从同步要配置的内容就是:

    1. 开启主数据库的binlog。
    2. 创建一个用于同步数据的帐号,这个帐号有同步数据 (REPLICATION SLAVE) 的权限。
    3. 将主数据库的binlog位置和读取偏移量以及有读取binlog权限的帐号配置给从数据库。
    4. 开启从数据库的同步进程。

    以上四步完成了主从同步配置,而双机互备就是两台已经做主从同步的数据库角色调换再做一次主从同步即可。

    四:配置实现

    新建两个mysql容器

    主服务器 mysqltest1

    docker run --name mysqltest1 -v /data/test1/my.cnf:/etc/mysql/my.cnf -v /data/test1/mysql/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 -d 192.168.168.98:5000/mysql
    

    从服务器 mysqltest2

    docker run --name mysqltest2 -v /data/test2/my.cnf:/etc/mysql/my.cnf -v /data/test2/mysql/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123456 -p 3308:3306 -d 192.168.168.98:5000/mysql
    

    主服务器 mysqltest1 开启binlog。在配置文件中添加如下配置。

    [mysqld]
    server-id = 1
    log_bin = /var/lib/mysql/mysql-bin.log
    

    主服务器 mysqltest1 上创建一个专门用于主从同步的帐号添加同步数据的权限。

    Create user 'rep'@'%' identified by '123456' require ssl;
    grant replication slave on *.* to 'rep'@'%' identified by '123456';
    flush privileges;
    

    查看主服务器 mysqltest1 的binlog位置,后面配置从服务器要用到。

    mysql> show master status;
    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000004 |      840 |              |                  |                   |
    +------------------+----------+--------------+------------------+-------------------+
    

    登录从服务器 mysqltest2 配置同步参数。

    change master to master_host="10.18.139.81", master_port=3307, master_user="rep", master_password="123456", master_log_file="mysql-bin.000004", master_log_pos=840;
    

    各项参数解释如下

    change master to
    	master_host="10.18.139.81:3307",     ---->主服务器的地址
    	master_user="rep",          ---->主服务器的帐号,用刚刚创建用于同步的帐号
    	master_password="123456",   ---->主服务器的帐号对应的密码
    	master_log_file="mysql-bin.000004", ----->主服务器中通过show master获取的binlog文件
    	master_log_pos="840";             ----->主服务器中通过show master获取的log文件位置
    

    最后,启动从服务器 mysqltest2的同步进程。

    start slave;  
    

    检查进程启动的状态。

    show slave status \G
    

    查看这两项均为Yes,则启动成功。

     Slave_IO_Running: Yes
     Slave_SQL_Running: Yes
    

    以上完成主从备份,也就是从服务器可以备份主服务器的数据。

    接下来将两台服务器的角色调换一下,mysqltest2 作为主服务器,mysqltest1作为从服务器重新配置一遍,即可完成两个数据库相互备份。

    mysqltest2开启binlog,在my.cnf中添加如下配置。

     log_bin = /var/lib/mysql/mysql-bin.log 
    

    mysqltest2中创建用于备份数据的账户。

     Create user 'rep'@'%' identified by '123456';
     grant replication slave on *.* to 'rep'@'%' identified by '123456';
     flush privileges;  
    

    查看 mysqltest2 的binlog位置。

    mysql> show master status;
     +------------------+----------+--------------+------------------+-------------------+
     | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
     +------------------+----------+--------------+------------------+-------------------+
     | mysql-bin.000004 |      824 |              |                  |                   |
     +------------------+----------+--------------+------------------+-------------------+  
    

    在mysqltest1中添加同步的相关配置。

    change master to master_host="10.18.139.81", master_port=3308, master_user="rep", master_password="123456", master_log_file="mysql-bin.000004", master_log_pos=824; 
    

    启动主从同步进程。

    start slave; 
    

    至此,主从热备的配置完成。

阅读全文评论转载

mysql双机热备

123