安装 Ubuntu 18.04, Webmin, Nginx, MariaDB, PHP7.2-FPM,Perl-Fastcgi 到 Linode 的 VPS(4)

  • Posted on | Updated on
  • by
  • in

安装 Ubuntu 18.04, Webmin, Nginx, MariaDB, PHP7.2-FPM,Perl-Fastcgi 到 Linode 的 VPS。

第四部分

前面介绍了 VPS 的选择,Ubuntu 18.04 LTS 的安装,Webmin 控制面板的安装,以及 Nginx Web 服务器,MariaDB数据库服务器的安装。下面我们来进一步的介绍对于 php 和 perl 语言的支持。

安装 php 7.2-fpm

Ubuntu 18.04 的官方仓库内置了 php 7.2.5,所以直接安装就是了,无需再添加 php 的官方库。

sudo apt install -y php7.2 php7.2-fpm php7.2-cli php7.2-common php7.2-mbstring php7.2-gd php7.2-intl php7.2-xml php7.2-mysql php7.2-zip php7.2-json php7.2-curl

同之前的 php 7.1 版相比,mcrypt 被移除了。

为什么 mcrypt 被废弃了?

根据官方文档,mcrypt 扩展已经过时了大约10年,并且用起来很复杂。因此它被废弃并且被 OpenSSL 所取代。 从PHP 7.2起它将被从核心代码中移除并且移到PECL中。

而有些旧的加密解密算法,OpenSSL 不支持,那就需要安装 PECL 中的 mcrypt了。

安装完成后,执行 php -v 命令,看到的版本信息如下。

php-version.jpg

可以执行以下命令,查看 php7.2-fpm 是否已经运行。

sudo service php7.2-fpm status

php7.2-fpm-status.jpg

虚拟主机设置

简单说明:下面这些都是用来举例说明所用的,在实际使用中请用真实的数据。
IP: 45.33.52.122
Domain: webexample.win
username: davidyin

接下来我要设置一个vhost,就是一个虚拟主机,我用的域名是 webexample.win,此为举例而已。 到域名服务商处,把 webexample.win 的 A 记录指向此 VPS 的 IP 地址,生效可能需要十分钟或更久,为快捷,可以在所操作的Windows hosts 文件添加纪录使之在本地立即可用。 新建一个主机配置文件,webexample.conf,如下。

sudo nano /etc/nginx/conf.d/webexample.conf
log_format   main '$remote_addr - $remote_user [$time_local]  $status '
    '"$request" $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';

server {
    listen       80;
    server_name  webexample.win;
    access_log  /var/log/nginx/host.access.log  main;

    root   /home/davidyin/webexample.win;
    index  index.php index.html index.htm;
    
    location / {
        try_files $uri $uri/ = 404;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}

用下面命令查看是否配置正确。若正确,就重启 nginx 生效。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo service nginx restart

在/home/davidyin/webexample.win/下新建一个文件 info.php

输入如下内容:


<?php
phpinfo();

回到桌面浏览器中,输入网址 http://webexample.win/info.php ,若看到下面的内容,则说明 php 的安装正确,解析正常。

phpinfo.jpg

如果出现问题,或者是页面错误,可以查看这两个日志文件。

  1. /var/log/nginx/host.access.log
  2. /var/log/nginx/error.log

到这里为止,php7.2 已经安装完毕,并且虚拟主机也可以使用 php 语言的程序了。

SSL 证书的签发

如果是商用,或者愿意购买两年期的证书,DavidYin建议到 Gogetssl 购买,这里价格最优,无限重签,不限服务器。

  • Comodo Essential SSL 两年证书,只要 $17。
  • Comodo PositiveSSL 两年证书,只要 $7.90。
  • GGSSL Domain SSL 两年证书,$8.60。
  • 还有 thawte, Symantec,GeoTrust 的证书可以选择。

免费证书这里我采用 Let's Encrypt 的 SSL 证书。使用了 Neilpang 的脚本来安装。每三个月自动续签。

先安装工具。


davidyin@localhost:~$ curl  https://get.acme.sh | sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   705  100   705    0     0   1236      0 --:--:-- --:--:-- --:--:--  1234
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  164k  100  164k    0     0  2569k      0 --:--:-- --:--:-- --:--:-- 2569k
[Tue May 29 10:26:28 UTC 2018] Installing from online archive.
[Tue May 29 10:26:28 UTC 2018] Downloading https://github.com/Neilpang/acme.sh/archive/master.tar.gz
[Tue May 29 10:26:28 UTC 2018] Extracting master.tar.gz
[Tue May 29 10:26:28 UTC 2018] Installing to /home/davidyin/.acme.sh
[Tue May 29 10:26:28 UTC 2018] Installed to /home/davidyin/.acme.sh/acme.sh
[Tue May 29 10:26:28 UTC 2018] Installing alias to '/home/davidyin/.bashrc'
[Tue May 29 10:26:28 UTC 2018] OK, Close and reopen your terminal to start using acme.sh
[Tue May 29 10:26:28 UTC 2018] Installing cron job
no crontab for davidyin
no crontab for davidyin
[Tue May 29 10:26:28 UTC 2018] Good, bash is found, so change the shebang to use bash as preferred.
[Tue May 29 10:26:29 UTC 2018] OK
[Tue May 29 10:26:29 UTC 2018] Install success!
davidyin@localhost:~$

安装完成后,它会把 acme.sh 安装到我的 home 目录之下:比如这里的 /home/davidyin/.acme.sh/

并且自动创建了一个 bash 的别名,方便使用,直接输入 acme.sh 命令就可以了。另外还自动创建了一个 cronjob,每天零点自动检测所有的证书,如果快过期,就会自动更新。如果安装完,不能直接运行 acme.sh 命令,重启系统就可以。

验证域名的两种方式,DNS 和 http,DNS 方式不会自动更新,所以我用了 nginx 的 http 方式,参考了这篇文章

先添加两个目录。

mkdir -p /home/davidyin/webexample.win/.well-known/acme-challenge

接下来,在我的 Nginx 配置文件 /etc/nginx/conf.d/webexample.conf 中添加一段到 server 中,


location /.well-known/acme-challenge/ {
    alias /home/davidyin/webexample.win/.well-known/acme-challenge/;
}

接着重启 nginx 服务。

acme.sh --issue -d webexample.win -w /home/davidyin/webexample.win --keylength ec-384

上面这个命令就是签发证书所用,最后一个参数是采用椭圆函数来加密。如果都正常,签发结果如下。

acme.sh.issue.jpg

签发后的证书都在 /home/davidyin/.acme.sh/webexample.win_ecc/ 目录之下。所以下面就是要安装证书了,我会建议把证书安装到 /etc/nginx/ssl/webexample.com 目录下面。

sudo mkdir -p /etc/nginx/ssl/webexample.win
sudo chmod 777 /etc/nginx/ssl/webexample.win

acme.sh --install-cert -d webexample.win \ --cert-file /etc/nginx/ssl/webexample.win/cert \ --key-file /etc/nginx/ssl/webexample.win/key \ --fullchain-file /etc/nginx/ssl/webexample.win/fullchain \ --reloadcmd "systemctl reload nginx.service" --ecc

证书签发好了,也已经安装完毕,三个月有效,接下来的文章会介绍如何在 nginx 配置文件中使用证书,并且重定向等。


作者: David Yin
原载: SEO 网站优化推广
版权所有。转载时必须以链接形式注明作者和及本声明。