H2O是新一代HTTP服务器,它具有所有当前正在使用的Web服务器的全功能HTTP / 2实现。使用H2O作为Web服务器,您可以利用HTTP / 2规范的新功能,如延迟优化,服务器推送和服务器端优先级,可以利用很少谈到的现代浏览器功能。
在这个详细的教程中,我将逐步向您展示如何在CentOS 7 x64实例上运行H2O。
先决条件
- CentOS 7 x64服务器实例。
- 一个sudo用户。
- SSL证书(可选)
第1步:更新系统
使用您的实例下找到的凭据通过SSH登录,并按如下方式更新系统。
sudo yum install epel-release -y
sudo yum clean all && sudo yum update -y
第2步:安装H2O
要在CentOS 7上安装H2O,必须添加Bintray RPM存储库以安装预构建的H2O二进制文件。使用Nano编辑器创建自定义仓库。
sudo nano /etc/yum.repos.d/bintray-h2o-rpm.repo
将下面的文本复制并粘贴到repo文件中。
[bintray-h2o-rpm]
name=bintray-h2o-rpm
baseurl=https://dl.bintray.com/tatsushid/h2o-rpm/centos/$releasever/$basearch/
gpgcheck=0
repo_gpgcheck=0
enabled=1
接下来,安装H2O。
sudo yum install h2o -y
现在已经安装了H2O,但是在启用和启动服务之前,需要进行适当的配置,我们需要创建一个特定的用户和组来运行H2O。为H2O创建一个组和用户以在命名下运行h2o
。
sudo groupadd -g 101 h2o
sudo useradd -d /etc/h2o -g 101 -M -s /sbin/nologin -u 101 h2o
第3步:配置H2O Web服务器
下面的步骤将得到的配置设置的各种实例unencrypted
,encrypted
,static
和dynamic
服务器的设置; 以及所有四个的组合。
重定向http://www.example.com
到http://example.com
(静态HTML页面,无PHP)配置
导航到该/etc/h2o/
目录。
cd /etc/h2o/
将默认值重命名h2o.conf
为h2o.conf.original
。
sudo mv h2o.conf h2o.conf.original
创建一个新h2o.conf
文件。
sudo nano h2o.conf
将下面的文本复制并粘贴到h2o.conf
文件中。
access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.html' ]
hosts:
"example.com:80":
listen:
port: 80
paths:
"/":
file.dir: /var/www/example.com
"www.example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "http://example.com/"
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
HTTP_PROXY: ""
user: h2o
启用并启动H2O服务器。
sudo systemctl enable h2o
sudo systemctl start h2o
index.html
使用上面列出/var/www/html
的目录选项中的模板创建默认值。file.dir
/var/www/example.com
sudo cp -var /var/www/html /var/www/example.com
现在,打开浏览器并输入您的实例的服务器域名(example.com
或www.example.com
)。你收到Unable to connect
了This site can’t be reached
消息吗?CentOS的默认防火墙设置不允许到http端口的传入连接。执行以下操作将其打开。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload
在浏览器中刷新页面(F5
),您将收到此消息。
Welcome to H2O - an optimized HTTP server
It works!
重定向http://example.com
到http://www.example.com
(静态HTML页面,无PHP)配置
导航到该/etc/h2o/
目录。
cd /etc/h2o/
将默认值重命名h2o.conf
为h2o.conf.original
。
sudo mv h2o.conf h2o.conf.original
创建一个新h2o.conf
文件。
sudo nano h2o.conf
将以下文本复制并粘贴到h2o.conf
文件中。
access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.html' ]
hosts:
"example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "http://www.example.com/"
"www.example.com:80":
listen:
port: 80
paths:
"/":
file.dir: /var/www/www.example.com
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
HTTP_PROXY: ""
user: h2o
启用并启动H2O服务器。
sudo systemctl enable h2o
sudo systemctl start h2o
index.html
使用模板在上面列出/var/www/html
的目录选项中创建默认文件。file.dir
/var/www/www.example.com
sudo cp -var /var/www/html /var/www/www.example.com
现在,打开浏览器并输入您的实例的服务器域名(example.com
或www.example.com
)。你收到Unable to connect
了This site can’t be reached
消息吗?CentOS的默认防火墙设置不允许到http端口的传入连接。执行以下操作以打开它。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload
在浏览器中刷新页面(F5
),您将收到此消息。
Welcome to H2O - an optimized HTTP server
It works!
重定向http://www.example.com
到http://example.com
(动态页面,PHP-FPM 5.6.x)配置
导航到该/etc/h2o/
目录。
cd /etc/h2o/
将默认值重命名h2o.conf
为h2o.conf.original
。
sudo mv h2o.conf h2o.conf.original
创建一个新h2o.conf
文件。
sudo nano h2o.conf
将以下文本复制并粘贴到h2o.conf
文件中。
access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.php' ]
hosts:
"example.com:80":
listen:
port: 80
paths:
"/":
file.dir: /var/www/example.com
redirect:
internal: YES
status: 307
url: /index.php
"www.example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "http://example.com/"
file.custom-handler:
extension: .php
fastcgi.connect:
port: /run/php-fpm-5.6.sock
type: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
HTTP_PROXY: ""
user: h2o
为了处理PHP,必须安装和配置PHP-FPM 5.6守护程序。为了安装比默认版本5.4.x更新的PHP-FPM版本,必须安装包含PHP版本5.6.x,7.0.x和7.1.x的REMI repo。安装PHP 5.6.x版。
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php56-php-fpm -y
导航到该/opt/remi/php56/root/etc/
目录。
cd /opt/remi/php56/root/etc/
将默认值重命名php-fpm.conf
为php-fpm.conf.original
。
sudo mv php-fpm.conf php-fpm.conf.original
创建一个新php-fpm.conf
文件。
sudo nano php-fpm.conf
将下面的文本复制并粘贴到php-fpm.conf
文件中。
include=/opt/remi/php56/root/etc/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-5.6-error.log
pid = /var/run/php-fpm-5.6.pid
process_control_timeout = 10s
重命名目录中的默认www.conf
文件php-fpm.d
。
sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original
创建一个新www.conf
文件。
sudo nano php-fpm.d/www.conf
将下面的文本复制并粘贴到www.conf
文件中。pm.max\_children
根据您的VPS实例更改您的CPU数量。
[www]
group = h2o
listen = /var/run/php-fpm-5.6.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o
重命名默认php.ini
文件。
sudo mv php.ini php.ini.original
创建一个新php.ini
文件。
sudo nano php.ini
将下面的文本复制并粘贴到新文本中php.ini file
。更改memory\_limit
,post\_max\_size
,upload\_max\_filesize
并date.timezone
按照您的VPS实例。
[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/opt/remi/php56/root/var/lib/php/session/"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
将/opt/remi/php56/root/var/lib/php/session/
目录的组所有权从apache
组更改为h2o
组。
sudo chown root.h2o /opt/remi/php56/root/var/lib/php/session/
创建PHP-FPM服务器日志所在的目录。
sudo mkdir /var/log/php-fpm/
启用并启动PHP-FPM服务器。
sudo systemctl enable php56-php-fpm
sudo systemctl start php56-php-fpm
启用并启动H2O服务器。
sudo systemctl enable h2o
sudo systemctl start h2o
创建一个目录,其中默认index.php
将驻留在file.dir
上面的目录选项列出的目录中/var/www/example.com
。
sudo mkdir /var/www/example.com
index.php
使用phpinfo
命令测试PHP 创建默认值。
sudo nano /var/www/example.com/index.php
将下面的文本复制并粘贴到新index.php
文件中。
<?php
phpinfo();
?>
现在,打开浏览器并输入您的实例的服务器域名(example.com
或www.example.com
)。你收到Unable to connect
了This site can’t be reached
消息吗?CentOS的默认防火墙设置不允许到http端口的传入连接。执行以下操作以打开它。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload
在浏览器中刷新页面(F5
),您将获得标准的PHP信息页面。
重定向http://example.com
到http://www.example.com
(动态页面,PHP-FPM 5.6.x)配置
导航到该/etc/h2o/
目录。
cd /etc/h2o/
将默认值重命名h2o.conf
为h2o.conf.original
。
sudo mv h2o.conf h2o.conf.original
创建一个新h2o.conf
文件。
sudo nano h2o.conf
将下面的文本复制并粘贴到h2o.conf
文件中。
access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.php' ]
hosts:
"example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "http://www.example.com/"
"www.example.com:80":
listen:
port: 80
paths:
"/":
file.dir: /var/www/www.example.com
redirect:
internal: YES
status: 307
url: /index.php
file.custom-handler:
extension: .php
fastcgi.connect:
port: /run/php-fpm-5.6.sock
type: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
HTTP_PROXY: ""
user: h2o
为了处理PHP,必须安装和配置PHP-FPM 5.6守护程序。为了安装比默认版本5.4.x更新的PHP-FPM版本,必须安装包含PHP版本5.6.x,7.0.x和7.1.x的REMI repo。键入以下命令以安装PHP 5.6.x版。
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php56-php-fpm -y
导航到该/opt/remi/php56/root/etc/
目录。
cd /opt/remi/php56/root/etc/
将默认值重命名php-fpm.conf
为php-fpm.conf.original
。
sudo mv php-fpm.conf php-fpm.conf.original
创建一个新php-fpm.conf
文件。
sudo nano php-fpm.conf
将下面的文本复制并粘贴到php-fpm.conf
文件中。
include=/opt/remi/php56/root/etc/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-5.6-error.log
pid = /var/run/php-fpm-5.6.pid
process_control_timeout = 10s
重命名目录中的默认www.conf
文件php-fpm.d
。
sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original
创建一个新www.conf
文件。
sudo nano php-fpm.d/www.conf
将以下文本复制并粘贴到www.conf
文件中。pm.max\_children
根据您的VPS实例更改您的CPU数量。
[www]
group = h2o
listen = /var/run/php-fpm-5.6.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o
重命名默认php.ini
文件。
sudo mv php.ini php.ini.original
创建一个新php.ini
文件。
sudo nano php.ini
将以下文本复制并粘贴到新文件中php.ini file
。更改memory\_limit
,post\_max\_size
,upload\_max\_filesize
并date.timezone
按照您的VPS实例。
[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/opt/remi/php56/root/var/lib/php/session/"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
将/opt/remi/php56/root/var/lib/php/session/
目录的组所有权从apache
组更改为h2o
组。
sudo chown root.h2o /opt/remi/php56/root/var/lib/php/session/
创建PHP-FPM服务器日志所在的目录。
sudo mkdir /var/log/php-fpm/
启用并启动PHP-FPM服务器。
sudo systemctl enable php56-php-fpm
sudo systemctl start php56-php-fpm
启用并启动H2O服务器。
sudo systemctl enable h2o
sudo systemctl start h2o
创建一个目录,其中默认index.php
将驻留在file.dir
上面的目录选项列出的目录中/var/www/www.example.com
。
sudo mkdir /var/www/www.example.com
index.php
使用phpinfo
命令测试PHP 创建默认值。
sudo nano /var/www/www.example.com/index.php
将下面的文本复制并粘贴到新index.php
文件中。
<?php
phpinfo();
?>
现在,打开浏览器并输入您的实例的服务器域名(example.com
或www.example.com
)。你收到Unable to connect
了This site can’t be reached
消息吗?CentOS的默认防火墙设置不允许到http端口的传入连接。执行以下操作以打开它。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload
在浏览器中刷新页面(F5
),您将获得标准的PHP信息页面。
重定向http://www.example.com
到http://example.com
(动态页面,PHP-FPM 7.1.x)配置
导航到该/etc/h2o/
目录。
cd /etc/h2o/
将默认值重命名h2o.conf
为h2o.conf.original
。
sudo mv h2o.conf h2o.conf.original
创建一个新h2o.conf
文件。
sudo nano h2o.conf
将下面的文本复制并粘贴到h2o.conf
文件中。
access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.php' ]
hosts:
"example.com:80":
listen:
port: 80
paths:
"/":
file.dir: /var/www/example.com
redirect:
internal: YES
status: 307
url: /index.php
"www.example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "http://example.com/"
file.custom-handler:
extension: .php
fastcgi.connect:
port: /run/php-fpm-7.1.sock
type: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
HTTP_PROXY: ""
user: h2o
为了处理PHP,必须安装和配置PHP-FPM 7.1守护程序。为了安装比默认版本5.4.x更新的PHP-FPM版本,必须安装包含PHP版本5.6.x,7.0.x和7.1.x的REMI repo。在下面键入以下命令以安装PHP版本7.1.x.
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php71-php-fpm -y
导航到该/etc/opt/remi/php71/
目录。
cd /etc/opt/remi/php71/
将默认值重命名php-fpm.conf
为php-fpm.conf.original
。
sudo mv php-fpm.conf php-fpm.conf.original
创建一个新php-fpm.conf
文件。
sudo nano php-fpm.conf
将以下文本复制并粘贴到php-fpm.conf
文件中。
include=/etc/opt/remi/php71/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-7.1-error.log
pid = /var/run/php-fpm-7.1.pid
process_control_timeout = 10s
重命名目录中的默认www.conf
文件php-fpm.d
。
sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original
创建一个新www.conf
文件。
sudo nano php-fpm.d/www.conf
将下面的文本复制并粘贴到www.conf
文件中。pm.max\_children
根据您的VPS实例更改您的CPU数量。
[www]
group = h2o
listen = /var/run/php-fpm-7.1.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o
重命名默认php.ini
文件。
sudo mv php.ini php.ini.original
创建一个新php.ini
文件。
sudo nano php.ini
将下面的文本复制并粘贴到新文本中php.ini file
。更改memory\_limit
,post\_max\_size
,upload\_max\_filesize
并date.timezone
按照您的VPS实例。
[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/var/opt/remi/php71/lib/php/session/"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
将/var/opt/remi/php71/lib/php/session/
目录的组所有权从apache
组更改为h2o
组。
sudo chown root.h2o /var/opt/remi/php71/lib/php/session/
创建PHP-FPM服务器日志所在的目录。
sudo mkdir /var/log/php-fpm/
启用并启动PHP-FPM服务器。
sudo systemctl enable php71-php-fpm
sudo systemctl start php71-php-fpm
启用并启动H2O服务器。
sudo systemctl enable h2o
sudo systemctl start h2o
创建一个目录,其中默认index.php
将驻留在file.dir
上面的目录选项列出的目录中/var/www/example.com
。
sudo mkdir /var/www/example.com
index.php
使用phpinfo
命令测试PHP 创建默认值。
sudo nano /var/www/example.com/index.php
将下面的文本复制并粘贴到新index.php
文件中。
<?php
phpinfo();
?>
现在,打开浏览器并输入您的实例的服务器域名(example.com
或www.example.com
)。你收到Unable to connect
了This site can’t be reached
消息吗?CentOS的默认防火墙设置不允许到http端口的传入连接。执行以下操作以打开它。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload
在浏览器中刷新页面(F5
),您将获得标准的PHP信息页面。
重定向http://example.com
到http://www.example.com
(动态页面,PHP-FPM 7.1.x)配置
导航到该/etc/h2o/
目录。
cd /etc/h2o/
将默认值重命名h2o.conf
为h2o.conf.original
。
sudo mv h2o.conf h2o.conf.original
创建一个新h2o.conf
文件。
sudo nano h2o.conf
将下面的文本复制并粘贴到h2o.conf
文件中。
access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.php' ]
hosts:
"example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "http://www.example.com/"
"www.example.com:80":
listen:
port: 80
paths:
"/":
file.dir: /var/www/www.example.com
redirect:
internal: YES
status: 307
url: /index.php
file.custom-handler:
extension: .php
fastcgi.connect:
port: /run/php-fpm-7.1.sock
type: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
HTTP_PROXY: ""
user: h2o
为了处理PHP,必须安装和配置PHP-FPM 7.1守护程序。为了安装比默认版本5.4.x更新的PHP-FPM版本,必须安装包含PHP版本5.6.x,7.0.x和7.1.x的REMI repo。在下面键入以下命令以安装PHP版本7.1.x.
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php71-php-fpm -y
导航到该/etc/opt/remi/php71/
目录。
cd /etc/opt/remi/php71/
将默认值重命名php-fpm.conf
为php-fpm.conf.original
。
sudo mv php-fpm.conf php-fpm.conf.original
创建一个新php-fpm.conf
文件。
sudo nano php-fpm.conf
将下面的文本复制并粘贴到php-fpm.conf
文件中。
include=/etc/opt/remi/php71/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-7.1-error.log
pid = /var/run/php-fpm-7.1.pid
process_control_timeout = 10s
重命名目录中的默认www.conf
文件php-fpm.d
。
sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original
创建一个新www.conf
文件。
sudo nano php-fpm.d/www.conf
将以下文本复制并粘贴到www.conf
文件中。pm.max\_children
根据您的VPS实例更改您的CPU数量。
[www]
group = h2o
listen = /var/run/php-fpm-7.1.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o
重命名默认php.ini
文件。
sudo mv php.ini php.ini.original
创建一个新php.ini
文件。
sudo nano php.ini
将以下文本复制并粘贴到新文本中php.ini file
。更改memory\_limit
,post\_max\_size
,upload\_max\_filesize
并date.timezone
按照您的VPS实例。
[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/var/opt/remi/php71/lib/php/session"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
将/var/opt/remi/php71/lib/php/session/
目录的组所有权从apache
组更改为h2o
组。
sudo chown root.h2o /var/opt/remi/php71/lib/php/session/
创建PHP-FPM服务器日志所在的目录。
sudo mkdir /var/log/php-fpm/
启用并启动PHP-FPM服务器。
sudo systemctl enable php71-php-fpm
sudo systemctl start php71-php-fpm
启用并启动H2O服务器。
sudo systemctl enable h2o
sudo systemctl start h2o
创建一个目录,其中默认index.php
将驻留在file.dir
上面的目录选项列出的目录中/var/www/example.com
。
sudo mkdir /var/www/www.example.com
index.php
使用phpinfo
命令测试PHP 创建默认值。
sudo nano /var/www/www.example.com/index.php
将下面的文本复制并粘贴到新index.php
文件中。
<?php
phpinfo();
?>
现在,打开浏览器并输入您的实例的服务器域名(example.com
或www.example.com
)。你收到Unable to connect
了This site can’t be reached
消息吗?CentOS的默认防火墙设置不允许到http端口的传入连接。执行以下操作以打开它。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload
在浏览器中刷新页面(F5
),您将获得标准的PHP信息页面。
重定向http://example.com
,http://www.example.com
以及https://www.example.com
对https://example.com
(静态HTML页面,没有PHP)配置
导航到该/etc/h2o/
目录。
cd /etc/h2o/
将默认值重命名h2o.conf
为h2o.conf.original
。
sudo mv h2o.conf h2o.conf.original
创建一个新h2o.conf
文件。
sudo nano h2o.conf
将下面的文本复制并粘贴到h2o.conf
文件中。
access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.html' ]
hosts:
"example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "https://example.com/"
"www.example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "https://www.example.com/"
"example.com:443":
listen:
port: 443
ssl:
<<: !file /etc/h2o/conf.d/ssl.conf
certificate-file: /location/of/certificate/file/fullchain.ext
key-file: /location/of/private/key/file/privkey.ext
paths:
"/":
file.dir: /var/www/example.com
header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
"www.example.com:443":
listen:
port: 443
ssl:
<<: !file /etc/h2o/conf.d/ssl.conf
certificate-file: /location/of/certificate/file/fullchain.ext
key-file: /location/of/private/key/file/privkey.ext
paths:
"/":
header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
redirect:
status: 301
url: "https://example.com/"
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
HTTP_PROXY: ""
user: h2o
创建自定义目录以存储使用SSL的所有网站的默认SSL选项。
sudo mkdir conf.d
创建一个新ssl.conf
文件。
sudo nano conf.d/ssl.conf
将以下文本复制并粘贴到ssl.conf
文件中。
cipher-preference: server
cipher-suite: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
dh-file: /etc/ssl/h2o/dhparam_2048.pem
创建一个目录来存储dhparam_2048.pem
将通过cronjob每天重新生成的文件。
sudo mkdir /etc/ssl/h2o/
创建一个新regenerate_dhparam
文件。
sudo nano /etc/cron.daily/regenerate_dhparam
将以下文本复制并粘贴到regenerate_dhparam
文件中。
#!/bin/bash
cd /etc/ssl/h2o
umask 022
for length in 2048
do
openssl dhparam -out dhparam_$length.tmp $length && mv dhparam_$length.tmp dhparam_$length.pem
chmod 444 dhparam_$length.pem
done
使bash文件刚刚创建可执行文件。
sudo chmod +x /etc/cron.daily/regenerate_dhparam
执行首次运行的bash脚本,因为如果未生成H2O,H2O将无法正常启动。首次运行时需要大约一两分钟才能生成。
sudo /etc/cron.daily/regenerate_dhparam
启用并启动H2O服务器。
sudo systemctl enable h2o
sudo systemctl start h2o
index.html
使用上面列出/var/www/html
的目录选项中的模板创建默认值。file.dir
/var/www/example.com
sudo cp -var /var/www/html /var/www/example.com
现在,打开浏览器并输入您的实例的服务器域名(example.com
或www.example.com
)。你收到Unable to connect
了This site can’t be reached
消息吗?CentOS的默认防火墙设置不允许到http端口的传入连接。执行以下操作以打开它。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
在浏览器中刷新页面(F5
),您将收到此消息。
Welcome to H2O - an optimized HTTP server
It works!
重定向http://example.com
,http://www.example.com
以及https://example.com
对https://www.example.com
(静态HTML页面,没有PHP)配置
导航到该/etc/h2o/
目录。
cd /etc/h2o/
将默认值重命名h2o.conf
为h2o.conf.original
。
sudo mv h2o.conf h2o.conf.original
创建一个新h2o.conf
文件。
sudo nano h2o.conf
将下面的文本复制并粘贴到h2o.conf
文件中。
access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.html' ]
hosts:
"example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "https://example.com/"
"www.example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "https://www.example.com/"
"example.com:443":
listen:
port: 443
ssl:
<<: !file /etc/h2o/conf.d/ssl.conf
certificate-file: /location/of/certificate/file/fullchain.ext
key-file: /location/of/private/key/file/privkey.ext
paths:
"/":
header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
redirect:
status: 301
url: "https://www.example.com/"
"www.example.com:443":
listen:
port: 443
ssl:
<<: !file /etc/h2o/conf.d/ssl.conf
certificate-file: /location/of/certificate/file/fullchain.ext
key-file: /location/of/private/key/file/privkey.ext
paths:
"/":
file.dir: /var/www/www.example.com
header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
HTTP_PROXY: ""
user: h2o
创建自定义目录以存储使用SSL的所有网站的默认SSL选项。
sudo mkdir conf.d
创建一个新ssl.conf
文件。
sudo nano conf.d/ssl.conf
将以下文本复制并粘贴到ssl.conf
文件中。
cipher-preference: server
cipher-suite: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
dh-file: /etc/ssl/h2o/dhparam_2048.pem
创建一个目录来存储dhparam_2048.pem
将通过cronjob每天重新生成的文件。
sudo mkdir /etc/ssl/h2o/
创建一个新regenerate_dhparam
文件。
sudo nano /etc/cron.daily/regenerate_dhparam
将以下文本复制并粘贴到regenerate_dhparam
文件中。
#!/bin/bash
cd /etc/ssl/h2o
umask 022
for length in 2048
do
openssl dhparam -out dhparam_$length.tmp $length && mv dhparam_$length.tmp dhparam_$length.pem
chmod 444 dhparam_$length.pem
done
使bash文件刚刚创建可执行文件。
sudo chmod +x /etc/cron.daily/regenerate_dhparam
执行首次运行的bash脚本,因为如果未生成H2O,H2O将无法正常启动。首次运行时需要大约一两分钟才能生成。
sudo /etc/cron.daily/regenerate_dhparam
启用并启动H2O服务器。
sudo systemctl enable h2o
sudo systemctl start h2o
index.html
使用上面列出/var/www/html
的目录选项中的模板创建默认值。file.dir
/var/www/www.example.com
sudo cp -var /var/www/html /var/www/www.example.com
现在,打开浏览器并输入您的实例的服务器域名(example.com
或www.example.com
)。你收到Unable to connect
了This site can’t be reached
消息吗?CentOS的默认防火墙设置不允许到http端口的传入连接。执行以下操作以打开它。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
在浏览器中刷新页面(F5
),您将收到此消息。
Welcome to H2O - an optimized HTTP server
It works!
重定向http://example.com
,http://www.example.com
以及https://www.example.com
对https://example.com
(动态页面,PHP-FPM 5.6.x)配置
导航到该/etc/h2o/
目录。
cd /etc/h2o/
将默认值重命名h2o.conf
为h2o.conf.original
。
sudo mv h2o.conf h2o.conf.original
创建一个新h2o.conf
文件。
sudo nano h2o.conf
将下面的文本复制并粘贴到h2o.conf
文件中。
access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.php' ]
hosts:
"example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "https://example.com/"
"www.example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "https://www.example.com/"
"example.com:443":
listen:
port: 443
ssl:
<<: !file /etc/h2o/conf.d/ssl.conf
certificate-file: /location/of/certificate/file/fullchain.ext
key-file: /location/of/private/key/file/privkey.ext
paths:
"/":
file.dir: /var/www/example.com
header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
redirect:
internal: YES
status: 307
url: /index.php
"www.example.com:443":
listen:
port: 443
ssl:
<<: !file /etc/h2o/conf.d/ssl.conf
certificate-file: /location/of/certificate/file/fullchain.ext
key-file: /location/of/private/key/file/privkey.ext
paths:
"/":
header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
redirect:
status: 301
url: "https://example.com/"
file.custom-handler:
extension: .php
fastcgi.connect:
port: /run/php-fpm-5.6.sock
type: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
HTTP_PROXY: ""
user: h2o
创建自定义目录以存储使用SSL的所有网站的默认SSL选项。
sudo mkdir conf.d
创建一个新ssl.conf
文件。
sudo nano conf.d/ssl.conf
将下面的文本复制并粘贴到ssl.conf
文件中。
cipher-preference: server
cipher-suite: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
dh-file: /etc/ssl/h2o/dhparam_2048.pem
创建一个目录来存储dhparam_2048.pem
将通过cronjob每天重新生成的文件。
sudo mkdir /etc/ssl/h2o/
创建一个新regenerate_dhparam
文件。
sudo nano /etc/cron.daily/regenerate_dhparam
将以下文本复制并粘贴到regenerate_dhparam
文件中。
#!/bin/bash
cd /etc/ssl/h2o
umask 022
for length in 2048
do
openssl dhparam -out dhparam_$length.tmp $length && mv dhparam_$length.tmp dhparam_$length.pem
chmod 444 dhparam_$length.pem
done
使bash文件刚刚创建可执行文件。
sudo chmod +x /etc/cron.daily/regenerate_dhparam
执行首次运行的bash脚本,因为如果未生成H2O,H2O将无法正常启动。首次运行时需要大约一两分钟才能生成。
sudo /etc/cron.daily/regenerate_dhparam
为了处理PHP,必须安装和配置PHP-FPM 5.6守护程序。为了安装比默认版本5.4.x更新的PHP-FPM版本,必须安装包含PHP版本5.6.x,7.0.x和7.1.x的REMI repo。键入以下命令以安装PHP 5.6.x版。
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php56-php-fpm -y
导航到该/opt/remi/php56/root/etc/
目录。
cd /opt/remi/php56/root/etc/
将默认值重命名php-fpm.conf
为php-fpm.conf.original
。
sudo mv php-fpm.conf php-fpm.conf.original
创建一个新php-fpm.conf
文件。
sudo nano php-fpm.conf
将以下文本复制并粘贴到php-fpm.conf
文件中。
include=/opt/remi/php56/root/etc/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-5.6-error.log
pid = /var/run/php-fpm-5.6.pid
process_control_timeout = 10s
重命名目录中的默认www.conf
文件php-fpm.d
。
sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original
创建一个新www.conf
文件。
sudo nano php-fpm.d/www.conf
将下面的文本复制并粘贴到www.conf
文件中。pm.max\_children
根据您的VPS实例更改您的CPU数量。
[www]
group = h2o
listen = /var/run/php-fpm-5.6.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o
重命名默认php.ini
文件。
sudo mv php.ini php.ini.original
创建一个新php.ini
文件。
sudo nano php.ini
将下面的文本复制并粘贴到新文本中php.ini file
。更改memory\_limit
,post\_max\_size
,upload\_max\_filesize
并date.timezone
按照您的VPS实例。
[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/opt/remi/php56/root/var/lib/php/session/"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
将/opt/remi/php56/root/var/lib/php/session/
目录的组所有权从apache
组更改为h2o
组。
sudo chown root.h2o /opt/remi/php56/root/var/lib/php/session/
创建PHP-FPM服务器日志所在的目录。
sudo mkdir /var/log/php-fpm/
启用并启动PHP-FPM服务器。
sudo systemctl enable php56-php-fpm
sudo systemctl start php56-php-fpm
启用并启动H2O服务器。
sudo systemctl enable h2o
sudo systemctl start h2o
创建一个目录,其中默认index.php
将驻留在file.dir
上面的目录选项列出的目录中/var/www/example.com
。
sudo mkdir /var/www/example.com
index.php
使用phpinfo
命令测试PHP 创建默认值。
sudo nano /var/www/example.com/index.php
将下面的文本复制并粘贴到新index.php
文件中。
<?php
phpinfo();
?>
现在,打开浏览器并输入您的实例的服务器域名(example.com
或www.example.com
)。你收到Unable to connect
了This site can’t be reached
消息吗?CentOS的默认防火墙设置不允许到http端口的传入连接。执行以下操作以打开它。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
在浏览器中刷新页面(F5
),您将获得标准的PHP信息页面。
重定向http://example.com
,http://www.example.com
以及https://example.com
对https://www.example.com
(动态页面,PHP-FPM 5.6.x)配置
导航到该/etc/h2o/
目录。
cd /etc/h2o/
将默认值重命名h2o.conf
为h2o.conf.original
。
sudo mv h2o.conf h2o.conf.original
创建一个新h2o.conf
文件。
sudo nano h2o.conf
将下面的文本复制并粘贴到h2o.conf
文件中。
access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.php' ]
hosts:
"example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "https://example.com/"
"www.example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "https://www.example.com/"
"example.com:443":
listen:
port: 443
ssl:
<<: !file /etc/h2o/conf.d/ssl.conf
certificate-file: /location/of/certificate/file/fullchain.ext
key-file: /location/of/private/key/file/privkey.ext
paths:
"/":
header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
redirect:
status: 301
url: "https://www.example.com/"
"www.example.com:443":
listen:
port: 443
ssl:
<<: !file /etc/h2o/conf.d/ssl.conf
certificate-file: /location/of/certificate/file/fullchain.ext
key-file: /location/of/private/key/file/privkey.ext
paths:
"/":
file.dir: /var/www/www.example.com
header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
redirect:
internal: YES
status: 307
url: /index.php
file.custom-handler:
extension: .php
fastcgi.connect:
port: /run/php-fpm-5.6.sock
type: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
HTTP_PROXY: ""
user: h2o
创建自定义目录以存储使用SSL的所有网站的默认SSL选项。
sudo mkdir conf.d
创建一个新ssl.conf
文件。
sudo nano conf.d/ssl.conf
将下面的文本复制并粘贴到ssl.conf
文件中。
cipher-preference: server
cipher-suite: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
dh-file: /etc/ssl/h2o/dhparam_2048.pem
创建一个目录来存储dhparam_2048.pem
将通过cronjob每天重新生成的文件。
sudo mkdir /etc/ssl/h2o/
创建一个新regenerate_dhparam
文件。
sudo nano /etc/cron.daily/regenerate_dhparam
将以下文本复制并粘贴到regenerate_dhparam
文件中。
#!/bin/bash
cd /etc/ssl/h2o
umask 022
for length in 2048
do
openssl dhparam -out dhparam_$length.tmp $length && mv dhparam_$length.tmp dhparam_$length.pem
chmod 444 dhparam_$length.pem
done
使bash文件刚刚创建可执行文件。
sudo chmod +x /etc/cron.daily/regenerate_dhparam
执行首次运行的bash脚本,因为如果未生成H2O,H2O将无法正常启动。首次运行时需要大约一两分钟才能生成。
sudo /etc/cron.daily/regenerate_dhparam
为了处理PHP,必须安装和配置PHP-FPM 5.6守护程序。为了安装比默认版本5.4.x更新的PHP-FPM版本,必须安装包含PHP版本5.6.x,7.0.x和7.1.x的REMI repo。键入以下命令以安装PHP 5.6.x版。
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php56-php-fpm -y
导航到该/opt/remi/php56/root/etc/
目录。
cd /opt/remi/php56/root/etc/
将默认值重命名php-fpm.conf
为php-fpm.conf.original
。
sudo mv php-fpm.conf php-fpm.conf.original
创建一个新php-fpm.conf
文件。
sudo nano php-fpm.conf
将下面的文本复制并粘贴到php-fpm.conf
文件中。
include=/opt/remi/php56/root/etc/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-5.6-error.log
pid = /var/run/php-fpm-5.6.pid
process_control_timeout = 10s
重命名目录中的默认www.conf
文件php-fpm.d
。
sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original
创建一个新www.conf
文件。
sudo nano php-fpm.d/www.conf
将下面的文本复制并粘贴到www.conf
文件中。pm.max\_children
根据您的VPS实例更改您的CPU数量。
[www]
group = h2o
listen = /var/run/php-fpm-5.6.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o
重命名默认php.ini
文件。
sudo mv php.ini php.ini.original
创建一个新php.ini
文件。
sudo nano php.ini
将以下文本复制并粘贴到新文本中php.ini file
。更改memory\_limit
,post\_max\_size
,upload\_max\_filesize
并date.timezone
按照您的VPS实例。
[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/opt/remi/php56/root/var/lib/php/session/"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
将/opt/remi/php56/root/var/lib/php/session/
目录的组所有权从apache
组更改为h2o
组。
sudo chown root.h2o /opt/remi/php56/root/var/lib/php/session/
创建PHP-FPM服务器日志所在的目录。
sudo mkdir /var/log/php-fpm/
启用并启动PHP-FPM服务器。
sudo systemctl enable php56-php-fpm
sudo systemctl start php56-php-fpm
启用并启动H2O服务器。
sudo systemctl enable h2o
sudo systemctl start h2o
创建一个目录,其中默认index.php
将驻留在file.dir
上面的目录选项列出的目录中/var/www/www.example.com
。
sudo mkdir /var/www/www.example.com
index.php
使用phpinfo
命令测试PHP 创建默认值。
sudo nano /var/www/www.example.com/index.php
将下面的文本复制并粘贴到新index.php
文件中。
<?php
phpinfo();
?>
现在,打开浏览器并输入example.com or www.example.com
实例的服务器域名()。你收到Unable to connect
了This site can’t be reached
消息吗?CentOS的默认防火墙设置不允许到http端口的传入连接。执行以下操作以打开它。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
在浏览器中刷新页面(F5
),您将获得标准的PHP信息页面。
重定向http://example.com
,http://www.example.com
以及https://www.example.com
对https://example.com
(动态页面,PHP-FPM 7.1.x)配置
导航到该/etc/h2o/
目录。
cd /etc/h2o/
将默认值重命名h2o.conf
为h2o.conf.original
。
sudo mv h2o.conf h2o.conf.original
创建一个新h2o.conf
文件。
sudo nano h2o.conf
将下面的文本复制并粘贴到h2o.conf
文件中。
access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.php' ]
hosts:
"example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "https://example.com/"
"www.example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "https://www.example.com/"
"example.com:443":
listen:
port: 443
ssl:
<<: !file /etc/h2o/conf.d/ssl.conf
certificate-file: /location/of/certificate/file/fullchain.ext
key-file: /location/of/private/key/file/privkey.ext
paths:
"/":
file.dir: /var/www/example.com
header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
redirect:
internal: YES
status: 307
url: /index.php
"www.example.com:443":
listen:
port: 443
ssl:
<<: !file /etc/h2o/conf.d/ssl.conf
certificate-file: /location/of/certificate/file/fullchain.ext
key-file: /location/of/private/key/file/privkey.ext
paths:
"/":
header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
redirect:
status: 301
url: "https://example.com/"
file.custom-handler:
extension: .php
fastcgi.connect:
port: /run/php-fpm-7.1.sock
type: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
HTTP_PROXY: ""
user: h2o
创建自定义目录以存储使用SSL的所有网站的默认SSL选项。
sudo mkdir conf.d
创建一个新ssl.conf
文件。
sudo nano conf.d/ssl.conf
将下面的文本复制并粘贴到ssl.conf
文件中。
cipher-preference: server
cipher-suite: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
dh-file: /etc/ssl/h2o/dhparam_2048.pem
创建一个目录来存储dhparam_2048.pem
将通过cronjob每天重新生成的文件。
sudo mkdir /etc/ssl/h2o/
创建一个新regenerate_dhparam
文件。
sudo nano /etc/cron.daily/regenerate_dhparam
将以下文本复制并粘贴到regenerate_dhparam
文件中。
#!/bin/bash
cd /etc/ssl/h2o
umask 022
for length in 2048
do
openssl dhparam -out dhparam_$length.tmp $length && mv dhparam_$length.tmp dhparam_$length.pem
chmod 444 dhparam_$length.pem
done
使bash文件刚刚创建可执行文件。
sudo chmod +x /etc/cron.daily/regenerate_dhparam
执行首次运行的bash脚本,因为如果未生成H2O,H2O将无法正常启动。首次运行时需要大约一两分钟才能生成。
sudo /etc/cron.daily/regenerate_dhparam
为了处理PHP,必须安装和配置PHP-FPM 7.1守护程序。为了安装比默认版本5.4.x更新的PHP-FPM版本,必须安装包含PHP版本5.6.x,7.0.x和7.1.x的REMI repo。在下面键入以下命令以安装PHP版本7.1.x.
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php71-php-fpm -y
导航到该/etc/opt/remi/php71/
目录。
cd /etc/opt/remi/php71/
将默认值重命名php-fpm.conf
为php-fpm.conf.original
。
sudo mv php-fpm.conf php-fpm.conf.original
创建一个新php-fpm.conf
文件。
sudo nano php-fpm.conf
将下面的文本复制并粘贴到php-fpm.conf
文件中。
include=/etc/opt/remi/php71/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-7.1-error.log
pid = /var/run/php-fpm-7.1.pid
process_control_timeout = 10s
重命名目录中的默认www.conf
文件php-fpm.d
。
sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original
创建一个新www.conf
文件。
sudo nano php-fpm.d/www.conf
将以下文本复制并粘贴到www.conf
文件中。pm.max\_children
根据您的VPS实例更改您的CPU数量。
[www]
group = h2o
listen = /var/run/php-fpm-7.1.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o
重命名默认php.ini
文件。
sudo mv php.ini php.ini.original
创建一个新php.ini
文件。
sudo nano php.ini
将以下文本复制并粘贴到新文件中php.ini file
。更改memory\_limit
,post\_max\_size
,upload\_max\_filesize
并date.timezone
按照您的VPS实例。
[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/var/opt/remi/php71/lib/php/session/"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
将/var/opt/remi/php71/lib/php/session/
目录的组所有权从apache
组更改为h2o
组。
sudo chown root.h2o /var/opt/remi/php71/lib/php/session/
创建PHP-FPM服务器日志所在的目录。
sudo mkdir /var/log/php-fpm/
启用并启动PHP-FPM服务器。
sudo systemctl enable php71-php-fpm
sudo systemctl start php71-php-fpm
启用并启动H2O服务器。
sudo systemctl enable h2o
sudo systemctl start h2o
创建一个目录,其中默认index.php
将驻留在file.dir
上面的目录选项列出的目录中/var/www/example.com
。
sudo mkdir /var/www/example.com
index.php
使用phpinfo
命令测试PHP 创建默认值。
sudo nano /var/www/example.com/index.php
将下面的文本复制并粘贴到新index.php
文件中。
<?php
phpinfo();
?>
现在,打开浏览器并输入您的实例的服务器域名(example.com
或www.example.com
)。你收到Unable to connect
了This site can’t be reached
消息吗?CentOS的默认防火墙设置不允许到http端口的传入连接。执行以下操作以打开它。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
在浏览器中刷新页面(F5
),您将获得标准的PHP信息页面。
重定向http://example.com
,http://www.example.com
以及https://example.com
对https://www.example.com
(动态页面,PHP-FPM 7.1.x)配置
导航到该/etc/h2o/
目录。
cd /etc/h2o/
将默认值重命名h2o.conf
为h2o.conf.original
。
sudo mv h2o.conf h2o.conf.original
创建一个新h2o.conf
文件。
sudo nano h2o.conf
将下面的文本复制并粘贴到h2o.conf
文件中。
access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.php' ]
hosts:
"example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "https://example.com/"
"www.example.com:80":
listen:
port: 80
paths:
"/":
redirect:
status: 301
url: "https://www.example.com/"
"example.com:443":
listen:
port: 443
ssl:
<<: !file /etc/h2o/conf.d/ssl.conf
certificate-file: /location/of/certificate/file/fullchain.ext
key-file: /location/of/private/key/file/privkey.ext
paths:
"/":
header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
redirect:
status: 301
url: "https://www.example.com/"
"www.example.com:443":
listen:
port: 443
ssl:
<<: !file /etc/h2o/conf.d/ssl.conf
certificate-file: /location/of/certificate/file/fullchain.ext
key-file: /location/of/private/key/file/privkey.ext
paths:
"/":
file.dir: /var/www/www.example.com
header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
redirect:
internal: YES
status: 307
url: /index.php
file.custom-handler:
extension: .php
fastcgi.connect:
port: /run/php-fpm-7.1.sock
type: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
HTTP_PROXY: ""
user: h2o
创建自定义目录以存储使用SSL的所有网站的默认SSL选项。
sudo mkdir conf.d
创建一个新ssl.conf
文件。
sudo nano conf.d/ssl.conf
将下面的文本复制并粘贴到ssl.conf
文件中。
cipher-preference: server
cipher-suite: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
dh-file: /etc/ssl/h2o/dhparam_2048.pem
创建一个目录来存储dhparam_2048.pem
将通过cronjob每天重新生成的文件。
sudo mkdir /etc/ssl/h2o/
创建一个新regenerate_dhparam
文件。
sudo nano /etc/cron.daily/regenerate_dhparam
将以下文本复制并粘贴到regenerate_dhparam
文件中。
#!/bin/bash
cd /etc/ssl/h2o
umask 022
for length in 2048
do
openssl dhparam -out dhparam_$length.tmp $length && mv dhparam_$length.tmp dhparam_$length.pem
chmod 444 dhparam_$length.pem
done
使bash文件刚刚创建可执行文件。
sudo chmod +x /etc/cron.daily/regenerate_dhparam
执行首次运行的bash脚本,因为如果未生成H2O,H2O将无法正常启动。首次运行时需要大约一两分钟才能生成。
sudo /etc/cron.daily/regenerate_dhparam
为了处理PHP,必须安装和配置PHP-FPM 7.1守护程序。为了安装比默认版本5.4.x更新的PHP-FPM版本,必须安装包含PHP版本5.6.x,7.0.x和7.1.x的REMI repo。键入以下命令以安装PHP版本7.1.x.
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php71-php-fpm -y
导航到该/etc/opt/remi/php71/
目录。
cd /etc/opt/remi/php71/
将默认值重命名php-fpm.conf
为php-fpm.conf.original
。
sudo mv php-fpm.conf php-fpm.conf.original
创建一个新php-fpm.conf
文件。
sudo nano php-fpm.conf
将以下文本复制并粘贴到php-fpm.conf
文件中。
include=/etc/opt/remi/php71/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-7.1-error.log
pid = /var/run/php-fpm-7.1.pid
process_control_timeout = 10s
重命名目录中的默认www.conf
文件php-fpm.d
。
sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original
创建一个新www.conf
文件。
sudo nano php-fpm.d/www.conf
将下面的文本复制并粘贴到www.conf
文件中。pm.max\_children
根据您的VPS实例更改您的CPU数量。
[www]
group = h2o
listen = /var/run/php-fpm-7.1.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o
重命名默认php.ini
文件。
sudo mv php.ini php.ini.original
创建一个新php.ini
文件。
sudo nano php.ini
将以下文本复制并粘贴到新文件中php.ini file
。更改memory\_limit
,post\_max\_size
,upload\_max\_filesize
并date.timezone
按照您的VPS实例。
[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/var/opt/remi/php71/lib/php/session"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
将/var/opt/remi/php71/lib/php/session/
目录的组所有权从apache
组更改为h2o
组。
sudo chown root.h2o /var/opt/remi/php71/lib/php/session/
创建PHP-FPM服务器日志所在的目录。
sudo mkdir /var/log/php-fpm/
启用并启动PHP-FPM服务器。
sudo systemctl enable php71-php-fpm
sudo systemctl start php71-php-fpm
启用并启动H2O服务器。
sudo systemctl enable h2o
sudo systemctl start h2o
创建一个目录,其中默认index.php
将驻留在file.dir
上面的目录选项列出的目录中/var/www/example.com
。
sudo mkdir /var/www/www.example.com
index.php
使用phpinfo
命令测试PHP 创建默认值。
sudo nano /var/www/www.example.com/index.php
将下面的文本复制并粘贴到新index.php
文件中。
<?php
phpinfo();
?>
现在,打开浏览器并输入您的实例的服务器域名(example.com
或www.example.com
)。你收到Unable to connect
了This site can’t be reached
消息吗?CentOS的默认防火墙设置不允许到http端口的传入连接。执行以下操作以打开它。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
在浏览器中刷新页面(F5
),您将获得标准的PHP信息页面。
我的教程到此结束。谢谢阅读。