|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1. 介绍Alpine Linux和WordPress
Alpine Linux是一个基于musl libc和busybox的轻量级Linux发行版,以其安全性、简洁性和高效性而闻名。它的镜像体积非常小(通常只有几MB),这使得它成为容器化和资源受限环境的理想选择。WordPress则是世界上最流行的内容管理系统(CMS),全球超过40%的网站都使用WordPress构建。
在Alpine Linux上运行WordPress可以提供一个轻量、安全且高性能的网站环境。本教程将指导您完成在Alpine Linux上安装和配置WordPress的全过程,包括Nginx作为Web服务器,PHP作为服务器端脚本语言,MariaDB/MySQL作为数据库管理系统,以及如何进行安全加固以确保网站稳定运行。
2. 环境准备和系统更新
首先,我们需要准备一个Alpine Linux环境。这可以是一台物理服务器、虚拟机或云服务器。确保您具有root权限或sudo权限。
2.1 系统更新
登录到您的Alpine Linux系统后,首先更新系统软件包到最新版本:
- # 更新可用软件包列表
- apk update
- # 升级已安装的软件包
- apk upgrade
- # 安装必要的工具
- apk add bash wget curl nano
复制代码
2.2 添加社区仓库
Alpine Linux默认只包含主仓库,但许多软件包(如Nginx和PHP-FPM)位于社区仓库中。我们需要编辑/etc/apk/repositories文件来启用社区仓库:
- # 编辑仓库配置文件
- nano /etc/apk/repositories
复制代码
取消注释以http://dl-cdn.alpinelinux.org/alpine/v3.14/community开头的行(版本号可能不同),或者直接添加以下行:
- http://dl-cdn.alpinelinux.org/alpine/v3.14/community
复制代码
保存文件后,再次更新软件包列表:
3. 安装和配置Nginx
Nginx是一个高性能的Web服务器和反向代理服务器,以其稳定性、丰富的功能集和低内存消耗而闻名。
3.1 安装Nginx
使用以下命令安装Nginx:
3.2 启动并启用Nginx服务
安装完成后,启动Nginx服务并设置为开机自启:
- # 启动Nginx服务
- rc-service nginx start
- # 添加Nginx到开机启动项
- rc-update add nginx default
复制代码
3.3 验证Nginx安装
您可以通过检查Nginx服务状态来验证它是否正在运行:
此外,您还可以在浏览器中访问服务器的IP地址,应该能看到Nginx的默认欢迎页面。
3.4 配置Nginx
Nginx的主配置文件位于/etc/nginx/nginx.conf。我们可以先备份原始配置文件,然后创建一个新的配置:
- # 备份原始配置文件
- mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
- # 创建新的配置文件
- nano /etc/nginx/nginx.conf
复制代码
以下是一个基本的Nginx配置:
- user nginx;
- worker_processes auto;
- error_log /var/log/nginx/error.log warn;
- pid /var/run/nginx.pid;
- events {
- worker_connections 1024;
- use epoll;
- multi_accept on;
- }
- 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;
- sendfile on;
- tcp_nopush on;
- tcp_nodelay on;
- keepalive_timeout 65;
- types_hash_max_size 2048;
- server_tokens off;
- include /etc/nginx/conf.d/*.conf;
- }
复制代码
3.5 创建网站目录结构
为WordPress创建必要的目录结构:
- # 创建网站根目录
- mkdir -p /var/www/html
- # 设置目录权限
- chown -R nginx:nginx /var/www/html
- chmod -R 755 /var/www/html
复制代码
4. 安装和配置PHP
WordPress是基于PHP开发的,因此我们需要安装PHP及其必要的扩展。
4.1 安装PHP及扩展
在Alpine Linux中,PHP包的命名方式是phpX,其中X是PHP版本号。我们将安装PHP 7及其必要的扩展:
- # 安装PHP7及其FPM
- apk add php7 php7-fpm php7-mysqli php7-json php7-mbstring php7-gd php7-curl php7-zip php7-openssl php7-session php7-xml php7-dom
- # 安装其他有用的PHP扩展
- apk add php7-opcache php7-intl php7-bcmath
复制代码
4.2 配置PHP-FPM
PHP-FPM(FastCGI Process Manager)是PHP的一个FastCGI实现,它提供了更好的性能和更高级的功能。
首先,备份原始配置文件:
- mv /etc/php7/php-fpm.conf /etc/php7/php-fpm.conf.bak
复制代码
创建新的配置文件:
- nano /etc/php7/php-fpm.conf
复制代码
添加以下配置:
- [global]
- pid = /var/run/php7-fpm.pid
- error_log = /var/log/php7-fpm.log
- log_level = notice
- [www]
- user = nginx
- group = nginx
- listen = /var/run/php7-fpm.sock
- listen.owner = nginx
- listen.group = nginx
- listen.mode = 0660
- pm = dynamic
- pm.max_children = 50
- pm.start_servers = 5
- pm.min_spare_servers = 5
- pm.max_spare_servers = 35
- pm.max_requests = 500
- request_terminate_timeout = 30
- slowlog = /var/log/php7-fpm.slow.log
- security.limit_extensions = .php .php3 .php4 .php5 .php7 .php8
复制代码
4.3 配置PHP
接下来,我们需要配置PHP本身。编辑PHP的主配置文件:
修改以下设置以优化WordPress的性能和安全性:
- ; 增加内存限制
- memory_limit = 256M
- ; 增加上传文件大小限制
- upload_max_filesize = 64M
- post_max_size = 64M
- ; 增加执行时间限制
- max_execution_time = 300
- ; 设置时区
- date.timezone = "Asia/Shanghai"
- ; 禁用危险函数
- disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
- ; 启用OPcache以提高性能
- opcache.enable=1
- opcache.memory_consumption=128
- opcache.interned_strings_buffer=8
- opcache.max_accelerated_files=4000
- opcache.revalidate_freq=60
- opcache.fast_shutdown=1
- opcache.enable_file_override=0
- opcache.validate_timestamps=1
复制代码
4.4 启动并启用PHP-FPM服务
- # 启动PHP-FPM服务
- rc-service php7-fpm start
- # 添加PHP-FPM到开机启动项
- rc-update add php7-fpm default
复制代码
4.5 验证PHP-FPM安装
检查PHP-FPM服务状态:
- rc-service php7-fpm status
复制代码
5. 安装和配置MariaDB/MySQL
WordPress需要一个数据库来存储其数据。在Alpine Linux中,我们可以选择安装MariaDB(MySQL的一个分支)或MySQL。本教程将使用MariaDB。
5.1 安装MariaDB
- # 安装MariaDB服务器和客户端
- apk add mariadb mariadb-client
- # 初始化MariaDB数据目录
- mysql_install_db --user=mysql --datadir=/var/lib/mysql
- # 启动MariaDB服务
- rc-service mariadb start
- # 添加MariaDB到开机启动项
- rc-update add mariadb default
复制代码
5.2 安全配置MariaDB
运行MariaDB的安全安装脚本:
- mysql_secure_installation
复制代码
按照提示进行以下操作:
1. 设置root密码(如果尚未设置)
2. 删除匿名用户
3. 禁止root远程登录
4. 删除测试数据库
5. 重新加载权限表
5.3 创建WordPress数据库
登录到MariaDB:
输入root密码后,执行以下SQL命令创建WordPress数据库和用户:
- -- 创建数据库
- CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- 创建数据库用户
- CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'your_strong_password';
- -- 授予用户对数据库的所有权限
- GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'localhost';
- -- 刷新权限
- FLUSH PRIVILEGES;
- -- 退出
- EXIT;
复制代码
请确保将your_strong_password替换为一个强密码。
6. 下载和配置WordPress
现在我们已经准备好所有必要的服务,可以下载并配置WordPress了。
6.1 下载WordPress
- # 切换到网站根目录
- cd /var/www/html
- # 下载WordPress最新版本
- wget https://wordpress.org/latest.tar.gz
- # 解压WordPress
- tar -xzvf latest.tar.gz
- # 将WordPress文件移动到网站根目录
- mv wordpress/* .
- # 删除压缩包和空目录
- rm -rf wordpress latest.tar.gz
- # 设置文件权限
- chown -R nginx:nginx /var/www/html
- find /var/www/html -type d -exec chmod 755 {} \;
- find /var/www/html -type f -exec chmod 644 {} \;
复制代码
6.2 配置WordPress
WordPress需要一个配置文件来连接数据库。我们可以通过复制示例配置文件来创建:
- # 复制示例配置文件
- cp wp-config-sample.php wp-config.php
- # 编辑配置文件
- nano wp-config.php
复制代码
修改以下部分以匹配我们之前创建的数据库信息:
- /** WordPress数据库的名称 */
- define('DB_NAME', 'wordpress');
- /** MySQL数据库用户名 */
- define('DB_USER', 'wp_user');
- /** MySQL数据库密码 */
- define('DB_PASSWORD', 'your_strong_password');
- /** MySQL主机 */
- define('DB_HOST', 'localhost');
- /** 创建数据表时默认的文字编码 */
- define('DB_CHARSET', 'utf8mb4');
- /** 数据库整理类型。如不确定请勿更改 */
- define('DB_COLLATE', '');
复制代码
为了增强安全性,我们还需要添加安全密钥。您可以在WordPress官方密钥生成器页面获取这些密钥:https://api.wordpress.org/secret-key/1.1/salt/
将生成的密钥替换配置文件中的相应部分:
- define('AUTH_KEY', 'put your unique phrase here');
- define('SECURE_AUTH_KEY', 'put your unique phrase here');
- define('LOGGED_IN_KEY', 'put your unique phrase here');
- define('NONCE_KEY', 'put your unique phrase here');
- define('AUTH_SALT', 'put your unique phrase here');
- define('SECURE_AUTH_SALT', 'put your unique phrase here');
- define('LOGGED_IN_SALT', 'put your unique phrase here');
- define('NONCE_SALT', 'put your unique phrase here');
复制代码
此外,为了增强安全性,我们可以添加以下配置:
- /* 禁用文件编辑功能 */
- define('DISALLOW_FILE_EDIT', true);
- /* 强制使用SSL管理 */
- define('FORCE_SSL_ADMIN', true);
- /* 自动更新 */
- define('WP_AUTO_UPDATE_CORE', true);
- /* 增加内存限制 */
- define('WP_MEMORY_LIMIT', '256M');
- /* 清理修订版本 */
- define('WP_POST_REVISIONS', 3);
- /* 自动清理垃圾箱 */
- define('EMPTY_TRASH_DAYS', 30);
- /* 禁用XML-RPC */
- define('XMLRPC_ENABLED', false);
复制代码
7. Nginx配置WordPress站点
现在我们需要配置Nginx以正确处理WordPress的请求。
7.1 创建Nginx站点配置文件
- # 创建站点配置目录
- mkdir -p /etc/nginx/conf.d
- # 创建WordPress站点配置文件
- nano /etc/nginx/conf.d/wordpress.conf
复制代码
添加以下配置:
- server {
- listen 80;
- server_name your_domain.com www.your_domain.com;
- root /var/www/html;
- index index.php index.html index.htm;
- access_log /var/log/nginx/wordpress.access.log;
- error_log /var/log/nginx/wordpress.error.log;
- location = /favicon.ico {
- log_not_found off;
- access_log off;
- }
- location = /robots.txt {
- allow all;
- log_not_found off;
- access_log off;
- }
- location / {
- try_files $uri $uri/ /index.php?$args;
- }
- location ~ \.php$ {
- try_files $uri =404;
- fastcgi_pass unix:/var/run/php7-fpm.sock;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
-
- fastcgi_read_timeout 300;
- fastcgi_buffer_size 128k;
- fastcgi_buffers 4 256k;
- fastcgi_busy_buffers_size 256k;
- }
- location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
- expires max;
- log_not_found off;
- }
- location ~ /\.ht {
- deny all;
- }
- # 禁止访问敏感文件
- location ~* /wp-includes/.*\.php$ {
- deny all;
- }
-
- location ~* /wp-content/.*\.php$ {
- deny all;
- }
- }
复制代码
请确保将your_domain.com替换为您的实际域名。
7.2 测试并重新加载Nginx配置
- # 测试Nginx配置
- nginx -t
- # 如果配置正确,重新加载Nginx
- rc-service nginx reload
复制代码
8. 完成WordPress安装
现在,所有服务器端配置都已完成,我们可以通过Web界面完成WordPress的安装。
8.1 访问WordPress安装向导
在浏览器中访问您的域名或服务器IP地址,您应该会看到WordPress的安装向导。
8.2 完成安装步骤
按照屏幕上的指示完成安装:
1. 选择您的语言
2. 输入网站标题、管理员用户名、密码和电子邮件地址
3. 点击”安装WordPress”按钮
8.3 登录WordPress
安装完成后,您可以使用刚刚创建的管理员账户登录WordPress管理后台。
9. 安全加固措施
为了确保您的WordPress网站安全稳定运行,我们需要实施一些额外的安全措施。
9.1 配置防火墙
Alpine Linux默认使用iptables作为防火墙。以下是一个基本的防火墙配置:
- # 安装iptables
- apk add iptables ip6tables
- # 创建防火墙规则文件
- nano /etc/iptables/rules.v4
复制代码
添加以下规则:
- # 允许本地回环
- -A INPUT -i lo -j ACCEPT
- # 允许已建立的连接
- -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
- # 允许SSH
- -A INPUT -p tcp --dport 22 -j ACCEPT
- # 允许HTTP和HTTPS
- -A INPUT -p tcp --dport 80 -j ACCEPT
- -A INPUT -p tcp --dport 443 -j ACCEPT
- # 允许ping
- -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
- # 拒绝所有其他入站连接
- -A INPUT -j DROP
- # 允许所有出站连接
- -A OUTPUT -j ACCEPT
复制代码
保存文件后,应用防火墙规则:
- # 应用IPv4规则
- iptables-restore < /etc/iptables/rules.v4
- # 创建IPv6规则文件
- nano /etc/iptables/rules.v6
复制代码
添加以下IPv6规则:
- # 允许本地回环
- -A INPUT -i lo -j ACCEPT
- # 允许已建立的连接
- -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
- # 允许SSH
- -A INPUT -p tcp --dport 22 -j ACCEPT
- # 允许HTTP和HTTPS
- -A INPUT -p tcp --dport 80 -j ACCEPT
- -A INPUT -p tcp --dport 443 -j ACCEPT
- # 允许ICMPv6
- -A INPUT -p ipv6-icmp -j ACCEPT
- # 拒绝所有其他入站连接
- -A INPUT -j DROP
- # 允许所有出站连接
- -A OUTPUT -j ACCEPT
复制代码
应用IPv6规则:
- # 应用IPv6规则
- ip6tables-restore < /etc/iptables/rules.v6
复制代码
创建一个启动脚本来在系统启动时加载防火墙规则:
- # 创建启动脚本
- nano /etc/local.d/iptables.start
复制代码
添加以下内容:
- #!/bin/sh
- # 加载IPv4规则
- iptables-restore < /etc/iptables/rules.v4
- # 加载IPv6规则
- ip6tables-restore < /etc/iptables/rules.v6
复制代码
使脚本可执行:
- chmod +x /etc/local.d/iptables.start
复制代码
9.2 安装SSL证书
为了保护数据传输,我们应该为网站安装SSL证书。Let’s Encrypt提供免费的SSL证书。
首先,安装Certbot:
- # 安装Certbot
- apk add certbot certbot-nginx
- # 获取SSL证书
- certbot --nginx -d your_domain.com -d www.your_domain.com
复制代码
按照提示完成证书获取过程。Certbot会自动更新Nginx配置以使用SSL。
9.3 强化WordPress安全
在WordPress管理后台中,安装并配置以下安全插件:
• Wordfence Security:提供防火墙、恶意软件扫描和登录保护
• iThemes Security(原Better WP Security):提供全面的安全加固功能
使用插件如”Limit Login Attempts Reloaded”来限制登录尝试次数,防止暴力破解攻击。
XML-RPC是WordPress的一个功能,但也可能成为安全漏洞。除非您需要它(例如,使用WordPress移动应用),否则应该禁用它。
在wp-config.php文件中添加以下代码:
- add_filter('xmlrpc_enabled', '__return_false');
复制代码
在主题的functions.php文件中添加以下代码:
- // 隐藏WordPress版本
- function remove_wp_version() {
- return '';
- }
- add_filter('the_generator', 'remove_wp_version');
复制代码
在wp-config.php文件中添加以下代码:
- // 禁用文件编辑
- define('DISALLOW_FILE_EDIT', true);
复制代码
使用插件如”WPS Hide Login”来更改默认的登录URL,防止暴力攻击。
9.4 定期更新
保持WordPress核心、主题和插件更新是确保安全的关键。您可以通过以下方式设置自动更新:
在wp-config.php文件中添加以下代码:
- // 自动更新核心
- define('WP_AUTO_UPDATE_CORE', true);
- // 自动更新插件
- add_filter('auto_update_plugin', '__return_true');
- // 自动更新主题
- add_filter('auto_update_theme', '__return_true');
复制代码
9.5 定期备份
定期备份是防止数据丢失的关键。您可以使用插件如”UpdraftPlus”或”All-in-One WP Migration”来设置定期备份。
或者,您可以创建一个简单的备份脚本:
- # 创建备份脚本
- nano /usr/local/bin/wordpress-backup.sh
复制代码
添加以下内容:
- #!/bin/bash
- # 设置变量
- DATE=$(date +%Y%m%d_%H%M%S)
- BACKUP_DIR="/backups"
- WP_DIR="/var/www/html"
- DB_NAME="wordpress"
- DB_USER="wp_user"
- DB_PASS="your_strong_password"
- # 创建备份目录
- mkdir -p $BACKUP_DIR
- # 备份数据库
- mysqldump --user=$DB_USER --password=$DB_PASS --databases $DB_NAME | gzip > $BACKUP_DIR/mysql_backup_$DATE.sql.gz
- # 备份WordPress文件
- tar -czf $BACKUP_DIR/wordpress_files_$DATE.tar.gz $WP_DIR
- # 删除30天前的备份
- find $BACKUP_DIR -type f -name "*.gz" -mtime +30 -delete
复制代码
使脚本可执行:
- chmod +x /usr/local/bin/wordpress-backup.sh
复制代码
添加到cron作业以定期执行:
添加以下行以每天凌晨2点执行备份:
- 0 2 * * * /usr/local/bin/wordpress-backup.sh
复制代码
10. 性能优化建议
为了确保您的WordPress网站运行流畅,我们可以实施一些性能优化措施。
10.1 配置OPcache
我们已经在前面的步骤中启用了OPcache,但您可以根据服务器资源调整其设置。编辑/etc/php7/conf.d/00_opcache.ini文件:
- opcache.enable=1
- opcache.memory_consumption=256
- opcache.interned_strings_buffer=32
- opcache.max_accelerated_files=20000
- opcache.revalidate_freq=0
- opcache.fast_shutdown=1
- opcache.enable_file_override=0
- opcache.validate_timestamps=0
- opcache.save_comments=1
- opcache.load_comments=1
复制代码
10.2 安装缓存插件
在WordPress中安装并配置缓存插件,如”W3 Total Cache”或”WP Super Cache”。这些插件可以生成静态HTML文件,减少服务器负载。
10.3 配置Nginx缓存
编辑Nginx站点配置文件,添加以下缓存配置:
- # 在http块中添加
- fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
- fastcgi_cache_key "$scheme$request_method$host$request_uri";
- fastcgi_cache_use_stale error timeout invalid_header http_500 http_503;
- fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
- # 在server块中添加
- set $no_cache 0;
- # 不缓存POST请求
- if ($request_method = POST) {
- set $no_cache 1;
- }
- # 不缓存带有查询参数的URL
- if ($query_string != "") {
- set $no_cache 1;
- }
- # 不缓存以下URL
- if ($request_uri ~* "/(wp-admin/|wp-login.php|cart|checkout|my-account)") {
- set $no_cache 1;
- }
- # 不缓存已登录用户
- if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
- set $no_cache 1;
- }
- # 在location ~ \.php$块中添加
- fastcgi_cache WORDPRESS;
- fastcgi_cache_valid 200 301 302 60m;
- fastcgi_cache_bypass $no_cache;
- fastcgi_no_cache $no_cache;
- add_header X-FastCGI-Cache $upstream_cache_status;
复制代码
10.4 启用Gzip压缩
在Nginx配置中添加以下Gzip压缩设置:
- # 在http块中添加
- gzip on;
- gzip_vary on;
- gzip_min_length 1024;
- gzip_comp_level 6;
- gzip_proxied any;
- gzip_types
- text/plain
- text/css
- text/xml
- text/javascript
- application/javascript
- application/xml+rss
- application/json;
复制代码
10.5 优化图片
使用插件如”Smush”或”EWWW Image Optimizer”来优化网站图片,减少加载时间。
10.6 使用内容分发网络(CDN)
考虑使用CDN服务,如Cloudflare,来加速网站内容的全球分发。
11. 维护和监控
为了确保您的WordPress网站长期稳定运行,需要定期进行维护和监控。
11.1 监控系统资源
安装监控工具如htop和vnstat来监控系统资源使用情况:
11.2 设置日志轮转
配置日志轮转以防止日志文件占用过多磁盘空间:
- # 安装logrotate
- apk add logrotate
- # 创建Nginx日志轮转配置
- nano /etc/logrotate.d/nginx
复制代码
添加以下内容:
- /var/log/nginx/*.log {
- daily
- missingok
- rotate 52
- compress
- delaycompress
- notifempty
- create 640 nginx nginx
- postrotate
- if [ -f /var/run/nginx.pid ]; then
- kill -USR1 `cat /var/run/nginx.pid`
- fi
- endscript
- }
复制代码
11.3 设置监控警报
使用监控服务如UptimeRobot或StatusCake来监控网站可用性,并在网站宕机时接收警报。
11.4 定期检查安全
定期使用安全插件扫描网站以查找潜在的安全漏洞和恶意软件。
11.5 性能监控
使用工具如Google PageSpeed Insights或GTmetrix定期检查网站性能,并根据建议进行优化。
结论
通过本教程,您已经成功在Alpine Linux环境下搭建了一个安全、高效的WordPress网站。我们涵盖了从系统准备、Nginx配置、PHP设置、数据库连接到安全加固和性能优化的全过程。
请记住,网站的安全和维护是一个持续的过程。定期更新软件、监控网站性能、备份数据并实施安全措施是确保网站长期稳定运行的关键。
随着您的网站发展,您可能需要进一步优化和扩展您的设置。但本教程提供了一个坚实的基础,您可以在此基础上构建一个成功的WordPress网站。
版权声明
1、转载或引用本网站内容(Alpine Linux环境下WordPress安装配置全教程从零开始搭建个人网站涵盖Nginx配置PHP设置数据库连接及安全加固确保网站稳定运行)须注明原网址及作者(威震华夏关云长),并标明本网站网址(https://upload.pixtech.org/)。
2、对于不当转载或引用本网站内容而引起的民事纷争、行政处理或其他损失,本网站不承担责任。
3、对不遵守本声明或其他违法、恶意使用本网站内容者,本网站保留追究其法律责任的权利。
本文地址: https://upload.pixtech.org/thread-31302-1-1.html
|
|