引言:因为需要,最近打算为我们的CTF战队搭建一个网站,因此买了一个国外的VPS,操作系统是ubuntu的,准备用wordpress搭建一个战队的博客类型的网站。
- 事前准备 , 配置好最新的源
sudo -s
apt-get update
apt-get upgrade
- 安装mysql
apt-get install mysql-server
安装的时候需要设置mysql的root用户密码
- 安装apache2
apt-get install apache2
- 安装php7
apt-get install php
apt-get -y install php7.0-fpm php-mysql
由于apache2 可能不能正常解析php7.0,因此需要安装PHP针对于apache的模块
apt-get install php libapache2-mod-php
安装好之后测试一下服务是否成功
service apache2 restart
vim /var/www/html/info.php
在info.php文件中写入
<?php
phpinfo();
?>
保存之后,用浏览器访问一下 YOUR_IP/info.php , 如果显示下面的页面则表示配置成功。
注:此处的YOUR_IP指的是你对应的IP地址,之后出现的也类似。
- 为了方面操作,安装phpmyadmin
apt-get install phpmyadmin php-mbstring php-gettext
ln -s /usr/share/phpmyadmin/ /var/www/html/
systemctl restart apache2
接着访问自己的YOUR_IP/phpmyadmin ,看到下图的样子说明配置成功
然后登陆mysql的用户名和密码,用root用户登录之后创建以个名为wordpress的用户,记得选上同时创建和自己同名的数据库并赋予所有权限,执行之后就创建成功了。
- 安装wordpress , 去wordpress官网下载一个tar.gz或者zip包,我下载的是.tar.gz
wget -c https://cn.wordpress.org/wordpress-4.8.1-zh_CN.tar.gz
tar -xzvf wordpress-4.8.1-zh_CN.tar.gz
mv wordpress /var/www/html/
#为了在安装wordpress过程中,不需要手动修改wp-config.php文件,添加以下权限,新手可以这样做,对linux熟悉的就手动改文件吧
chown -hR www-data /var/www/html/wordpress
接着在浏览器访问YOUR_IP/wordpress来安装,如下图
点击现在开始
填入你之前创建的数据库和用户的信息,为了安全,最好改一下表前缀,如dm_等,提交之后,继续点安装就行了,然后根据填写下图的相关信息就行了,密码可以就用它生成的,之后可以修改,或者自己设一个强密码
填完之后点击安装wordpress,安装完成后用你刚才填写的用户名和密码登录,看到下图就基本安装完成了,之后关于wordpress的配置和使用,可以参考wordpress大学的教程
- wordpress伪静态设置
我觉得这个是一个挺难的问题,由于使用的是最新版的apache2,因此去网上找的很多教程都太旧了,他们很多都是讲怎么配置apache 伪静态的,就连配置文件都不一样,apache2的配置文件在/etc/apache2/目录下面,主要apache2.conf 和 ./sites-available/000-default.conf , 如果你是用老版本的apache的话,配置教程可以参照WordPress 伪静态规则(IIS/Apache/Nginx),这里主要介绍apache2的伪静态配置,主要参考了How To Rewrite URLs with mod_rewrite for Apache on Ubuntu 16.04这篇文章
1.激活mod_rewrite
a2enmod rewrite
systemctl restart apache2
2.修改/etc/apache2/sites-available/000-default.conf
vim /etc/apache2/sites-available/000-default.conf
在<VirtualHost *:80>下面插入一下内容
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
保存之后,重启apache2
systemctl restart apache2
3.在/var/www/html/wordpress这个目录下面创建一个文件.htaccess(此文件可能已经存在,但是默认是隐藏的),修改内容为
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
保存之后,再在浏览器里访问wordpress里面的链接试试,如下图:
发现能够访问之前的文章了,成功实现了伪静态的配置!
以上就是在ubuntu16.04 下面使用apache2+php7+mysql搭建wordpress的基本过程了,后续可以根据自己的情况去修改wordpress了,希望各位小伙伴也能搭建出自己的博客,have fun!
之后我会讲讲在我搭建我们战队的wordpress网站时遇到的若干问题:
1.安装插件&主题的会遇到需要登陆FTP服务
由于各种原因,你当前不能使用FTP服务,但是每次安装主题和插件时又会弹出输入FTP服务,该怎么办呢?其实只要修改一下wp-config.php文件就可以了
打开/var/www/html/wordpress/wp-config.php ,在中间插入以下代码:
define("FS_METHOD", "direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);
2.安装插件&主题
推荐使用上传插件的方式安装,下面以我要安装的wordpress导入插件为例:
点击安装插件,搜索wordpress import,找到左下角的导入工具,点击更多详情
然后点击右下角的插件主页,然后去官方主页下载相应的插件,接着推出后点击添加插件左上角的上传插件,点击浏览之后,选择对应的插件,之后点击现在安装,这样子就可以安装插件了。但是可能会遇到无法创建目录的问题,请看下面的解决方法。
3.初次安装主题&插件遇到无法创建目录的问题
由于我已经配置好了,所以就不提供截图了,但是可以说这是因为权限问题的原因,下面讲讲解决方法
如果你用cat /etc/passwd查看用户的话,你就会发现一个www-data的用户,这个其实指的就是使用浏览器访问的用户,为了给它创建的权限,可以给相对应的目录777的权限,但是这样不安全,因此可以考虑把需要创建目录的父目录的属主改成www-data
cd /var/www/html
#把wordpress目录下面的所有文件的属主都改成 www-data
chown -hR www-data wordpress
总之根据把需要创建目录的父目录创建和修改属主为www-data就可以了
4.上传主题的大小超过2M
首先找到php.ini,至于文件在哪,可以查看之前写的phpinfo文件,如下图
apache2和php7中的php.ini的路径一般为/etc/php/7.0/apache2/php.ini
打开这个文件之后,修改对应的内容:
upload_max_filesize = 8M #具体大小根据自己需要,但是不能超过post_max_size
这样应该就可以继续安装主题了,接着重启apache2
systemctl restart apache2
5.配置缓存的问题
由于网速等原因,如果wordpress没有缓存机制的话,可能会导致每次访问该网站很慢,因为每次都要加载全部的内容,下面讲讲怎么配置缓存
参考教程——Configure HTTP Content Caching in Apache on Ubuntu 16.04
第一种方法:
打开wordpress根目录下面的.htaccess文件,添加以下代码
<IfModule mod_expires.c>
#打开缓存
ExpiresActive On
#默认对所有资源缓存600秒
ExpiresDefault A600
#png格式的资源缓存5秒
ExpiresByType image/png A5
#jpg格式的资源缓存50秒
ExpiresByType image/jpg A50
#好含这些后缀的资源,都缓存100秒
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
ExpiresDefault A100
</FilesMatch>
</IfModule>
启用expires模块
a2enmod expires
service apache2 restart
第二种方法:
#Enable the Apache Modules
sudo apt-get update
sudo apt-get install apache2-utils
sudo a2enmod cache
sudo a2enmod cache_disk
sudo a2enmod expires
sudo a2enmod headers
sudo systemctl restart apache2
#Add the Virtual Host Configurations
sudo vim /etc/apache2/sites-available/000-default.conf
在</VirtualHost>里添加以下内容
CacheQuickHandler off
CacheLock on
CacheLockPath /tmp/mod_cache-lock
CacheLockMaxAge 5
CacheIgnoreHeaders Set-Cookie
<Location />
CacheEnable disk
CacheHeader on
CacheDefaultExpire 800
CacheMaxExpire 64000
CacheIgnoreNoLastMod On
ExpiresActive on
ExpiresDefault A300
</Location>
sudo apachectl configtest
sudo systemctl restart apache2
6.域名配置
在你配置域名的时候,你可能发现你
vim /etc/apache2/sites-enabled/000-default.conf
找到DocumentRoot那两行,然后修改成你要访问的根目录,我这里是nebula
这里完成之后重启apache2服务,然后用浏览器访问域名,发现根目录就是index.php的内容了
然后点击上面的任意一个链接,可能会出现的问题:
1.如果出现 internal redirects错误,则应该是.htaccess文件的mod_rewrite部分出错,请参考上面的.htaccess是怎么写的,至少上面的我是验证过的。
2.点击之后显示链接不存在,这个貌似是由于你在修改apache2访问根目录之前就安装了wordpress,他在那个时候会自动完成php文件里面的访问路径,用的是相对路径,
因此此处若是直接访问上面的链接,就会访问./wordpress/xxx.php上面,即/var/www/html/wordpress/wordpress/xxx.php
为此,我们需要把/var/www/html/wordpress/目录下的所有文件复制到它下面的wordpress目录下面
cd /var/www/html
tar -zcvf wordpress.tar.gz wordpress
mv wordpress.tar.gz wordpress/
cd wordpress
tar -zxvf wordpress.tar.gz
这样子处理之后,就可以正常访问所有的链接了~~