OT博客

当前位置:首页 > 代码教程 > 详情
低配置服务器PHP+MYSQL环境配置优化指南
分类:代码教程 时间:2020-5-22 围观:100

一、服务器操作系统选择
问:PHP+MYSQL环境选择Windows Server好,还是Linux好?

答:其实就服务器的操作系统而言,没有最好,只有最合适。如果自己熟悉什么系统,就用什么系统,只要优化配置得当,性能都不错。如果服务器操作系统都不熟悉,那就用Linux来搭建PHP+MYSQL环境吧,反正是需要学习或者是找服务商代配置。毕竟同一台机器,Linux上的PHP性能要比Windows高,这点是可以肯定的,但优化出色的Windows服务器也一定会比没做什么优化处理的Linux服务器性能强。

问:Linux服务器应该选用什么发行版本?CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin/Aliyun/Amazon/Mint Linux?

答:还是那个熟悉原则。不过都不熟悉的新手,建议用CentOS吧。由于CentOS源于 Red Hat 企业级 Linux(RHEL)的源代码,依照开放源代码规定释出的源代码所编译而成。由于CentOS开源特性,选择CentOS可以降低成本,同时又能够享受RHEL的服务支持。

问:服务器用CentOS7还是CentOS6?

CentOS7是在CentOS6基础上发布的新版本,与之前的版本相比,主要的更新包括:内核更新到3.10.0、支持Linux容器、LVM快照支持ext4和XFS、转用systemd、firewalld和GRUB2、XFS作为缺省文件系统、支持PTPv2、支持40G 以太网卡、在兼容的硬件上支持以UEFI安全启动模式安装,这其中最令人瞩目的新特性就是支持Docker技术。作为目前流行的应用虚拟化技术之一,Docker能够将应用程序与系统完全隔离,让其在系统之间实现迁移而不需要停机,提高了应用程序的移动性和灵活性。CentOS7在内核层面支持Docker容器技术,可以提高Docker稳定性和可靠性。如果以上特性都和要部署的应用没关系,而且服务器配置较低的话,那就用CentOS6吧。至于小版本号,越新越好,毕竟小版本一般是维护版本,修复各种BUG之类的。

问:Web 服务器用Apache还是Nginx?

现在 Nginx 才是 Web 服务器的首选。1、Nginx 静态处理性能比 Apache 高 3倍以上;2、Nginx轻量级,同样起web服务,比apache占用更少的内存及资源 ;3、最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程。

二、PHP+MYSQL环境部署
问:Nginx+PHP+MYSQL如何安装?

答:如果是自己手动安装的话,这个需要另外写个教程,不过网上现有的教程也狠多。对于新手来说,推荐一键包安装。

问:Nginx+PHP+MYSQL的一键包选择哪个?

答:现在流行的一键包有LNMP,AMH,宝塔面板,WDCP等,其中LNMP最简洁,强烈推荐。做为生产环境,越简洁的问题越少,功能多了,带来的BUG也多。

问:Nginx+PHP+MYSQL各版本如何选择?

答:Nginx推荐1.14,稳定,性能不俗。PHP在程序兼容性没问题的情况下,可以选择最新版,但如果程序较早开发的,例如部分Wordpress插件,对PHP7存在兼容性问题,最稳妥的方法是选择PHP5.6。至于MYSQL的版本,对于低配置的服务器建议选择MYSQL5.6。内存达到2G或以上的主机,可以选择MYSQL 5.7。其实很多关于MYSQL性能测试的文章,对于大部分草根站长来说,基本没有意义。因为网站程序相对简单,访问压力也不大,所以所谓的升级提升的性能,几乎没感觉。(注:所有的小版本越新越好)

三、安装完成Nginx+PHP+MYSQL后,如何优化?
首先优化的原则是个性化的,是根据需求来优化的。但很多新手站长根本弄不明白自己的需求,更无从谈起优化方案了。这里给出1核CPU,1G-2G内存的服务器通用优化方案:

1、PHP开启opcache(开启方式可以上网搜,如果是LNMP一键包,可以用./addons.sh install opcache 进行开启)

2、PHP.ini配置

  1. max_execution_time=300 //最大脚本运行时间
  2. max_input_time=60 // 最大输入时间
  3. memory_limit=64M //脚本内存限制
  4. post_max_size=50M // POST数据最大尺寸
  5. upload_max_filesize=50M //允许上传文件的最大尺寸
  6. max_file_uploads=20 // 允许同时上传文件的最大数量
  7. default_socket_timeout=60 // Socket超时时间
  8. 3、php-fpm配置文件php-fpm.conf
  9. pm.max_children = 30 // 允许创建的最大子进程数
  10. pm.start_servers = 5 // 起始进程数(服务启动后初始进程数量)
  11. pm.min_spare_servers = 5 // 最小空闲进程数(清理空闲进程后的保留数量)
  12. pm.max_spare_servers = 20 // 最大空闲进程数(当空闲进程达到此值时清理)
  13. 4、MYSQL配置文件
  14. key_buffer_size=128MB // 用于索引的缓冲区大小
  15. query_cache_size=64MB // 查询缓存,不开启请设为0
  16. tmp_table_size=64MB // 临时表缓存大小
  17. innodb_buffer_pool_size=256MB // Innodb缓冲区大小
  18. innodb_log_buffer_size=16MB // Innodb日志缓冲区大小
  19. sort_buffer_size=768KB // 连接数, 每个线程排序的缓冲大小
  20. read_buffer_size=768KB // 连接数, 读入缓冲区大小
  21. read_rnd_buffer_size=512KB // 连接数, 随机读取缓冲区大小
  22. join_buffer_size=1024KB // 连接数, 关联表缓存大小
  23. thread_stack=256KB // 连接数, 每个线程的堆栈大小
  24. binlog_cache_size=64KB // 连接数, 二进制日志缓存大小(4096的倍数)
  25. thread_cache_size=64 // 线程池大小
  26. table_open_cache=128 // 表缓存(最大不要超过2048)
  27. max_connections=120 // 最大连接数

5、将以下代码添加到nginx的主机配置文件中,实现静态资源缓存,其中7d代表缓存7天。

  1. location ~ .*\.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm)$
  2. {
  3. expires 7d;
  4. }
  5. location ~ .*\.(?:js|css)$
  6. {
  7. expires 7d;
  8. }
  9. location ~ .*\.(?:htm|html)$
  10. {
  11. add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
  12. }
THE END
免责声明:本文由本站撰写发布,但不代表本站的观点和立场。

评论: