在CentOS 7上安装H2O Web服务器

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创建一个组和用户以在named下运行h2o

sudo groupadd -g 101 h2o
sudo useradd -d /etc/h2o -g 101 -M -s /sbin/nologin -u 101 h2o

步骤3:配置H2O Web服务器

下面的步骤将得到的配置设置的各种实例unencryptedencryptedstaticdynamic服务器的设置; 以及这四者的结合


重定向http://www.example.comhttp://example.com(静态HTML页面,无PHP)配置

导航到/etc/h2o/目录。

cd /etc/h2o/

将默认名称重命名h2o.confh2o.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.comwww.example.com)。您是否获得一个Unable to connectThis 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.comhttp://www.example.com(静态HTML页面,无PHP)配置

导航到/etc/h2o/目录。

cd /etc/h2o/

将默认名称重命名h2o.confh2o.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.comwww.example.com)。您是否获得一个Unable to connectThis 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.comhttp://example.com(动态页面,PHP-FPM 5.6.x)配置

导航到/etc/h2o/目录。

cd /etc/h2o/

将默认名称重命名h2o.confh2o.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版本,必须安装REMI存储库,其中包含PHP 5.6.x,7.0.x和7.1.x版本。安装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.confphp-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\_limitpost\_max\_sizeupload\_max\_filesizedate.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.phpfile.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.comwww.example.com)。您是否获得一个Unable to connectThis site can’t be reached消息?CentOS的默认防火墙设置不允许进入HTTP端口的连接。执行以下操作将其打开。

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload

在浏览器(F5)中刷新页面,您将获得标准的PHP信息页面。


重定向http://example.comhttp://www.example.com(动态页面,PHP-FPM 5.6.x)配置

导航到/etc/h2o/目录。

cd /etc/h2o/

将默认名称重命名h2o.confh2o.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版本,必须安装REMI存储库,其中包含PHP 5.6.x,7.0.x和7.1.x版本。键入以下命令以安装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.confphp-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\_limitpost\_max\_sizeupload\_max\_filesizedate.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.phpfile.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.comwww.example.com)。您是否获得一个Unable to connectThis 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.comhttp://example.com(动态页面,PHP-FPM 7.1.x)配置

导航到/etc/h2o/目录。

cd /etc/h2o/

将默认名称重命名h2o.confh2o.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版本,必须安装REMI存储库,其中包含PHP 5.6.x,7.0.x和7.1.x版本。在下面键入以下命令以安装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.confphp-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\_limitpost\_max\_sizeupload\_max\_filesizedate.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.phpfile.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();
?>

Now, open your browser and enter the server domain name (example.com or www.example.com) for your instance. Are you getting an Unable to connect or a This site can’t be reached message? CentOS's default firewall setting disallows incoming connections to the http port. Do the following to open it.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload

Refresh the page in your browser (F5) and you will get the standard PHP info page.


Redirect http://example.com To http://www.example.com (Dynamic Page, PHP-FPM 7.1.x) Configuration

Navigate to the /etc/h2o/ directory.

cd /etc/h2o/

Rename the default h2o.conf to h2o.conf.original.

sudo mv h2o.conf h2o.conf.original

Create a new h2o.conf file.

sudo nano h2o.conf

Copy and paste the text below into the h2o.conf file.

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版本,必须安装REMI存储库,其中包含PHP 5.6.x,7.0.x和7.1.x版本。在下面键入以下命令以安装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.confphp-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\_limitpost\_max\_sizeupload\_max\_filesizedate.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.phpfile.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.comwww.example.com)。您是否获得一个Unable to connectThis site can’t be reached消息?CentOS的默认防火墙设置不允许进入HTTP端口的连接。执行以下操作将其打开。

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload

在浏览器(F5)中刷新页面,您将获得标准的PHP信息页面。


http://example.comhttp://www.example.com和重定向https://www.example.comhttps://example.com(静态HTML页面,无PHP)配置

导航到/etc/h2o/目录。

cd /etc/h2o/

将默认名称重命名h2o.confh2o.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

Copy and paste the following text into the ssl.conf file.

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

Make a directory to store the dhparam_2048.pem file that will be regenerated daily via a cronjob.

sudo mkdir /etc/ssl/h2o/

Create a new regenerate_dhparam file.

sudo nano /etc/cron.daily/regenerate_dhparam

Copy and paste the following text into the regenerate_dhparam file.

#!/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

Make the bash file just created executable.

sudo chmod +x /etc/cron.daily/regenerate_dhparam

Execute the bash script for a first run as H2O won't start properly if it's not generated. This will take about a minute or two to generate on first run.

sudo /etc/cron.daily/regenerate_dhparam

Enable and start the H2O server.

sudo systemctl enable h2o
sudo systemctl start h2o

Create a default index.html using the template in /var/www/html to the directory option file.dir listed above in /var/www/example.com.

sudo cp -var /var/www/html /var/www/example.com

现在,打开浏览器并为您的实例输入服务器域名(example.comwww.example.com)。您是否获得一个Unable to connectThis 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.comhttp://www.example.com和重定向https://example.comhttps://www.example.com(静态HTML页面,无PHP)配置

导航到/etc/h2o/目录。

cd /etc/h2o/

将默认名称重命名h2o.confh2o.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,它将无法正确启动。第一次运行大约需要一两分钟的时间。

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.comwww.example.com)。您是否获得一个Unable to connectThis 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.comhttp://www.example.com和重定向https://www.example.comhttps://example.com(动态页面,PHP-FPM 5.6.x)配置

导航到/etc/h2o/目录。

cd /etc/h2o/

将默认名称重命名h2o.confh2o.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,它将无法正确启动。第一次运行大约需要一两分钟的时间。

sudo /etc/cron.daily/regenerate_dhparam

为了处理PHP,必须安装和配置PHP-FPM 5.6守护程序。为了安装比默认5.4.x更高的PHP-FPM版本,必须安装REMI存储库,其中包含PHP 5.6.x,7.0.x和7.1.x版本。键入以下命令以安装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.confphp-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\_limitpost\_max\_sizeupload\_max\_filesizedate.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.phpfile.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.comwww.example.com)。您是否获得一个Unable to connectThis 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.comhttp://www.example.com和重定向https://example.comhttps://www.example.com(动态页面,PHP-FPM 5.6.x)配置

导航到/etc/h2o/目录。

cd /etc/h2o/

将默认名称重命名h2o.confh2o.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,它将无法正确启动。第一次运行大约需要一两分钟的时间。

sudo /etc/cron.daily/regenerate_dhparam

In order to process PHP, the PHP-FPM 5.6 daemon must be installed and configured. In order to install a version of PHP-FPM newer than the default 5.4.x, the REMI repo must be installed which contains PHP versions 5.6.x, 7.0.x and 7.1.x. Type the following commands to install PHP version 5.6.x.

sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php56-php-fpm -y

Navigate to the /opt/remi/php56/root/etc/ directory.

cd /opt/remi/php56/root/etc/

Rename the default php-fpm.conf to php-fpm.conf.original.

sudo mv php-fpm.conf php-fpm.conf.original

Create a new php-fpm.conf file.

sudo nano php-fpm.conf

Copy and paste the text below into the php-fpm.conf file.

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

Rename the default www.conf file in the php-fpm.d directory.

sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original

Create a new www.conf file.

sudo nano php-fpm.d/www.conf

Copy and paste the text below into the www.conf file. Change your pm.max\_children to match the number of CPUs in accordance with your VPS instance.

[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

Rename the default php.ini file.

sudo mv php.ini php.ini.original

Create a new php.ini file.

sudo nano php.ini

将以下文本复制并粘贴到新的中php.ini file。更改memory\_limitpost\_max\_sizeupload\_max\_filesizedate.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.phpfile.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 connectThis 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.comhttp://www.example.com和重定向https://www.example.comhttps://example.com(动态页面,PHP-FPM 7.1.x)配置

导航到/etc/h2o/目录。

cd /etc/h2o/

将默认名称重命名h2o.confh2o.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,它将无法正确启动。第一次运行大约需要一两分钟的时间。

sudo /etc/cron.daily/regenerate_dhparam

为了处理PHP,必须安装和配置PHP-FPM 7.1守护程序。为了安装比默认5.4.x更高的PHP-FPM版本,必须安装REMI存储库,其中包含PHP 5.6.x,7.0.x和7.1.x版本。在下面键入以下命令以安装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.confphp-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\_limitpost\_max\_sizeupload\_max\_filesizedate.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.phpfile.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.comwww.example.com)。您是否获得一个Unable to connectThis 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.comhttp://www.example.com和重定向https://example.comhttps://www.example.com(动态页面,PHP-FPM 7.1.x)配置

导航到/etc/h2o/目录。

cd /etc/h2o/

将默认名称重命名h2o.confh2o.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,它将无法正确启动。第一次运行大约需要一两分钟的时间。

sudo /etc/cron.daily/regenerate_dhparam

为了处理PHP,必须安装和配置PHP-FPM 7.1守护程序。为了安装比默认5.4.x更高的PHP-FPM版本,必须安装REMI存储库,其中包含PHP 5.6.x,7.0.x和7.1.x版本。键入以下命令以安装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.confphp-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\_limitpost\_max\_sizeupload\_max\_filesizedate.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.phpfile.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.comwww.example.com)。您是否获得一个Unable to connectThis 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信息页面。


我的教程到此结束。谢谢阅读。



Leave a Comment

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息