在今天的帖子中,我将向您展示我如何在阿里云上部署网站 www.87cloud.com。
我在阿里云弹性计算服务(ECS)实例上使用WordPress构建了我的网站,其中包含Nginx,PHP 7.2,FastCGI,MariaDB和Redis缓存,以实现最佳性能。
在你开始之前,我假设你已经对云、网络和Linux命令行有了基本的了解。
您还需要为您的网站提供一个功能域名。
步骤#1:创建新帐户如果您还没有帐户,可以在此处注册。新用户可以享受价值$ 300- $ 1200的免费试用,有效期为2个月。如果您不确定如何执行此操作,请参阅本教程。
设置帐户后,您就可以部署高性能WordPress网站了!
步骤#2:创建新的ECS实例通过输入您的电子邮件和密码登录阿里云控制台。出于安全目的,您可能需要输入安全代码。
在阿里云控制台中,单击产品,然后从列表中选择弹性计算服务。
单击实例,然后从左上角的下拉菜单中选择您的区域。将显示可用区域的列表。
单击创建实例。对于我的实例,我选择了以下配置。
- 计费方式:包年包月
- 实例类型:IO 优化
- 虚拟处理器: 1
- 内存: 4GB
- 家庭:平衡型百万4
- 数量: 1 单位
我选择了一个具有 4GB 物理内存 (RAM) 和 1 个虚拟 CPU 的 IO 优化实例。如果您的网站将托管更多动态内容,请考虑购买更高规格的实例。
现在,您必须为实例选择适当的映像。我为我的服务器选择了一个Ubuntu 16.04映像。
- 镜像类型: 公众形象
- 操作系统 (OS): Ubuntu
- 操作系统版本: 16.04 64位
- 启用安全增强功能。此功能将添加一些安全功能,例如后门检测,远程登录警报等。
还有其他一些配置需要考虑,我为其余的配置选择了默认设置。
步骤#3:设置阿里云DNS阿里云 DNS 是一项权威的高可用性和高度可扩展的域名解析和管理服务。DNS代表域名系统,它帮助我们将IP地址映射到域名。要使用阿里云的 DNS 服务,您需要更新域控制面板中的名称服务器。名称服务器将由阿里云提供。
在开始之前,您需要获取实例的公有 IP。请按照以下步骤继续操作:
- 登录 ECS 管理控制台
- 单击实例
- 记下实例的公有 IP
- 登录阿里云控制台
- 从产品列表中单击 CloudDNS
- 单击基本数字网络
- 点击添加域名
- 输入您的域名,然后点击确认
将显示几个名称服务器。在域的控制面板中更新它们。DNS 迁移最多可能需要 48 小时,因此您必须耐心等待!
现在,您必须添加两个"A"记录。
为第一条"A"记录输入以下详细信息。
- 记录类型: A
- 主机:@
- ISP 线路:默认
- 值:实例的 IP 地址
- TTL:10 分钟
为其他"A"记录输入以下详细信息。
- 记录类型: A
- 主持人: *
- ISP 线路:默认
- 值:实例的 IP 地址
- TTL:10 分钟
您可以通过 VNC 或 SSH 连接到您的实例。VNC需要高速互联网连接,而SSH即使在连接速度较慢的情况下也能正常工作。所以,我更喜欢使用SSH而不是VNC。
通过 Linux / Mac 连接打开命令行并输入以下代码:
ssh root@your-instance-ip
键入 yes 并输入 root 密码。如果密码正确,您将成功登录。
通过 Windows 连接如果您使用的是 Windows 计算机,则需要使用第三方程序,例如 PuTTY。使用 PuTTY 连接到服务器。输入实例的用户名和密码以登录
步骤#5:检查驱动程序错误首次启动实例时,最好检查是否存在与驱动程序相关的错误消息和警告。在 Linux 中,dmesg 命令用于查看驱动程序消息。
英特尔 RAPL 驱动程序显示一条错误消息。如果遇到相同的问题,可以通过运行以下命令安全地将驱动程序列入黑名单。
echo "blacklist intel_rapl" >> /etc/modprobe.d/blacklist.conf
内核在下次启动期间不会加载此驱动程序。通过键入 reboot 命令重新启动服务器。
步骤#6:更新系统Ubuntu 基于 Debian。APT包管理器用于所有基于Debian的发行版,包括Ubuntu。
apt update && apt full-upgrade -y
这会将所有软件包和内核更新到最新版本。建议在分发升级后重新启动。
让我们清理系统并删除不再需要的所有软件包。
apt clean -y && apt remove -y
步骤#7:设置默认时区
运行以下命令:
dpkg-reconfigure tzdata
选择您的地理区域,然后选择您的城市。
步骤#8:安装NginxNginx是一款高性能的Web服务器,能够处理数千个并发连接。它是Apache Web服务器的绝佳替代品。
在安装之前,让我们安装所需的软件包:
apt install software-properties-common zip sendmail vim nano -y
您将安装最新版本的Nginx,这在官方Ubuntu存储库中不可用。
添加 Nginx 存储库:
echo "deb Index of /packages/ubuntu/ xenial nginx" >> /etc/apt/sources.list.d/nginx.list
添加Nginx的签名密钥:
curl -O https://nginx.org/keys/nginx_signing.key && apt-key add ./nginx_signing.key
更新软件包列表:
apt update
安装NGINX:
apt install nginx -y
验证Nginx是否安装成功:
nginx -v
删除默认配置:
rm /etc/nginx/sites-enabled/default
rm /etc/nginx/sites-available/default
删除默认网页:
rm /var/www/html/index.nginx-debian.html
在启动期间启动 Nginx:
systemctl enable nginx
步骤#9:安装PHP-FPM
添加 PHP 7.2 PPA:
add-apt-repository ppa:ondrej/php -y
更新软件包列表:
apt update
安装 PHP:
apt install php7.2-fpm -y
验证 PHP 是否已成功安装:
php -v
安装所需的 PHP 扩展:
apt install php7.2-redis php7.2-imap php7.2-xmlrpc php7.2-mysqlnd php7.2-imagick php7.2-gd php7.2-mbstring php7.2-common php7.2-zip php7.2-curl -y
在启动期间启动 PHP:
systemctl enable php7.2-fpm
步骤#10:安装MariaDB
添加 MariaDB PPA:
add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirror.sax.uk.as61049.net/mariadb/repo/10.1/ubuntu xenial main' -y
更新软件包列表:
apt update
安装 MariaDB 服务器:
apt install mariadb-server -y
在安装过程中,系统将提示您输入 root 密码。重新输入相同的密码并按Enter键。
请注意,默认安装不安全。您可以通过运行以下命令来保护安装:
mysql_secure_installation
系统将要求您输入您的 root 密码。然后,系统将提示您一些问题。我使用了以下设置(按Y表示是,按N表示否):
- 更改根密码?不
- 删除匿名用户?是的
- 是否允许远程根登录?是的
- 删除测试数据库并对其进行访问?是的
- 现在重新加载权限表?是的
在启动期间启动 MariaDB:
systemctl enable mysql
步骤#11:创建数据库和数据库用户
以 root 用户身份登录:
mysql -u root -p
输入您的根密码。您将登录到 MariaDB 控制台。
创建新用户:
CREATE USER "example-user"@"localhost" IDENTIFIED BY "password";
将"示例用户"和"密码"替换为您自己的用户名和密码。
创建一个新数据库:
CREATE DATABASE wordpress;
向新创建的用户授予所有权限:
GRANT ALL PRIVILEGES ON . to "example-user"@"localhost";
重新加载权限表:
FLUSH PRIVILEGES;
退出控制台:
EXIT;
步骤#12:配置Nginx
打开Nginx配置文件:
nano /etc/nginx/nginx.conf
不要忘记将 example.com 替换为您的实际域名。
粘贴以下内容:
user www-data;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 10240;
multi_accept on;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
fastcgi_cache_path /var/www/cache levels=1:2 keys_zone=example.com:200m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
sendfile on;
tcp_nopush on;
tcp_nodelay on;
types_hash_max_size 2048;
server_tokens off;
keepalive_timeout 15;
client_max_body_size 512M;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header X-FastCGI-Cache $upstream_cache_status;
gzip_vary on;
gzip_comp_level 5;
gzip_min_length 1024;
gzip_proxied any;
gzip_buffers 16 8k;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
limit_req_status 444;
gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 444;
}
}
这是我们的全球Nginx配置。要退出nano,请按Ctrl + O,然后按Enter键。
您必须为您的域创建另一个:
nano /etc/nginx/sites-enabled/example.com
粘贴以下内容:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/html;
index index.php;
set $skip_cache 0;
if ($request_method = POST) {
set $skip_cache 1;
}
if ($query_string != "") {
set $skip_cache 1;
}
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
set $skip_cache 1;
}
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}
if ($request_uri ~* "/cart/*$|/checkout/*$|/my-account/*$") {
set $skip_cache 1;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_cache example.com;
include fastcgi.conf;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
fastcgi_cache_valid 10m;
}
location ~* \.(jpg|jpeg|gif|png)$ {
expires 365d;
}
location ~* \.(pdf|css|ico|js|swf)$ {
expires 10d;
}
}
测试 Nginx 配置:
nginx -t
如果测试成功,请通过键入以下内容重新启动nginx:
systemctl restart nginx
步骤 #13:为对象缓存配置 Redis 服务器
安装 Redis 服务器:
apt install redis-server -y
在引导期间启动 Redis 服务器:
systemctl enable redis-server
配置 Redis 服务器的内存限制:
echo "maxmemory 256mb" >> /etc/redis/redis.conf
重新启动 Redis 服务器:
systemctl restart redis-server
重新启动 PHP:
systemctl restart php7.2-fpm
步骤#14:配置PHP
打开 PHP 7.2 配置文件:
nano /etc/php/7.2/fpm/php.ini
更改以下值:
max_execution_time = 60
max_input_time = 60
memory_limit = 512M
max_input_vars = 6000
upload_max_filesize = 512M
post_max_size = 512M
步骤#15:通过让我们加密安装免费的SSL证书
添加让我们加密 PPA:
add-apt-repository ppa:certbot/certbot
更新软件包列表 :
apt update
Install certbot for Nginx:
apt-get install python-certbot-nginx -y
获取 SSL:
certbot --nginx -d example.com -d www.example.com
按2并按回车键。
您将获得SSL证书,certbot将自动为您配置它。
请记住,SSL 证书将在 90 天后过期。运行以下命令以手动续订证书:
certbot renew
步骤#16:安装WordPress
移动到 Nginx 根目录:
cd /var/www/html
下载WordPress:
wget wget https://wordpress.org/latest.zip
解压缩包
unzip latest.zip
将所有文件移动到Nginx的根目录:
mv wordpress/* ./ && rmdir wordpress
创建用于存储缓存的目录:
mkdir -p /var/www/cache
更改Nginx根目录的所有权:
chown -R www-data:www-data /var/www/
现在,在浏览器的地址栏中键入网站的URL。
按照屏幕上的说明完成安装。您需要输入步骤 10 中的数据库详细信息。
另外,不要忘记安装Nginx缓存和Redis缓存插件。
结论我希望你喜欢这个指南。这就是我如何使用WordPress和弹性计算服务(ECS)实例在阿里云上部署我的博客。如果您遇到任何问题,请在评论部分告诉我!