0%

digitalocean 下 centos 搭建 wordpress过程

博主昨天把blog迁移到digitalocean啦~特地来个傻瓜式配置教程。

本文包括如下内容

  • centos下安装wordpress过程
  • 开启mod_rewrite模块
  • 开启GZIP压缩网页
  • 上传图片/文件失败解决办法
  • YOAST SEO  sitemap 404 解决办法

主机配置

  • centos 6.7 *32

  • 5$ /m

    • ps:   点击该链接注册可以获得10$  : digitalocean
  • 新加坡结点

等一会儿就好了:

digitalocean-create-img-finished

happy coding ^ ^

工具准备

使用windwos的童鞋需要准备如下工具之一,因为要用命令行的方式来操作服务器。为此,需要一个能支持SSH登录的软件。

  • Xshell : SSH登录,推荐这个,界面漂亮。
  • Xftp: SFTP传文件工具,和Xshell师出同门,推荐
  • SSH Secure Shell Client 这个也有SSH 登录的功能,但对中文乱码。 它还有可视化的界面来传文件,类似FTP
  • putty:很简洁的一个ssh工具

 

获取需要资源

打开你的SSH登录软件,连接到digitalocean上,(用户密码还有IP地址你建好一个服务器会发到你的邮箱:) )第一次进去要求修改密码。

修改完后,依次输入如下命令,获取资源,设置开机启动,启动服务

  • yum -y install mysql-server httpd php php-mysql unzip wget
  • chkconfig httpd on
  • chkconfig mysqld on
  • /etc/init.d/mysqld start
  • /etc/init.d/httpd start

 

mysql 设置

  • 登录mysql

    • mysql -u root -p
  • 创建root密码

    • 这一步主要是为了安全起见~mysql默认root密码为空,这不安全
    • SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
  • 创建数据库

    • create database wordpress;
  • 创建用户(把hrwhisper改成你的用户即可)

    • create user hrwhisper@localhost;
  • 设置密码

    • set password for hrwhisper@localhost=password("123456");
  • 设置权限(需要给这个新用户权限访问数据库)

    • grant all privileges on wordpress.* to hrwhisper@localhost identified by '123456';

做完上面的步骤后

  • FLUSH PRIVILEGES;
  • exit;

 

wordpress获取和配置

获取

  • 获取第一步我们已经yum 安装了 wget所以只要执行下面的命令就可以,这里假定当前终端目录为(当前用户的根目录)

    • wget http://wordpress.org/latest.tar.gz
  • 解压

    • tar -xzvf latest.tar.gz

 

配置wordpress

  • 创建wp-config.php文件

    • cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php
  • 编辑(如果没有vim那么yum install vim下)

    • vim ~/wordpress/wp-config.php

这里简单介绍下vim使用:

  • vim 用方向键控制u 撤销,i插入模式 保存esc然后输入:wq即可
edit-wordpress-database-info
  • 以博主刚才的为例:

    • DB_NAME : wordpress
    • DB_USER: hrwhisper
    • DB_PASSWORD:123456

接下来

  • 复制到 web 目录下

    • mkdir -p /var/www/html (如果文件夹不存在)
    • cp -r ~/wordpress/* /var/www/html
  • 用浏览器访问试试

 

导入数据库

如果不是新站,而是原来的站点呢?那么需要进行数据库的导入。

将数据库上传到服务器。(博主用Xftp 协议用SFTP,不要用ftp,SFTP安全 )

登录数据库后,进行如下操作

  • 选择数据库

    • mysql>use abc;
  • 设置数据库编码

    • mysql>set names utf8;
  • 导入数据(注意sql文件的路径)

    •   mysql>source /home/abc/abc.sql;

 


下面介绍博主配置好后使用中出现的问题和解决办法

开启mod_rewrite

如果你更改了wordpress固定链接,那么mod_rewrite是要开启的~不然就一片404啦

  1. vim /etc/httpd/conf/httpd.conf

  2. AllowOverride None 改为 AllowOverride All (在 <Directory "/var/www/html">里)

  3. 在/var/www/html/ 里编写.htaccess文件

  4. 重起服务器,终端中输入

    • service httpd restart

博主这里是338行

apache-mod_rewrite-open

参考: http://dev.antoinesolutions.com/apache-server/mod_rewrite

开启GZIP压缩网页

有两种方法,mod_gzip 和mod_deflate,用一个即可。

mod_gzip 和mod_deflate的主要区别

  • 第一个区别是安装它们的Apache Web服务器版本的差异。Apache 1.x系列没有内建网页压缩技术,所以才去用额外的第三方mod_gzip 模块来执行压缩。而Apache 2.x官方在开发的时候,就把网页压缩考虑进去,内建了mod_deflate 这个模块,用以取代mod_gzip。虽然两者都是使用的Gzip压缩算法,它们的运作原理是类似的。
  • 第二个区别是压缩质量。mod_deflate 压缩速度略快而mod_gzip 的压缩比略高。一般默认情况下,mod_gzip 会比mod_deflate 多出4%~6%的压缩量。
  • 第三个区别是对服务器资源的占用。 一般来说mod_gzip 对服务器CPU的占用要高一些。mod_deflate 是专门为确保服务器的性能而使用的一个压缩模块,mod_deflate 需要较少的资源来压缩文件。这意味着在高流量的服务器,使用mod_deflate 可能会比mod_gzip 加载速度更快。

mod_deflate

推荐这种方法,把下面的内容写在 .htaccess中即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/php
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/gif image/png image/jpe image/swf image/jpeg image/bmp

 

mod_gzip

需要自己开启mod_gzip模块,然后把下面的内容写在 .htaccess中即可

1
2
3
4
5
6
7
8
9
10
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?txtcssjsphppl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

 

GZIP测试工具

https://varvy.com/tools/gzip/

输入你的站点,然后看看是不是压缩了呢?

上传图片失败解决办法

不要相信网上一堆chmod 777的方法,虽然是可行的,但是不安全

正确的方法应该是修改文件所有者:

  • chown -R apache /var/www/html/wp-content/uploads

当然你也可以把整个改成apache,这样你升级插件什么的也不会有问题

  • chown -R apache /var/www/html/

 

如果提示的内容是missing a temporary folder

修改/etc/php.ini ,指定个临时目录

  • upload_tmp_dir = /tmp/

重启服务器即可

  • service httpd restart

 

YOAST SEO sitemap 404 解决办法

博主发现YOAST SEO 创建的sitemap访问直接 404。

修改  .htaccess file,把下面内容加在wordpress rewrite规则前面就可以啦

Yoast SEO - XML Sitemap Rewrite Fix

RewriteEngine On RewriteBase / RewriteRule ^sitemap_index.xml$ /index.php?sitemap=1 [L] RewriteRule ^locations.kml$ /index.php?sitemap=wpseo_local_kml [L] RewriteRule ^geo_sitemap.xml$ /index.php?sitemap=geo [L] RewriteRule ^([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=\(2 [L] RewriteRule ^([a-z]+)?-?sitemap.xsl\) /index.php?xsl=$1 [L] # END Yoast SEO - XML Sitemap Rewrite Fix

参考 http://kb.yoast.com/article/77-my-sitemap-index-is-giving-a-404-error-what-should-i-do

参考资料

请我喝杯咖啡吧~