安装 Ubuntu 18.04, Webmin, Nginx, MariaDB, PHP7.2-FPM,Perl-Fastcgi 到 Linode 的 VPS(4)
作者:
最后更新于 | 最初发布于 | 分类: 服务器和主机
安装 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 命令,看到的版本信息如下。
可以执行以下命令,查看 php7.2-fpm 是否已经运行。
sudo service php7.2-fpm status
虚拟主机设置
简单说明:下面这些都是用来举例说明所用的,在实际使用中请用真实的数据。
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 的安装正确,解析正常。
如果出现问题,或者是页面错误,可以查看这两个日志文件。
- /var/log/nginx/host.access.log
- /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
上面这个命令就是签发证书所用,最后一个参数是采用椭圆函数来加密。如果都正常,签发结果如下。
签发后的证书都在 /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 配置文件中使用证书,并且重定向等。
相关的文章
- 安装 Ubuntu 22.04 (LTS), Webmin, Nginx, MariaDB, PHP8.1-FPM,Perl-Fastcgi 到 DigitalOcean 的 VPS(4)
- 安装 Ubuntu 20.04, Webmin, Nginx, MariaDB, PHP7.4-FPM,Perl-Fastcgi 到 DigitalOcean 的 VPS(4)
- 安装 Ubuntu 24.04 (LTS), Webmin, Nginx, MariaDB, PHP8.3-FPM,Perl-Fastcgi 到 DigitalOcean 的 VPS(4)
- 聊聊 SSL 证书这件事
- 安装Nginx, MySQL, PHP-FPM, Perl-Fastcgi到Ubuntu 14.04 LTS
- 免费DV SSL证书
- CloudFlare 的 SSL 用法
- SSL 证书之选择
评论