Apache是Apache软件基金会的一个开放源码的网页服务器,支持Perl,Python,和PHP等脚本语言,Apache和PHP是经典的搭配方式,Apache 一方面处理客户端的http请求,另一方面通过mod_php5.so模块来调用php引擎处理PHP文件,然后把处理结果返回给Apache。在之前的文章介绍过PHP运行原理,这里再贴下运行图:
从上图可以看到Apache是通过SAPI来调用PHP的。
Apache环境下PHP应用部署在生产环境下部署PHP要考虑两点,一个是安全性,一个是稳定性。安全性有很多方面,有代码层面的,有服务器配置层面的,今天我们讲服务器配置方面安全性相关问题;稳定性有很很多方面,今天我们讲服务器如何根据服务器的性能来配置Apache和PHP,防止机器过载。
在Apache方式下,主要的配置对象是http.conf和php.ini两个文件。
Apache的安装可以通过上节课的一键安装脚本,软件默认的安装目录是/usr/local系统目录,建议修改安装脚本,把安装目录设置为/opt下,也可以修改MySQL的数据目录和Apache的www根目录。
MySQL的默认数据目录是在/data/mysql下,Apache的www根目录在/data/wwwroot下,日志目录在/data/wwwlogs下,如果有外挂磁盘(比如在云服务器购买的云盘),需要先把磁盘挂载到/data目录下。
http.conf企业级配置:这里以部署thinkphp5、Apache 2.4.43为例,需要注意的几点如下;一、禁止一般用户访问后台特定目录
假设我们的网站: http://www.aikanshe.com/admin 是我们的后台管理目录,我不允许一些非法用户进行访问,那么我就必须设定对该目录访问是需要验证的
1、打开apache的配置文件httpd.conf,在文件末尾加入如下代码:
"/data/wwwroot/tp5/public/admin">authtype basicauthname "Private"authuserfile /data/wwwroot/tp5/public/admin/admin.dat //保存认证信息的文件require user feng //‘feng’需要认证的用户名Options Indexes FollowSymlinks MultiViewsAllowOverride None</Directory>
2、运行如下命令进行密码的设置:
htpasswd -c /data/wwwroot/tp5/public/admin/admin.dat feng
4、设置完后重起apache:
service httpd restart
二、禁止apache显示目录文件列表
比如我们想禁止显示“/data/wwwroot/tp5/”目录文件列表
Options FollowSymLinks AllowOverride None
三、Listen指令具体化
让Apache监听具体的IP地址,"Listen 80”指令应将其改变为 "Listen 域名地址或者IP地址:80”,如果想监听所有地址,把地址改成0.0.0.0;
四、隐藏web服务器请求文件头
apache的配置文件加上如下两行:
ServerTokens ProductOnlyServerSignature Off
五、防止.htaccess和.htpasswd文件被Web客户查看
order allow,denyDeny from all
六、如果有多个域名,在/usr/local/apache/conf/vhost/目录下单独建立配置文件。
php.ini企业级配置:一、日志配置禁止显示警告和错误信息
error_reporting = E_ALLdisplay_errors = Offlog_errors = Onerror_log = /usr/local/apache/logs/php_error.log
二、性能配置
打开opcache,具体参考之前的性能优化文章
开启zlib压缩
zlib.output_compression = Onzlib.output_compression_level = 6
三、关闭暴露PHP配置
expose_php = Off
四、启用PHP安全模式
safe_mode = Onsafe_mode_gid = Off
五、关闭注册全局变量
register_globals = Off
六、关闭远程文件操作
allow_url_fopen = Offallow_url_include=Off
七、打开引号转义
magic_quotes_gpc = On
八、禁止动态加载模块
enable_dl=off
九、禁止部分函数和类
disable_functions = phpinfo,eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen
今日习题
来看看本节课的习题:根据以上注意点,查看通过一键安装脚本安装后的Apache和PHP配置文件的配置项是否符合要求。参考答案将在下一节最后给出。好了,最后我们来回顾下上节课的习题:根据官方文档搭建一个websocket服务器。
官方快速搭建websocket服务器的文档地址为:
https://wiki.swoole.com/#/start/start_ws_server
浏览器web客户端测试工具:
http://www.websocket-test.com/
通过上节课安装完centos虚拟机后,如果ping不通百度网址,这个时候需要修改网卡配置文件,按照截图修改对应的地方: 然后通过ifconfig查看虚拟系统的IP地址: 然后在websocket地址栏那填写虚拟机的IP即可:
ws://192.168.75.128:9502
出现如下界面表示连接成功: 也可以通过浏览器开发者工具查看和服务器的数据交互: 本节课程就到这,下节课我们讲Nginx环境下部署PHP应用,下一节课再见。
如果您觉得文章对您有所帮助,请点“在看”以资鼓励或者分享给身边的小伙伴!
学习交流QQ群:904092583关注我们,学习全栈开发