早就想搭建一个专属于自己的博客了,用来记录自己生活、学习的点点滴滴。之所以选WordPress,主要是因为它可以支持Latex,而且特别喜欢其简约的风格。
WordPress有个the famous 5 minutes installing,无奈我对LAMP(Linux,Apache,MySQL,PHP)几乎一无所知,用了将近两天才把整个博客搭建起来。安装 WordPres很容易,但是把相关的配置好就比较麻烦了。下面是我整个搭建过程的总结。
操作系统:Ubuntu 12.04LTS
首先列出需要的文件:
1.wordpress http://wordpress.org/download/
2.mysql http://www.mysql.com/downloads/mysql/
3.httpd2.4.6 http://httpd.apache.org/download.cgi
4.apr1.4.8 http://apr.apache.org/download.cgi
5.apr-util1.5.2 http://apr.apache.org/download.cgi
6.php5.5.1 http://php.net/downloads.php
7.libxml2.9.1 http://www.xmlsoft.org/downloads.html
8.prce8.33 http://www.pcre.org
ubuntu安装ftp服务器(一般配置)
~$ sudo apt-get install vsftpd
2.配置vsftpd
2.1修改/etc目录下的vsftpd的配置文件
$sudo gedit /etc/vsftpd.conf
源文件中不少命令被注释,根据每条命令的具体说明启用一部分即可,如下所示:
listen=YES # 服务器监听 local_enable=YES # 本地主机访问允许 write_enable=YES # 写允许 dirmessage_enable=YES # 进入文件夹允许 xferlog_enable=YES #激活ftp 上传和下载的日志 connect_from_port_20=YES #允许使用20号端口作为数据传送的端口 chroot_local_user=YES chroot_list_enable=YES # (default follows) chroot_list_file=/etc/vsftpd.chroot_list secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/private/vsftpd.pem
2.2设置ftp相关目录
安装完毕后,/srv下会增加一个ftp目录。我们在/srv/ftp目录下创建两个分别名为upload和download的目录,分别用于上传和下载。
~$ mkdir /srv/ftp/download
~$ mkdir /srv/ftp/upload
接下来我们为刚才创建的几个目录设置权限,执行如下命令: ~$ sudo chmod 755 /home/ftp ~$ sudo chmod 777 /home/ftp/upload ~$ sudo chmod 755 /home/ftp/download
3.vsftpd 设置用户目录
3.1增加组~$ sudo groupadd ftpgroup
增加用户ftpuser并设置其目录为/home/nation/ftp/upload ~$ sudo useradd -g ftpgroup -d /home/nation/ftp/upload -M ftpuser
(注:g:用户所在的组 d:表示指定创建用户的目录的位置,M:不建立默认的自家目录,也就是说在/home下没有自己的目录)
3.2设置用户口令~$ passwd ftpuser,然后连续两次输入口令。
3.3编辑chroot_list文件
~$ sudo gedit /etc/vsftpd.chroot_list 内容为ftp用户名,每个用户占一行,如:
ftpuser
~$ sudo service vsftpd start
查看当前所有进程: ~$ ps -e 至此服务器端vsftp的基本配置已完成,vsftpd已开启。(注意防火墙配置) 关闭vsftpd进程只需要执行~$ sudo service vsftpd stop,重启vsftpd进程执行~$sudo service vsftpd restart
参考:http://blog.csdn.net/nation_chen/article/details/7066277
安装MySQL
1.安装MySQL
$ sudo apt-get install mysql-server
2.配置MySQL
注意,在Ubuntu下MySQL缺省是只允许本地访问的,如果你要其他机器也能够访问的话,那么需要改变/etc/mysql/my.cnf配置文件了!下面我们一步步地来:
默认的MySQL安装之后根用户是没有密码的,所以首先用根用户进入:
$mysql -u root
进入mysql之后,最要紧的就是要设置Mysql中的root用户密码了。
mysql> GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY “123456″;
注意,我这儿用的是123456做为root用户的密码,请大家最好使用大小写字母与数字混合的密码,且不少于8位。这样的话,就设置好了MySQL中的root用户密码了.
3.用root权限创建数据库
mysql>CREATE DATABASE xoops;
mysql>GRANT ALL PRIVILEGES ON xoops.* TO xoops_root@localhost IDENTIFIED BY “654321″;
这样就建立了一个xoops_roots的用户,它对数据库xoops有着全部权限。以后就用xoops_root来对xoops数据库进行管理,而无需要再用root用户了,而该用户的权限也只被限定在xoops数据库中。
如果你想进行远程访问或控制,那么你要做两件事:
其一:
mysql>GRANT ALL PRIVILEGES ON xoops.* TO xoops_root@”%” IDENTIFIED BY “654321″;
允许xoops_root用户可以从任意机器上登入MySQL。
其二:
$sudo gedit /etc/mysql/my.cnf
>bind-address=127.0.0.1 => bind-address= 你机器的IP
这样就可以允许其他机器访问MySQL了。
参考:http://wiki.ubuntu.org.cn/MySQL%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97
安装PRCE(Perl Compatible Regular Expressions)
在http:www.pcre.org下载pcre8.33.tar.bz2解压,进入目录依次执行./configure;make;sudo make install完成安装,再执行ldconfig。libpcre在后面编译Apache2时会用到。
安装httpd2.4.6
编译httpd时必须保证已经安装了APR、APR-Util,如果没有就下载后分别解压到httpd2.4.6的srclib/apr和/srclib/apr-util下(如过解压后的目录带有版本号,记得将目录重命名)。在执行./configure命令时在后面添加 –with-included-apr选项。
1.解压缩后进入目录
$ bzip2 -d httpd-2.4.3.tar.gz $ tar -xvf httpd-2.4.3.tar $ cd httpd-2.4.3
2.进行配置
$ ./configure --with-included-apr --enable-module=so –prefix=/usr/local/apache2
(如果不指定prefix,会默认安装到/usr/local/apache2;–enable-module=so不能少了,这在后面安装PHP时是必须要的)
3.编译并执行安装
$ make
$ make install
4.测试(开启或终止)
$ /usr/local/apache2/bin/apachectl -k start/stop
安装libxml2
在安装libxml2之前,需要先安装python-dev,在终端执行:sudo apt-get install python-dev
1.解压libxml2后进入目录
$ tar zxvf libxml2-git-snapshot.tar.gz
$ cd libxml2-2.9.1
2.进行配置
$ ./configure –prefix=/usr/local/libxml2
3.编译并安装
$ make
$ make install
如果安装成功以后,在/usr/local/libxml2 /目录下将生成bin、include、lib、man和share五个目录。在后面安装PHP5源代码包的配置时,可通过在configure命令的选 项中加上“–with-libxml-dir=/usr/local/libxml2″选项,指定安装libxml2库文件的位置。
安装PHP
在安装PHP之前,我们必须安装libpng-dev,否则在执行./configure时会出现找不到png.h的错误。只要安装了libpng-dev后就可以顺利configure过去,我看到后面也找不到jpeg相关的东西,就顺带把libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libavcodec-dev, libavformat-dev, libswscale-dev都一起安装算了,这些在使用OpenCV的时候会用到。在终端执行命令:sudo apt-get install libjpeg-dev libpng-dev libtiff-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev
1.解压缩后进入目录
$ bzip2 -d php-5.5.1.tar.bz2
$ tar -xvf php-5.5.1.tar
$ cd php-5.5.1
2.进行配置
$ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-libxml-dir=/usr/local/libxml2 --with-gd --with-zlib --enable-mbstring --enable-zip –with-libxml-dir=/usr/local/libxml2
(注意:不要少了—with-zlib,不然后面在WordPress中安装插件或升级时会出现”Missing zlib extensions”的问题)。
3.编译并安装
$ make
$ make install
4.设置PHP的配置文件php.ini
$ cp php.ini-development /usr/local/lib/php.ini
5.配置Apache的httpd.conf使其能加载PHP模块
$ sudo gedit /usr/local/apache2/conf/httpd.conf
修改httpd.conf的内容,确保下面两条没被注释掉:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module modules/libphp5.so
因为WordPress用到了Apache的mod_rewrite模块,故这里的第一条也不能被注释掉。
6.配置Apache的httpd.conf使其支持PHP相关的扩展名文件
添加如下代码
1 <FilesMatch \.php$> 2 SetHandler application/x-httpd-php 3 </FilesMatch> #仅支持.php
或者
1 <FilesMatch "\.ph(p[2-6]?|tml)$"> 2 SetHandler application/x-httpd-php 3 </FilesMatch> #支持.php,.php2,.php3,.php4,.php5,.php5和phtml
允许.php文件被php源码过滤器处理并以高亮模式显示源码,添加如下代码:
1 <FilesMatch "\.phps$"> 2 SetHandler application/x-httpd-php-source 3 </FilesMatch> 4 5 RewriteEngine On 6 RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]
7.重启Apache
/usr/local/apache2/bin/apachectl restart
在浏览器中输入本机IP地址,可以看到页面显示“It works!"。
安装WordPress
第一步:下载WordPress安装包并解压
从此处下载WordPress压缩包并解压缩 http://wordpress.org/download/
这样WordPress压缩包将会解压缩至文件夹wordpress,这个文件夹与你下载的latest.tar.gz压缩包处于同一个目录下.
第二步:创建WordPress数据库和一个用户
你可以利用shell运行mysql语句,快速而方便地创建MySQL用户和数据库。下面给出创建语句,其中美元符号表示命令提示符:
$ mysql -u adminusername -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5340 to server version: 3.23.54
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> CREATE DATABASE databasename;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON databasename.* TO "wordpressusername"@"hostname"
-> IDENTIFIED BY "password";
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
mysql> EXIT
Bye
$
从这个例子中可以看出:
如果想把这些用户名和密码记下来,避免在用户名和密码保护范围内做记录。需要记住的包括数据库名称、wordpress用户名、hostname以及密码。当然,这些信息已经在(或者会暂时在)wp-config.php文件中,也没有必要在别的地方重复记录了。
第三步:设置wp-config.php文件
用户可以亲自创建并编辑wp-config.php文件,也可以在运行安装脚本(第五步)时让WordPress帮助用户编辑wp-config.php(不过仍然需要告诉WordPress我们的数据库信息)。
(更多细节以及创建wp-config.php配置文件和密码密钥的信息请点击编辑wp-config.php文件。)
返回第一步中解压WordPress压缩包的位置,将wp-config-sample.php重命名为wp-config.php,之后在文本编辑器中打开该文件。
在标有
// ** MySQL settings - You can get this info from your web host ** //
DB_NAME
在第二步中为WordPress创建的数据库名称
DB_USER
在第二步中创建的WordPress用户名
DB_PASSWORD
第二步中为WordPress用户名设定的密码
DB_HOST
第二步中设定的hostname(通常是localhost,但总有例外;参见编辑wp-config.php文件中的“可能的DB_HOST值)。
DB_CHARSET
数据库字符串,通常不可更改(参见zh-cn:编辑wp-config.php)。
DB_COLLATE
留为空白的数据库排序(参见zh-cn:编辑wp-config.php)。
在标有
* Authentication Unique Keys.
的版块下输入密钥的值(在线密钥生产器https://api.wordpress.org/secret-key/1.1/salt/),保存wp-config.php文件。
第四步:上传文件
接下来需要决定将博客放在网站的什么位置上:
Note: 我们的网页根目录在web服务器文件流中的位置会随虚拟主机商和操作系统而发生变化。具体情况请咨询虚拟主机商或系统管理员。
根目录
子目录
第五步:运行安装脚本
在常用的web浏览器中运行安装脚本。
安装配置文件
WordPress无法查找到wp-config.php文件时会通知用户并试图自动创建并编辑wp-config.php文件。(用户可以在web浏览器中加载wp-admin/setup-config.php以新建wp-config.php文件。)WordPress询问用户数据库的具体情况并将之写入新的wp-config.php文件。如果新文件创建成功,用户可以继续安装;否则需返回第三步:设置wp-config.php文件。
第六步:修改Apache的httpd.conf
$ sudo gedit /usr/local/apache2/conf/httpd.conf
将Apache绑定到制定的IP和/或端口上
Listen 192.168.0.155:80
指定服务器出现的问题应该被发送到的邮箱地址
ServerAdmin [email protected]
指定服务器的域名和端口,如果没有注册域名,可以填IP地址
ServerName 192.168.0.155:80
指定wordpress所在的绝对路径
DocumentRoot "/srv/upload/wordpress"
<Directory "/srv/upload/wordpress">
指定Wordpress进行读写文件操作的user和group
group groupname
user username
切换语言/语言包(这步我没做,就用英文的算了)
若您是初次安装 WordPress,请点击这里。
下面步骤指导您将现有的英文 WordPress 站点切换为中文。
若 您当前正在使用非官方的中文语言包,请您注意:非官方语言包通常会替换 WordPress 程序本身的升级部分,使 WordPress 通过第三方服务器升级,这可能有一定风险。若您不愿使用官方版本的语言包,请务必选择您信任的语言包。至于使用何种中文支持,完全由您自主选择。 WordPress 并不会禁止您使用非官方语言包。当然,我们会认真处理您的批评和建议,欢迎联系我们。
如下是卸载非官方语言包、安装官方中文版本的通用步骤。请注意,如果您没有使用非官方版本的语言包,请不要进行下列操作。我们在这里假设您使用的非官方中文版本没有改动您的数据库:
参考:http://codex.wordpress.org/zh-cn:%E5%AE%89%E8%A3%85_WordPress
其他问题
1.安装插件Latex Everyting时出现了“Could not create directory”的问题,"Could not create directory./youdir/wp-content/upgrade:
解决方法如下: 1. 找到这个文件: /wp_admin/includes/class-wp-filesystem-direct.php 2. 查找 “function mkdir” 3. 修改这个函数至如下的代码,至插件 Fix “Cound not create directory” problem 这一段,即可
1 function mkdir($path, $chmod = false, $chown = false, $chgrp = false) { 2 // safe mode fails with a trailing slash under certain PHP versions. 3 $path = untrailingslashit($path); 4 if ( empty($path) ) 5 return false; 6 7 if ( ! $chmod ) 8 $chmod = FS_CHMOD_DIR; 9 10 if ( ! @mkdir($path) ) 11 return false; 12 $this->chmod($path, $chmod); 13 if ( $chown ) 14 $this->chown($path, $chown); 15 if ( $chgrp ) 16 $this->chgrp($path, $chgrp); 17 return true; 18 }
结果还是不行。
猜测是权限的问题,执行$ chmod 777 wp-content,还是出现类似的错误,但是我们发现不能创建的目录变了,“Could not create directory./yourdir/wp-content/plugins/latex-everyting。
这时我们应该检查一下wp-content文件夹下的的权限问题,更改wp-content目录及其子目录的权限,执行$chmod -R 777 wp-content后问题解决。
2.激活Latex Everyting时出现问题
Fatal error:Call-time pass-by-reference has been removed in /yourdir/latex-single-posts.php on line 7
解决方法:这里出现问题的原因都是一样的,及参数的传递错误。我们可以根据提示的代码错误行数找到错误并修改。
激活插件
修改latex-single-posts.php第7行,
将latex_everything->add_controller(‘single_post’,&$latex_single_post_controller);
修改为latex_everything->add_controller(‘single_post’,$latex_single_post_controller);
继续激活,又出现了问题
Fatal error:Call-time pass-by-reference has been removed in /yourdir/latex-post-types.php on line 8
修改latex-post-types.php第8行,
将latex_everything->add_controller(‘post_type’,&$latex_post_type_controller);
修改为latex_everything->add_controller(‘post_type’,$latex_post_type_controller);
继续激活,还是出现了问题:
Fatal error:Call-time pass-by-reference has been removed in /yourdir/latex-terms.php on line 7
修改latex-terms.php第7行,
将latex_everything->add_controller(‘term’,&$latex_term_controller);
修改为latex_everything->add_controller(‘term’,$latex_term_controller);
3.WordPress提示:执行请求动作,连接信息必需提供
在 wordpress后台自动升级以及更新删除主题或者插件的时候,需要输入FTP账户信息。据说这个填写FTP信息界面,只会出现在PHP进程不是以用户 身份来运行的主机上,也就是网站服务器运行PHP的用户和 wordpress文件夹的所有者不一样,目的就是为了安全,wordpress在升级时会创建一个临时文件看看owner是不是和当前运行的php是否 一样,如果不一样,就会出现这个界面。
遇到这种情况的解决办法:
在wp-config.php中填写连接信息。
如果为了以后更新方便的话可以在 wp-config.php 中加入一下代码:
// ** FTP SETTINGS FOR AUTO-UPDATE ** // define(‘FTP_HOST’, ‘localhost’); define(‘FTP_USER’, ‘ftp帐号’); define(‘FTP_PASS’, ‘ftp密码’);
这样无论升级 wordpress 或者插件的时候就都不会有那个FTP提示了。
4.修改wordpress上传文件2M限制
编辑php.ini文件:
#vim /usr/local/lib/php.ini
大概在591行处有一个参数:upload_max_filesize = 10M,默认为2M,将其中的2M改为你想要限制的大小,如下所示。然后我顺手把每次可上传的最大文件数由20改为了30.
//=================== ; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 20M ; Maximum number of files that can be uploaded via a single request max_file_uploads = 30 //================
重启apache服务器
#/usr/local/apache2/bin/apachectl restart
不知道为什么我修改了之后总是8M。继续找资料,后来发现原来这个大小是取post_max_size和upload_max_filesize中的最小值,继续修改如下:
//===================================== ; Maximum size of POST data that PHP will accept. ; http://php.net/post-max-size post_max_size = 30M //=======================================
重启apache服务器
#/usr/local/apache2/bin/apachectl restart
OK~
参考:http://naonao.blog.51cto.com/1135983/827973
http://ar.newsmth.net/thread-add920665842c4.html
5.当想使用个性化的Permalink时,出现.htaccess不能写的问题
在WordPress的根目录下新建一个名为.htaccess的文件,然后修改其权限
$touch .htaccess
$chmod 666 .htaccess
你可以用下面这些标签来定制“美观”或者“接近美观”的固定链接,这里有一些注意事项:
6.使用XML-Sitemap时出现文件不能写的问题
先打开博客页面的Settings下面XML-Sitemap选项,取消Basic Options下面的Sitemap files下的两个选项。
然后在博客的根目录下新建名为sitemap.xml和sitemap.xml.gz的文件
$touch sitemap.xml sitemap.xml.gz
修改这两个文件的权限
$chmod 755 sitemap.xml sitemap.xml.gz
7. 403 forbidden you don’t have permission to access / on this server
这类问题只可能出现在Apache Server上面。如果出现这种问题,请打开Apache的配置文件httpd.conf,查看DocumentRoot指定的整个网站的文件夹是否正确,如果正确的话就检测改文件夹对应的读写权限。一般就是这两个方面的问题引起的。可以参加博文http://www.lost-in-code.com/server-management/403-forbidden-you-dont-have-permission-to-access-on-this-server/。这篇文章里面的DirectoryIndex不是这次引发403 forbidden问题的原因,而是DocumentRoot指定文件夹权限的问题。httpd.conf文件的DirectorIndex只有一项index.html,而我们的WordPress都是PHP的网页,如果不加上一项index.php的话,我们的网站只会显示一个目录的Index。
8.网页的标题出现乱码
因为我启用了All In One Seo Pack插件,导致网页的标题出现乱码。点击网页地址栏下的SEO字样进行插件设置,取消Rewrite titles,即可解决问题。
最后,经过第一次安装WordPress的经历,再加上第二次重装系统后再利用之前WordPress的数据备份还原我的整个WordPress的痛苦经历。我总结出了一个小经验:一定要注意WordPress文件夹和文件的属性!文件夹都设置成755或者更高的权限,文件都可以设置成644。如果文件夹的属性不是755,那么会出现各种意想不到的问题!