作者:
最后更新于 | 最初发布于 | 分类: 服务器和主机
安装 Ubuntu 20.04 LTS, Webmin, Nginx, MariaDB, PHP7.4-FPM,Perl-Fastcgi 到 DigitalOcean 的 VPS上。
DavidYin 介绍了如何在 DigitalOcean 创建新 VPS。并且完成基本的 Ubuntu 20.04 LTS的系统。然后介绍如何安装 Webmin 主机控制面板,时区设置和 SSH 的安全设置。再之后说明一下如何用之前的新添加的用户来安装 Nginx Web 服务器和 MairaDB数据库服务器。
现在就是很重要的语言支持部分了。因为我用的最多的就是 php 以及 perl 语言。所以这两部分就是重点了。
Ubuntu 20.04 LTS 仓库所包含的是 php7.4,目前 php 官方支持的版本是 从7.2,7.3,7.4 这三个系列。所以直接使用Ubuntu的就已经是很新的版本了。
sudo apt install php7.4 php7.4-fpm php7.4-cli php7.4-common php7.4-mbstring php7.4-gd php7.4-intl php7.4-xml php7.4-mysql php7.4-zip php7.4-json php7.4-curl
安装完成后,执行 php -V 命令,可以看到版本信息。
[email protected]:~$ php -v
PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
再看一下 php7.4-fpm 是否已经运行。
sudo service php7.4-fpm status
说明:下面这些都是用来举例说明所用的,在实际使用中请用真实的数据。
IP: 45.33.52.122
Domain: u20.webexample.win
username: davidyin
接下来我要设置一个vhost,就是一个虚拟主机,我用的域名是 u20.webexample.win,此为举例而已。 到域名服务商处,把 u20.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 u20.webexample.win;
access_log /var/log/nginx/host.access.log main;
root /home/davidyin/u20.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.4-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;
}
}
保存退出,然后执行 sudo nginx -t 命令看看,是否配置文件正确。若正确,就重启 Nginx 服务,使配置生效。
sudo service nginx restart
在/home/davidyin/u20.webexample.win/下新建一个文件 info.php
输入如下内容:
<?php
phpinfo();
回到桌面浏览器中,输入网址 http://u20.webexample.win/info.php,如果看到下面这些内容,就表示 php 安装正确, nginx 也运行正确。
如果出现问题,或者是页面错误,可以查看这两个日志文件。
- /var/log/nginx/host.access.log
- /var/log/nginx/error.log
至此,php 7.4 已经安装完毕,并且虚拟主机也可以使用 php 的语言了。
如果是商用,或者愿意购买两年期的证书,DavidYin建议到 Gogetssl 购买,这里价格最优,无限重签,不限服务器。
免费证书这里我采用 Let's Encrypt 的 SSL 证书。使用了 Neilpang 的脚本来安装。每月自动续签。
先安装工具。
[email protected]:~$ curl https://get.acme.sh | sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 775 0 775 0 0 10616 0 --:--:-- --:--:-- --:--:-- 10472
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 192k 100 192k 0 0 2140k 0 --:--:-- --:--:-- --:--:-- 2140k
[Sun Apr 26 02:51:39 PDT 2020] Installing from online archive.
[Sun Apr 26 02:51:39 PDT 2020] Downloading https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
[Sun Apr 26 02:51:39 PDT 2020] Extracting master.tar.gz
[Sun Apr 26 02:51:39 PDT 2020] Installing to /home/davidyin/.acme.sh
[Sun Apr 26 02:51:39 PDT 2020] Installed to /home/davidyin/.acme.sh/acme.sh
[Sun Apr 26 02:51:39 PDT 2020] Installing alias to '/home/davidyin/.bashrc'
[Sun Apr 26 02:51:39 PDT 2020] OK, Close and reopen your terminal to start using acme.sh
[Sun Apr 26 02:51:39 PDT 2020] Installing cron job
no crontab for davidyin
no crontab for davidyin
[Sun Apr 26 02:51:39 PDT 2020] Good, bash is found, so change the shebang to use bash as preferred.
[Sun Apr 26 02:51:40 PDT 2020] OK
[Sun Apr 26 02:51:40 PDT 2020] Install success!
安装完成后,它会把 acme.sh 安装到我的 home 目录之下:比如这里的 /home/davidyin/.acme.sh/
并且自动创建了一个 bash 的别名,方便使用,直接输入 acme.sh 命令就可以了。另外还自动创建了一个 cronjob,每天零点自动检测所有的证书,如果快过期,就会自动更新。如果安装完,不能直接运行 acme.sh 命令,重启系统就可以。
验证域名的方式有两种,DNS 和 http,我采用了 DNS api 方式,因为我用的域名管理商 namesilo 是被支持的。
acme.sh --issue --dns dns_namesilo --dnssleep 900 -d u20.webexample.win -k ec-384
要等待 900 秒钟,才能完成验证。
验证正确,就会自动签发证书,证书会临时先存放在一个工作目录,现在我要指定一个目录存放: /home/davidyin/ssl/。
mkdir ~/ssl
acme.sh --install-cert -d u20.webexample.win \
--key-file /home/davidyin/ssl/key \
--fullchain-file /home/davidyin/ssl/cert \
--reloadcmd "service nginx force-reload" \
--ecc
就这样,证书也签发好了,也安装到指定位置,接下来会介绍如何在 nginx 的配置文件中,设置证书,设置 https,设置重定向,还有 perl-fastcgi等等。
安装 Ubuntu 20.04, Webmin, Nginx, MariaDB, PHP7.4-FPM,Perl-Fastcgi 到 DigitalOcean 的 VPS