马会东的博客

马会东的博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

一、服务器操作系统选择

 

问: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”;
}

 

posted on 2020-05-26 18:45  马会东  阅读(650)  评论(0编辑  收藏  举报