图片说明

低配置服务器PHP+MYSQL环境配置优化指南

一个新建网站,普通的虚拟主机都能满足需求,为何很多站长还觉得自己的服务器不够用?原因在于没有做好环境优化配置。

前段时间一个朋友说要买个云主机,问我什么配置合适。出于一个老站长的经验,我首先问他主机用来做什么?朋友说用来搭建一个Wordpress博客,我说新建站1核+1G的就行,最终他买了一个2核+4G。。。。。。

一个新建网站,普通的虚拟主机都能满足需求,何必这么高的配置?一问,结果是这样的:

“听说PHP 7.2性能好,但占用内存高。”

“听说MYSQL8.0已经发布了,性能提升很大,最低内存都要2G起步”

听完之后,一阵无语,决定写下这篇文章,让大部分新手站长明白,其实并不是最新版的就一定是最好的。就算是最新版的,也不一定是需要高配的。

一、服务器操作系统选择

问: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配置

max_execution_time=300 //最大脚本运行时间

max_input_time=60 // 最大输入时间

memory_limit=64M //脚本内存限制

post_max_size=50M // POST数据最大尺寸

upload_max_filesize=50M //允许上传文件的最大尺寸

max_file_uploads=20 // 允许同时上传文件的最大数量

default_socket_timeout=60 // Socket超时时间

3、php-fpm配置文件php-fpm.conf

pm.max_children = 30 // 允许创建的最大子进程数

pm.start_servers = 5 // 起始进程数(服务启动后初始进程数量)

pm.min_spare_servers = 5 // 最小空闲进程数(清理空闲进程后的保留数量)

pm.max_spare_servers = 20 // 最大空闲进程数(当空闲进程达到此值时清理)

4、MYSQL配置文件

key_buffer_size=128MB // 用于索引的缓冲区大小

query_cache_size=64MB // 查询缓存,不开启请设为0

tmp_table_size=64MB // 临时表缓存大小

innodb_buffer_pool_size=256MB // Innodb缓冲区大小

innodb_log_buffer_size=16MB // Innodb日志缓冲区大小

sort_buffer_size=768KB // 连接数, 每个线程排序的缓冲大小

read_buffer_size=768KB // 连接数, 读入缓冲区大小

read_rnd_buffer_size=512KB // 连接数, 随机读取缓冲区大小

join_buffer_size=1024KB // 连接数, 关联表缓存大小

thread_stack=256KB // 连接数, 每个线程的堆栈大小

binlog_cache_size=64KB // 连接数, 二进制日志缓存大小(4096的倍数)

thread_cache_size=64 // 线程池大小

table_open_cache=128 // 表缓存(最大不要超过2048)

max_connections=120 // 最大连接数

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

location ~ .*\.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm)$
{
expires 7d;
}

location ~ .*\.(?:js|css)$
{
expires 7d;
}

location ~ .*\.(?:htm|html)$
{
add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
}
版权免责声明

① 本站VIP源码资源永久免费下载 www.wayu.cn
② 本网站资源来源于网络收集,如有侵权,请联系站长进行删除处理。
③ 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。
④ 如果你有源码需要出售,可以联系小编,或者点击 投稿
⑤ 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解。
⑥ 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。
⑦ 在您的能力范围内,为了大环境的良性发展,请尽可能的选择正版资源。
⑧ 网站资源不做任何二次加密和授权后门(原版加密除外)

评论0

请先

没有账号? 忘记密码?