Yii2 – Mongodb的安装和配置 mongo

mongodb官方安装文档:https://www.mongodb.com/download-center

下面是centos环境安装mongodb3.2的步骤

1.

sudo rpm --import https://www.mongodb.org/static/pgp/server-3.2.asc
touch /etc/yum.repos.d/mongodb-org-3.2.repo
vim /etc/yum.repos.d/mongodb-org-3.2.repo  
添加内容如下:  
[mongodb-org-3.2]  
name=MongoDB Repository  
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/  
gpgcheck=1  
enabled=1

 

sudo yum install -y mongodb-org

2. vim /etc/selinux/config

SELINUX=disabled

3. mongodb 安装完成,可以启动mongodb了

sudo service mongod start

当然,我上面配置的是一个简单的mongodb,没有配置复制集和分片

安全ip连接设置:vim /etc/mongod.conf

net:
  port: 27017
  bindIp: 127.0.0.1

port代表开放的访问端口,bindIp这个是一个安全ip配置,允许那些ip连接mongodb,如果设置成bind_ip = 0.0.0.0,代表任意ip,建议只写连接的ip,如果是本机,就填写127.0.0.1即可。

这个是一个安全设置,线上系统一定要注意,iptables设置,只允许部分ip访问该端口,其他的pass掉,而且mongodb也要设置。

另外,对于线上系统,最好是使用账号密码的方式连接,进一步增强安全性。

 

4.安装mongodb的php扩展 ext-mongodb

注意:Fecshop 支持php7,需要安装ext-mongodb扩展,注意,这是两个扩展,ext-mongo扩展只能在php5中使用, ext-mongodb可以在php5和php7中使用,php7不能使用ext-mongo扩展。

 

4.1安装php的ext-mongodb扩展(兼容php7,fecshop需要安装ext-mongodb扩展,而不是ext-mongo扩展,ext-mongo只能在php5中使用,ext-mongodb可以在php5,php7,VVMH中使用,这里只安装ext-mongodb扩展

https://pecl.php.net/package/mongodb下载mongodb的安装包,我的安装步骤如下:

wget https://pecl.php.net/get/mongodb-1.2.5.tgz
tar zxvf mongodb-1.2.5.tgz
cd mongodb-1.2.5
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

*php.ini中加入:

extension=mongodb.so

 

重启php

对于mongodb的GUI,不要使用rockmongo了,现在有更好的工具:

你可以使用 RoboMongo GUI工具连接mongodb,下载地址 , 因为mongodb默认设置无密码,只允许127.0.0.1登录, 因此,可以使用RoboMongo的ssh方式登录,填写您的主机的ssh信息即可登录。(robomongo支持很多方式连接mongodb)

5.安装yii2-mongodb的扩展(如果您在安装fecshop,下面的步骤不需要操作)

插件地址:https://github.com/yiisoft/yii2-mongodb

在yii2的根目录下面运行:(已经安装composer)

composer require --prefer-dist yiisoft/yii2-mongodb

完成后,mongodb的yii2扩展安装完成

6.配置

'mongodb' => [
            'class' => 'yii\mongodb\Connection',
      //'class' => 'backend\models\core\mongodb\Mconnection',
      # 有账户的配置
            //'dsn' => 'mongodb://demofancyecommerce:fdaVBDFS#fdfdtyg423DF23#$@localhost:27017/demofancyecommerce',
      # 无账户的配置
      'dsn' => 'mongodb://127.0.0.1:27017/market',
      //'dsn' => 'mongodb://10.10.10.252:10001/erp,mongodb://10.10.10.252:10002/erp,mongodb://10.10.10.252:10004/erp?replicaSet=terry&readPreference=primaryPreferred',
      
        ],

然后就可以在yii2中使用mongodb了

yii2 – redis 配置

  1. 安装redis, 下面是2.8,注意,redis版本一定要高,2.2.7一下的版本是不行的,不支持php-redis,建议安装2.8+的版本
wget http://download.redis.io/releases/redis-3.2.9.tar.gz  
tar xzf redis-3.2.9.tar.gz  
cd redis-3.2.9  
make

2.6.14 这个版本有点老,大家可去找新的redis下载

cd src  
cp redis-server /usr/local/bin/  
cp redis-cli /usr/local/bin/

 

mkdir /etc/redis  
mkdir /var/redis  
mkdir /var/redis/6379

 

cd ..  
cp utils/redis_init_script /etc/init.d/redis_6379  
cp redis.conf /etc/redis/6379.conf

 

/etc/init.d/redis_6379 start

vim /etc/redis/6379.conf ,找到如下的代码部分,修改

daemonize to yes  
pidfile to /var/run/redis_6379.pid  
logfile to /var/log/redis_6379.log  
dir to /var/redis/6379  
maxmemory 268435456

maxmemory 这里设置的是256mb,您可以按照您的配置自己设置。

设置开机启动:vim /etc/rc.d/rc.local,添加下面的代码

/etc/init.d/redis_6379 start

1.2 (可选操作)对于redis的磁盘存储

redis有几种内存的数据同步到磁盘的操作,详细可以参看文章:https://www.cnblogs.com/datang6777/p/7056272.html

我们选择的是:Append-only file, vim /etc/redis/6379.conf

appendonly yes      #启用aof持久化方式

appendfsync everysec     #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐

auto-aof-rewrite-percentage 200   #自动的bgrewriteaof,aof文件的大小超过基准百分之多少后触发bgrewriteaof。默认这个值设置为100,意味着当前aof是基准大小的两倍的时候触发bgrewriteaof。把它设置为0可以禁用自动触发的功能。
auto-aof-rewrite-min-size 128mb     #当前aof文件大于多少字节后才触发。避免在aof较小的时候无谓行为。默认大小为64mb。

#  然后就是触发检查的主逻辑,serverCron时间事件中每次都会检查现有状态和参数来判断是否需要启动bgrewriteaof。
#  如果aof文件增长百分率growth大于auto_aofrewrite_perc,则自动的触发后一个bgrewriteaof。

保存,重启redis

/etc/init.d/redis_6379 stop
/etc/init.d/redis_6379 start

 

2.安装redis的扩展。

yum install git
git clone git://github.com/owlient/phpredis
cd phpredis
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

如果上述出现报错,可以尝试用另外一个源:

git clone git://github.com/nicolasff/phpredis

php.ini中添加:

extension=redis.so

 

3.yii2 redis扩展的安装,以及配置:

在配置好的yii2根目录下面执行(您已经安装了composer)

composer require --prefer-dist yiisoft/yii2-redis

等待片刻就可以安装好yii2 的 redis 扩展

 

4.yii2中redis的配置

首先基于安全考虑,我们需要给redis设置密码,除非,您的redis端口关闭。

vim /etc/redis/6379.conf

找到行,把前面#去掉,后面加redis的密码

requirepass  rds423fsadD

重启redis就可以了。

/etc/init.d/redis_6379 stop  
/etc/init.d/redis_6379 start

这样redis密码验证就有了。

yii2的配置如下:

'redis' => [
            'class' => 'yii\redis\Connection',
            'hostname' => '127.0.0.1',
            'port' => 6379,
            'database' => 1,
      //'unixSocket' => '/var/run/redis/redis.sock',
      'password'  => 'rds423fsadD',
      // 'unixsocket' => '/var/run/redis/redis.sock',
    //	'unixSocket' => '/tmp/redis.sock',
        ],

重启redis , 这里  yii2就配置好redis了

5.redis的使用:刷新缓存:

[root@E3-1230v2-829 catalog]# redis-cli  
127.0.0.1:6379> auth rds!23v3cv3#ds  
OK  
127.0.0.1:6379> flushall  
OK  
127.0.0.1:6379>

redis-cli flushall  会报错(需要按照上面的步骤登录)

 

6.带有密码的redis,定时脚本清空缓存:

新建/www/script/redis_reflush_all.sh,添加如下内容

/usr/local/bin/redis-cli -a 'rds!2016!FDR' flushall

添加到cron中,   crontab -e,添加如下内容,保存

30 18 * * *  /bin/bash  /www/web/intosmile.com/shell/flushall.sh

就会定时清空redis的内容了

 

7. yii2中配置session 和 cache 使用redis

<?php
return [
    'components' => [
       
    'session' => [
      //'class' => 'yii\mongodb\Session',
      'class' => 'yii\redis\Session',
      //'db' => 'mongodb',
      //'sessionCollection' => 'session',
      'timeout' => 6000,
    ],
    
    'cache' => [
            'class' => 'yii\redis\Cache',
      //'class' => 'yii\caching\FileCache',  
      'keyPrefix' => 'rediscache-##$fdas5ygjD',
        ],

这样cache 就可以使用redis 了。

Linux php 扩展安装 mongo ,redis ,soap,imap,pdo_mysql,oauth

  1. 安装mongodb 参看文章:

Yii2 – Mongodb的安装和配置 mongo

2.安装redis

yum install git
git clone git://github.com/owlient/phpredis  
cd phpredis 
/usr/local/php/bin/phpize  
./configure --with-php-config=/usr/local/php/bin/php-config  
make && make install

如果上述出现报错,可以尝试用另外一个源:

git clone git://github.com/nicolasff/phpredis

php.ini中添加:

extension=redis.so

3.安装php  soap扩展

cd php-5.4.34/ext/soap
/usr/local/php/bin/phpize 
./configure -with-php-config=/usr/local/php/bin/php-config -enable-soap
make  
make install

php.ini加入:

extension=soap.so

4.安装imap

yum -y install krb5-devel libc-client libc-client-devel   
ln -sv /usr/lib64/libc-client.so /usr/lib/libc-client.so  
cd php-5.4.34/ext/imap  
/usr/local/php/bin/phpize  
./configure --with-php-config=/usr/local/php/bin/php-config --with-imap=/usr/lib64 --with-imap-ssl --with-kerberos  
make && make install  
vim /etc/php.ini  
extension=imap.so

5.安装 linux  php pdo_mysql 扩展

ln -s /usr/local/mysql/include/* /usr/local/include/  
wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz  
tar zxvf PDO_MYSQL-1.0.2.tgz  
cd PDO_MYSQL-1.0.2  
/usr/local/php/bin/phpize  
./configure -with-php-config=/usr/local/php/bin/php-config -with-pdo-mysql=/usr/local/mysql -with-mysql=/usr/local/mysql/  
  
make  
make install
extension=pdo_mysql.so

6.安装oauth扩展

wget http://pecl.php.net/get/oauth-1.1.0.tgz  
tar -zxf oauth-1.1.0.tgz && cd oauth-1.1.0  
/usr/local/php/bin/phpize  
./configure --with-php-config=/usr/local/php/bin/php-config  
make&&make install  
vim /etc/php.ini  
添加  
extension=oauth.so

OK,完毕完成。

Linux – 安装nginx – 搭配YII2环境

我们在开发和测试环境,需要为yii2搭配环境,这里说的是安装nginx

1.安装脚本:

wget nginx.org/download/nginx-1.11.13.tar.gz  
tar zxvf nginx-1.11.13.tar.gz  
cd nginx-1.11.13  
./configure --with-http_ssl_module  --with-http_v2_module
make && make install

 

【 题外话:

–with-http_v2_module 配置代表开启http2模块,您可以通过下面的方式设置http2

listen 443 ssl http2;

可以通过下面的链接找到工具测试是否开启http2:https://www.kejianet.cn/open-http2/

题外话:】

2.启动脚本:

touch /etc/init.d/nginx
vim /etc/init.d/nginx

加入代码,wq保存

#!/bin/bash  
# nginx Startup script for the Nginx HTTP Server  
# it is v.0.0.2 version.  
# chkconfig: - 85 15  
# description: Nginx is a high-performance web and proxy server.  
#              It has a lot of features, but it's not for everyone.  
# processname: nginx  
# pidfile: /var/run/nginx.pid  
# config: /usr/local/nginx/conf/nginx.conf  
nginxd=/usr/local/nginx/sbin/nginx  
nginx_config=/usr/local/nginx/conf/nginx.conf  
nginx_pid=/var/run/nginx.pid  
RETVAL=0  
prog="nginx"  
# Source function library.  
. /etc/rc.d/init.d/functions  
# Source networking configuration.  
. /etc/sysconfig/network  
# Check that networking is up.  
[ ${NETWORKING} = "no" ] && exit 0  
[ -x $nginxd ] || exit 0  
# Start nginx daemons functions.  
start() {  
if [ -e $nginx_pid ];then  
   echo "nginx already running...."  
   exit 1  
fi  
   echo -n $"Starting $prog: "  
   daemon $nginxd -c ${nginx_config}  
   RETVAL=$?  
   echo  
   [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx  
   return $RETVAL  
}  
# Stop nginx daemons functions.  
stop() {  
        echo -n $"Stopping $prog: "  
        killproc $nginxd  
        RETVAL=$?  
        echo  
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid  
}  
# reload nginx service functions.  
reload() {  
    echo -n $"Reloading $prog: "  
    #kill -HUP `cat ${nginx_pid}`  
    killproc $nginxd -HUP  
    RETVAL=$?  
    echo  
}  
# See how we were called.  
case "$1" in  
start)  
        start  
        ;;  
stop)  
        stop  
        ;;  
reload)  
        reload  
        ;;  
restart)  
        stop  
        start  
        ;;  
status)  
        status $prog  
        RETVAL=$?  
        ;;  
*)  
        echo $"Usage: $prog {start|stop|restart|reload|status|help}"  
        exit 1  
esac  
exit $RETVAL  

3.添加自启动

vim /etc/rc.d/rc.local
添加:
/etc/init.d/nginx start

添加nginx用户:

groupadd nginx  
useradd -g nginx nginx

 

然后设置权限:

chmod 755 /etc/init.d/nginx

4.启动nginx

/etc/init.d/nginx start

到这里就启动完成ngxin,我们需要配置nginx

5.配置nginx

添加文件地址/www/web

mkdir -p /www/web

添加log文件:

mkdir /var/log/nginx  
touch /var/log/nginx/error.log  
chmod 777 -R /var/log/nginx/error.log

添加nginx 文件access.log和error.log

mkdir /www/web_logs  
touch /www/web_logs/access.log  
chmod 777 /www/web_logs/access.log  
touch /www/web_logs/error.log  
chmod 777 /www/web_logs/error.log

nginx的配置如下:

/usr/local/nginx/conf/nginx.conf,代码如下:

user  nginx nginx;
worker_processes  4;

error_log  /var/log/nginx/error.log warn;
pid        /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 65535;

events {
    use epoll;
    worker_connections  65535;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 8m;
#    limit_conn_zone $binary_remote_addr zone=one:32k;

    sendfile        on;
    tcp_nopush     on;
  

    keepalive_timeout  120;
    tcp_nodelay on;
   
    fastcgi_buffers 8 128k;
    fastcgi_connect_timeout 9900s;
    fastcgi_send_timeout 9900s;
    fastcgi_read_timeout 9900s;

    gzip  on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 2;
    gzip_types       text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

    log_format  wwwlogs  '$remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';
    
    include conf.d/*.conf;
}

/usr/local/nginx/conf/none.conf,代码如下:

location / {
        index index.html index.php; ## Allow a static html file to be shown first
        try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler
        expires 30d; ## Assume all files are cachable
#		rewrite ^/$ /index.php last;
#        rewrite ^/(?!index\.php|robots\.txt|static)(.*)$ /index.php/$1 last;
    }

    ## These locations would be hidden by .htaccess normally
    location /app/                { deny all; }
    location /includes/           { deny all; }
    location /lib/                { deny all; }
    location /media/downloadable/ { deny all; }
    location /pkginfo/            { deny all; }
    location /report/config.xml   { deny all; }
    location /var/                { deny all; }
    location /var/email/ {allow all;}
    location /var/export/ { ## Allow admins only to view export folder
        auth_basic           "Restricted"; ## Message shown in login window
        auth_basic_user_file htpasswd; ## See /etc/nginx/htpassword
        autoindex            on;
    }
      location  /. { ## Disable .htaccess and other hidden files
        return 404;
    }

    location @handler { ## Magento uses a common front handler
        rewrite / /index.php;
    }

    location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler
        rewrite ^(.*.php)/ $1 last;
    }

 

/usr/local/nginx/conf/conf.d/default.conf  这个文件是网站内容的配置。譬如如下:

server {
    listen       1000;
    listen 443 ssl;
    
    server_name 192.168.220.100;
    root  /www/web/datacenter/datacenter_1000/appadmin/web;
    server_tokens off;
        include none.conf;
        index index.php;
        access_log /www/web_logs/access.log wwwlogs;
        error_log  /www/web_logs/error.log  notice;
        location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                include fcgi.conf;
        }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
                expires      30d;
        }

        location ~ .*\.(js|css)?$ {
                expires      12h;
        }
        
    location ~ /.svn/ {
                deny all;
        }

}

上面的意思为:

listen 代表监听的端口,线上都是填写80,80是默认端口,我们访问的网站,默认都是80端口

server_name  填写对应的IP,或者域名

root 代表上面访问IP或者域名,网站的根目录

填写完成上面的后,保存,退出。重启nginx

/etc/init.d/nginx restart

6.新建文件:

mkdir -p  /www/web/datacenter/datacenter_1000/appadmin/web
touch  /www/web/datacenter/datacenter_1000/appadmin/web/index.php
vim /www/web/datacenter/datacenter_1000/appadmin/web/index.php

添加代码

<?php
echo phpinfo();
?>

访问配置的nginx的域名或者IP就可以看到页面了。

7. nginx  php 隐藏版本号

vi /usr/local/nginx/conf/nginx.conf
#在http{}中加入
server_tokens off;

 

第二歩:

 

vi /usr/local/nginx/conf/fastcgi_params
#将里面的
#fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
#修改为:
fastcgi_param SERVER_SOFTWARE nginx;

 

 

隐藏PHP版本号

 

vi php.ini

#找到:

#expose_php = On;

#修改为:

expose_php = Off;

 

8nginx日志切割

设置日志格式及路径:

全局格式设置 :nginx.conf

 

log_format  wwwlogs  '$remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';

access_log /www/web_logs/access.log wwwlogs;

error_log  /www/web_logs/error.log  notice;

新建文件 /cron/nginx_spilit.sh

#!/bin/bash  
log_files_path="/www/web_logs/"  
log_files_dir=${log_files_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")  
log_files_name=(access access error error)  
nginx_sbin="$/usr.local/nginx/sbin/nginx "  
save_days=60  
mkdir -p $log_files_dir  
log_files_num=${#log_files_name[@]}  
for((i=0;i<$log_files_num;i++));do  
mv ${log_files_path}${log_files_name[i]}.log ${log_files_dir}/${log_files_name[i]}_$(date -d "yesterday" +"%Y%m%d").log  
done  
find $log_files_path -mtime +$save_days -exec rm -rf {} \;  
$nginx_sbin -s reload

 

crontab -e
00 00 * * * /bin/bash /cron/nginx_spilit.sh

 

 

 

 

 

Linux 安装php 5.4 – yii2 环境

对于线上环境,一般使用linux,这里讲述如何在linux下面安装php 5.4

  1. yum 安装基础
yum  install ntp vim-enhanced gcc gcc-c++ gcc-g77 flex bison autoconf automake glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel libtool* zlib-devel libxml2-devel libjpeg-devel libpng-devel libtiff-devel fontconfig-devel freetype-devel libXpm-devel gettext-devel curl curl-devel pam-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers gzip  make bzip2bzip2-devel pcre-devel wget ncurses-devel cmake make perl

 

yum -y install gcc automake autoconf libtool make   gcc-c++ glibc  libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel lib

2.安装libmcrypt

libmcrypt下载地址:http://download.csdn.net/detail/terry_water/6974153

当然,您可以自己去官网下载

安装:libmcrypt  
tar -zxvf libmcrypt-2.5.7.tar.gz  
cd libmcrypt-2.5.7  
./configure  
make  
make install

下载完成后,按照上面的步骤安装完libmcrypt,就可以安装php了

3.安装php

wget http://cn2.php.net/distributions/php-5.4.34.tar.gz  
tar zvxf php-5.4.34.tar.gz  
cd php-5.4.34  
./configure --prefix=/usr/local/php --disable-fileinfo   --enable-fpm --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-openssl --with-zlib --with-curl --enable-ftp --with-gd --with-xmlrpc  --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-gd-native-ttf --enable-mbstring --with-mcrypt=/usr/local/libmcrypt --enable-zip --with-mysql=/usr/local/mysql --without-pear  --enable-bcmath 
make  
make install

如果上面的下载地址不能下载,自行 去官网下载

复制php.ini到配置路径,上面我们配置的是/etc路径

cp php.ini-development /etc/php.ini

4.设置用户 php-fpm

cd /usr/local/php  
cp etc/php-fpm.conf.default etc/php-fpm.conf  
vi etc/php-fpm.conf

搜索nobody ,修改成如下

user = www-data  
group = www-data

添加www-data用户:

groupadd www-data  
useradd -g www-data www-data

5.配置php-fpm

cp -f /tools/php-5.4.34/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

6.设置启动,开机启动

chmod 755 /etc/init.d/php-fpm   
/etc/init.d/php-fpm start   
/sbin/chkconfig --add php-fpm (添加到开机服务列表)   
/sbin/chkconfig php-fpm on

php-fpm的启动、停止和重启:

/etc/init.d/php-fpm start   
/etc/init.d/php-fpm stop  
/etc/init.d/php-fpm reload

7.到此php的安装就完成了,当然,后续需要安装一些php的扩展。

执行

which php

,查看你的环境中是否已经有php,有的话删除掉,直到找不到php。

然后把当前安装的php设置为php命令:

ln -s /usr/local/php/bin/php  /usr/bin/php

这样命令行里面的 php -m ,执行的就是 /usr/local/php/bin/php