apache http server 停止工作_全栈开发之PHP开发第二十九讲PHP应用部署Apache

课程大纲 b38788852ede4ed5af7d461829cae996.png        前面的课程都是讲PHP的应用开发,开发完后怎么部署应用呢?我们这里介绍三种应用部署方式:Apache、Nginx、原生部署三种方式,均按照生产环境下的部署标准介绍。Apache f69e3800b08cfc1616bd815866745e67.png

Apache是Apache软件基金会的一个开放源码的网页服务器,支持Perl,Python,和PHP等脚本语言,Apache和PHP是经典的搭配方式,Apache 一方面处理客户端的http请求,另一方面通过mod_php5.so模块来调用php引擎处理PHP文件,然后把处理结果返回给Apache。在之前的文章介绍过PHP运行原理,这里再贴下运行图:

e92763f6b667fe524747579b32b9cd0a.png

从上图可以看到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
54c1ba9da82fff137ab4a38c7c050f4c.png 54c1ba9da82fff137ab4a38c7c050f4c.png 1c52d95395bff22299dcfff25407efb8.png今日习题 来看看本节课的习题:根据以上注意点,查看通过一键安装脚本安装后的Apache和PHP配置文件的配置项是否符合要求。
参考答案将在下一节最后给出。好了,最后我们来回顾下上节课的习题:根据官方文档搭建一个websocket服务器。
官方快速搭建websocket服务器的文档地址为:
https://wiki.swoole.com/#/start/start_ws_server
浏览器web客户端测试工具:
http://www.websocket-test.com/
通过上节课安装完centos虚拟机后,如果ping不通百度网址,这个时候需要修改网卡配置文件,按照截图修改对应的地方:

3a82c8af2036833deb5a49a7d8ab932e.png

然后通过ifconfig查看虚拟系统的IP地址:

5ebdaf30b97f5e9910080784435c16c6.png

然后在websocket地址栏那填写虚拟机的IP即可:
ws://192.168.75.128:9502
出现如下界面表示连接成功:

6ede53f312498360764b0821798306ba.png

也可以通过浏览器开发者工具查看和服务器的数据交互:

eb6bf6602ec2b1b3ed322c7917dcf852.png

本节课程就到这,下节课我们讲Nginx环境下部署PHP应用,下一节课再见。

如果您觉得文章对您有所帮助,请点“在看”以资鼓励或者分享给身边的小伙伴!

d1d1dfbf1dd8793d848755469b19c51a.png 学习交流QQ群:904092583关注我们,学习全栈开发
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值