LINUX服务器PHP+MYSQL环境配置优化提升网站效率,虽然搭建网站会占用大量的内存,还需要一些好些的服务器配置之外,我们如果想更好的给用户有更好的访问体验,对网站优化也是必不可少的。那么我们也需要对服务器进行优化处理,现在主流都是使用LINUX服务器PHP+MYSQL+Nginx 环境,建议使用Nginx作为Web服务器,Nginx比阿帕奇Apache还好使用并发性高,处理速度是Apache的3-5倍,如果是初步建站的话阿里云购买个1H+1G+1M香港服务器点击购买即可,没有必要购买大的服务器,我们以后可以按照流量的增长来升级服务器的配置以免浪费不必要的大洋,至于为什么建议大家购买香港服务器,好处就是不需要备案使用com域名马上即可建站使用。
一、服务器操作系统选择
问:PHP+MYSQL环境选择Windows Server好,还是Linux好?
答:其实就服务器的操作系统而言,没有最好,只有最合适。如果自己熟悉什么系统,就用什么系统,只要优化配置得当,性能都不错。如果服务器操作系统都不熟悉,那就用Linux来搭建PHP+MYSQL环境吧,反正是需要学习或者是找服务商代配置。毕竟同一台机器,Linux上的PHP性能要比Windows高,这点是可以肯定的,但优化出色的Windows服务器也一定会比没做什么优化处理的Linux服务器性能强。
问: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”;
}