2018年3月

/etc/init.d/httpd restart #重启
/etc/init.d/httpd stop #停止
/etc/init.d/httpd start #开启

1、申请免费的ssl
目前可以免费申请的ssl证书的有以下的服务商
A、腾讯云 (TrustAsia Technologies, Inc.) 可免费一年 (具体看官网的ssl产品)
B、阿里云 DigiCert Inc(具体看官网的ssl产品)
C、Let's Encrypt(免费3个月,可自动续期)

申请成功后,会得到以下这种文件
范例1:阿里云forapache
58.jpg
范例2:腾讯云for all(apache Nginx iis)
40.jpg

2、下面是Apache配置教程

2-1 apache conf 下创建ssl目录及站点目录用于存放证书某站点或域名的证书文件,比如D:/Apache/conf/ssl/kinmor-com

2-2 将以上注册成功后的证书文件上传到该目录下:
举例如:
D:/Apache/conf/ssl/kinmor-com/1_root_bundle.crt
D:/Apache/conf/ssl/kinmor-com/2_www.kinmor.com.crt
D:/Apache/conf/ssl/kinmor-com/3_www.kinmor.com.key

2-3 配置apache的http.conf,
A、把LoadModule ssl_module modules/mod_ssl.so前面的#注释去掉————启用ssl
B、把Include conf/extra/httpd-vhosts.conf前面的#注释也去掉————启用虚拟目录域名绑定。
C、在Include conf/extra/httpd-ssl.conf的位置,默认是带#注释的,为不影响使用,我另外创建一个vhostssl.conf文件放在apache/conf/extra/下,保存。看下图:68.jpg

2-4 将以下代码贴到vhostssl.conf文件,具体的路径要进行修改,换成您的位置,保存

Listen 443
<VirtualHost *:443>
    DocumentRoot "D:\www\www.kinmor.com"
    ServerName www.kinmor.com
    ServerAlias www.kinmor.com
SSLEngine on
SSLProtocol TLSv1 TLSv1.1 TLSv1.2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLCertificateFile  "D:\Apache\conf\ssl\kinmor-com\public.pem" 
SSLCertificateKeyFile "D:\Apache\conf\ssl\kinmor-com\214272553820512.key"
SSLCertificateChainFile "D:\Apache\conf\ssl\kinmor-com\chain.pem"
  <Directory "D:\www\www.kinmor.com">
      Options FollowSymLinks ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all
      Require all granted
  </Directory>
</VirtualHost>

说明:我的项目路径为D:wwwwww.kinmor.com\

2-5 重启Apache

3、测试.

浏览器输入:https://www.kinmor.com 看到下面表示测试成功。
788.jpg

4、重定向 http:\ ☞ https:\
在.htaccess文件中添加以下内容

RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

下面粘贴thinkcmf下的.htacess文件

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
</IfModule>

基本环境:ffmpeg安装在usr/local/bin/ffmpeg
使用函数:exec

在检查exec在disble_functions没有禁用,safe_model也关闭了,ffmpeg也加入全局变量
在终端上测试命令没有问题,可php用exec执行就出现127,郁闷中。
127.jpg

<?php
exec("ffmpeg -version",$log,$ffmpeg_status);
echo $ffmpeg_status; //返回127
print_r($log); //返回空白
?>

猜测:全局变量的所有者和所有组可能和应用的用户不一致,linux本身的安全机制受影响,可能不允许这么执行外部的依赖程序命令。

假设:不用全局变量,直接找到该程序的安装路径,直接调用看是否可行?
/usr/local/bin/ 为ffmpeg安装的路径
测试效果:

<?php
exec("/usr/local/bin/ffmpeg -version",$log,$ffmpeg_status);
echo $ffmpeg_status; //返回0
print_r($log); //返回字符串
?>

总结:执行外部命令 /usr/local/bin/ exec可行 记之

1-确保环境已经部署SSL模块

//检查是否安装ssl
httpd -M | grep ssl
//安装mod和openssl
yum install openssl
yum install mod_ssl

2-检查和启动ssl

cd /etc/httpd/conf.d/

3-引入ssl配置,在http.conf去掉下面的注释
Include conf/extra/httpd-ssl.conf

4-虚拟vhost配置

<VirtualHost *:443>
DocumentRoot /home/www/wwwroot/zhibo
ServerName zhibo.kinmor.com:443
SetEnv no-gzip
SSLEngine on
SSLCertificateFile "/etc/letsencrypt/live/kinmor.com/fullchain.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/kinmor.com/privkey.pem"
    <Directory /home/www/wwwroot/zhibo>
        SetOutputFilter DEFLATE
        Options FollowSymLinks
        AllowOverride All
        Order Deny,Allow
        Require all granted
        DirectoryIndex index.php index.html index.htm
    </Directory>
</VirtualHost>

5-重启httpd

service httpd restart