本站已放弃wordpress,转投typecho。因为我的服务器性能有限,使用wordpress会很卡,体验不好。
搭建typecho的步骤在这里:https://www.huangoo.top/index.php/archives/12/
在Ubuntu18.04上用wordpress、apache、php搭建博客。
先更新源:
sudo apt-get update
sudo apt-get upgrade
安装Apache2
安装命令:
apt-get install apache2
查看是否安装成功:
apache2 -v
启动apache:
apache2 -k start
可能会有以下报错:AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.165.160. Set the 'ServerName' directive globally to suppress this message
解决方式是如下:
- 打开apache2的配置文件,
vim /etc/apache2/apache2.conf
- 在文件末尾插入
ServerName 127.0.0.1
- 重启apache即可
阿里云ECS还需要在安全组里开放80端口
查看是否工作正常。在浏览器的地址栏中输入http://<ECS服务器公网IP>
,看到如下图片即工作正常
安装MariaDB Server
安装命令:
apt-get install mariadb-server
启动MariaDB Server:
systemctl start mariadb
查看运行状态:出现active (running)
即说明启动成功
systemctl status mariadb
设置数据库root账户初始密码。然后再回车一次,输入两次新密码即可。
mysqladmin -u root -p password
连接数据库,需要输入刚刚设置的密码
mysql -uroot -p
mariaDB有个问题:安装后,即使修改了root的密码,也可以不用密码就登录,解决方法如下:
use mysql; update mysql.user set authentication_string = PASSWORD('yourPassword'),plugin = 'mysql_native_password' where user = 'root' and host = 'localhost'; flush privileges;
退出再进就需要输入密码了
创建WordPress数据库
create database wordpress;
查看创建好的数据库
show databases;
创建一个新用户并设置密码
create user 'wordpressuser'@'localhost' identified by 'password12';
赋予用户权限,不然后面wordpress会显示无法选择数据库
grant all on wordpress.* to wordpressuser@localhost;
生效设置
FLUSH PRIVILEGES;
退出数据库
exit;
卸载mariadb的方法:
sudo apt-get remove mysql-* dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
然后选择yes即可
安装PHP
安装PHP
apt-get install php
还需要安装PHP的其他组件
apt install libapache2-mod-php
apt install php-mysql
apt install php-curl
apt install php-gd
apt install php-xml
apt install php-mbstring
apt install php-xmlrpc
apt install php-zip
apt install php-soap
apt install php-intl
apt install php-imap
apt install php-pear
创建PHP测试页面
echo "<?php phpinfo();?>"> /var/www/html/phpinfo.php
重启apache
apache2 -k restart
在浏览器的地址栏中填入http://公网IP/phpinfo.php
。出现以下页面即安装PHP完成
安装WordPress
安装WordPress
apt-get install wordpress
修改WordPress配置文件
修改wp-config.php指向路径为绝对路径
cd /usr/share/wordpress
ln -snf /etc/wordpress/wp-config.php wp-config.php
在/usr/share/wordpress
下,执行以下命令,移动wordpress文件到Apache根目录
domain_name是你申请的域名,方便后面配置apache2。
mkdir /var/www/html/domain_name
mv * /var/www/html/domain_name/
WordPress安装之后的配置文件为wp-config-sample.php,因此需要先进行一次改名
cd /var/www/html/domain_name
mv wp-config-sample.php wp-config.php
修改配置文件vim -n /var/www/html/domain_name/wp-config.php
。把之前创建的数据库名、用户名、密码填入配置文件
重启Apache
systemctl restart apache2
设置WordPress
在浏览器地址栏中输入http://公网IP/domain_name/wp-admin/install.php
。没问题的话就会进入以下界面
设置好站点名称、管理员账号、密码和邮箱即可。
绑定域名
绑定域名后就可以通过域名访问博客了。因此需要先买一个域名。
国内域名购买后需要ICP备案和公安备案,否则无法访问。这里,我是在阿里云上买的域名。
域名解析
进入阿里云域名控制台,然后进入解析设置,点击新手引导,输入服务器公网IP,确定。完成
wordpress配置
先通过IP地址进入wordpress:http://公网IP/domain_name/wp-login.php
登录后,在设置里把两个url改成http://domain_name
保存。这是会显示404,不用担心,配置完成后刷新即可恢复正常。
apache2配置
切换目录
cd /etc/apache2/sites-available
apache2默认有一个配置文件(一个配置文件对应一个网站)。我们最好还是为博客重新创建一个配置文件:
touch /etc/apache2/sites-available/domain_name.conf
在配置文件中写入:
<VirtualHost *:80>
ServerName domain_name
ServerAlias www.domain_name
ServerAdmin webmaster@example.com
DocumentRoot /var/www/html/domain_name
<Directory /var/www/example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
- ServerAdmin:这里可以填你的邮箱,如果服务器有任何问题将发信到这个地址, 这个地址会在服务器产生的某些页面中出现
- DocumentRoot:网站根目录
此时配置文件还没生效,需要将其连接到sites-enabled下:
a2ensite domain_name
测试一下有没有语法错误:
apachectl configtest
如果没有错误,会输出
Syntax OK
重启Apache服务,使修改生效:
systemctl restart apache2
到这里应该就可以在浏览器中输入你的域名来访问博客了。
禁止访问目录
目前wordpress根目录下的wp-content和wp-includes还暴露在外面,通过domain_name/wp-content
,访客就可以访问这些文件。这很不安全。因此需要设置禁止访客访问这两个目录。
首先,打开apache2的配置文件:
sodu vim /etc/apache2/apache2.conf
然后添加以下代码:
<Directory /var/www/html/domain_name/wp-includes>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /var/www/html/domain_name/wp-content>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
退出vim后,重启apache2服务
systemctl restart apache2
之后访客再访问这两个目录就会显示403.
关于插件
插件可以让我们很方便的管理博客。我目前装了以下几个插件:
- Disable Comments:禁止全部评论功能。这样的博客就不是交互式的了
- Login Lockdown:登录错误次数超过设定值禁止对应IP登录
- WP Statistics:统计访客访问信息,包括IP地址、国家、地区、设备类型等