手动搭建Wordpress

Wordpress无疑是全世界最流行的CMS平台,据统计,43%的互联网网站都由wordpress搭建。全世界虚拟主机提供商几乎都会提供一键建wordpress的功能,方便个人、企业快速搭建门户、博客网站,这种方式也是首选的方式,免去很多维护管理的成本。

本文则按照一步步方式搭建,有兴趣的可以了解下过程。

拓扑如下:

#  在两台机器上都更新下sudo apt update & sudo apt upgradesudo reboot#  代理机器安装 nginxsudo apt install nginxsudo systemctl status nginx#  博客机器(wordpress)安装apache2sudo apt install apache2sudo systemctl status apache2#  在浏览器上测试这两个地址能正常访问。#  由于还没设置相关安全性,先关闭这两个服务,#  另外在两台服务器上新建普通用户kelemi,避免用root用户操作systemctl stop nginx  #  nginx服务器systemctl stop apache2#apache服务器adduser kelemiusermod -aG sudo kelemi#  限制root远程ssh#  限制特定的IP才能登录服务器vim /etc/ssh/sshd_config#  修改 PermitRootLogin 为 nosystemctl restart ssh

为Wordpress设置UFW和MariaDB

#  设置ufw,只允许合法IP地址访问#  comment 在高版本 ufw中支持#  以下是nginx的ufw设置which ufw  #  确认已安装sudo ufw allow from *.*.*.* to any port 22 proto tcp comment "ssh"ufw enableufw status numberedsudo ufw allow 80 comment apachesudo ufw allow 443 comment httpsufw status numbered#  设置apache的防火墙#  只允许 nginx 服务器访问sudo ufw allow from <nginx的地址> to any port 22 proto tcp comment sshsudo ufw allow from <nginx的地址> to any port 80 proto tcp comment apachesudo ufw enable#  下面开始设置 MariaDB,在apache服务器上sudo apt install mariadb-serversystemctl status mariadb#  设置mariadbmariadb  #  进入mariadbCREATE DATABASE wordpressdb;show databases;GRANT ALL PRIVILEGES on wordpressdb.* to wordpress@localhost IDENTIFIED BY mypassword;mysql_secure_installation  #  设置root密码等信息 

设置Wordpress的Apache

ssh到apache服务器,因上一节的IP限制,需先ssh到nginx,再从nginx服务器ssh到apache.

需要限制实际的服务器对公众的开放。

实际还有堡垒主机的解决方案,保证所有ssh都通过严格控制的堡垒主机才能访问,当然这超出了本节的范围。

#  更新系统sudo apt update#安装一些php包sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip#  启用apache重写模块,并重启apache,检查是否正常sudo a2enmod rewritesudo systemctl restart apache2sudo systemctl status apache2#  查看 /etc/apache2/sites-available #  禁用原有的站点sudo a2dissite 000-default.confsudo a2dissite default-ssl.conf#  新建wordpress站点,命名是 blogsudo  vim /etc/apache2/sites-available/wordpress.td.masterpeak.cn.conf<VirtualHost *:80>DocumentRoot "/var/www/html/wordpress.td.masterpeak.cn"ServerName wordpress.td.masterpeak.cn<Directory "/var/www/html/wordpress.td.masterpeak.cn/">Options MultiViews FollowSymlinksAllowOverride AllOrder allow,denyAllow from all </Directory> TransferLog /var/log/apache2/wordpress.td.masterpeak.cn_access.log ErrorLog /var/log/apache2/wordpress:w.td.masterpeak.cn_error.log</VirtualHost>#  启用站点sudo a2ensite wordpress.td.masterpeak.cn.confsudo systemctl restart apache2sudo systemctl status apache2#  回到主目录下载wordpresswget https://wordpress.org/latest.tar.gztar -xvf latest.tar.gz#  改变属主为apache使用#  www-data: 等同于 www-data:www-data,属于简化写法sudo chown www-data: -R wordpress/ls -l wordpress/#  迁移到到apache的目录sudo mv wordpress /var/www/html/wordpress.td.masterpeak.cnls -l /var/www/html#  删除原有的文件rm /var/www/html/index.html#  sudo !!  #  tips:两个感叹号表示最后一次的命令#  用sudo !!就可以加上sudo执行,避免重复输入cd /var/www/html/wordpress.td.masterpeak.cn/ls -l#  重命名wp-config-sample.php,再作修改sudo mv wp-config-sample.php wp-config.phpvim wp-config.php#  修改数据库名,用户名,密码,服务器等数据库连接信息:wq  #  保存

最后完成wordpressp安装

#启动nginxsudo systemctl status nginxsudo systemctl start nginx# 进入nginx 目录,查看情况cd /etc/nginxls -l#  看到有sites-available和sites-enabled目录#  与apache非常相似,sites-available有默认的站点,可以添加自己定义的#  比如 blog.learnlinux.cloud.conf#  而在 sites-enabled 有指向 sites-available下的文件的链接#  nginx没有apache的 a2ensite命令,所以需要手动创建软链接#  删除默认站点配置文件cd /etc/nginx/sites-enabledrm defaultcd ../sites-availablerm defaultvim /etc/nginx/sites-available/wordpress.td.masterpeak.cn.conf# 修改反向代理指向wordpress服务器

cd /etc/nginx/sites-enabledsudo ln -s /etc/nginx/sites-available/wordpress.td.masterpeak.cn.conf#  同名软链接可以省略名称#  重启nginxsudo systemctl restart nginxsudo systemctl status nginx#  apache服务器需要安装几个包才能运行sudo apt install php-mysql libapache2-mod-phpsudo systemctl restart apache2#  测试访问正常,设置登陆的管理员用户密码#  目前nginx没有ssl,显示不安全,需要处理#  与 nextcloud设置类似sudo add-apt-repository ppa:certbot/certbotsudo apt install python-certbot-nginxsudo certbot --nginx -d wordpress.td.masterpeak.cn#  apache服务器有个文件可能需要修改sudo vim /var/www/html/wordpress.td.masterpeak.cn/.htaccess#  最上面添加一行SetEnvIf X-Forwarded-Proto https HTTPS