早就想搭建一个专属于本身的博客了,用来记录本身生活、学习的点点滴滴。之因此选WordPress,主要是由于它能够支持Latex,并且特别喜欢其简约的风格。php
WordPress有个the famous 5 minutes installing,无奈我对LAMP(Linux,Apache,MySQL,PHP)几乎一无所知,用了将近两天才把整个博客搭建起来。安装 WordPres很容易,可是把相关的配置好就比较麻烦了。下面是我整个搭建过程的总结。html
操做系统:Ubuntu 12.04LTSpython
首先列出须要的文件:mysql
1.wordpress http://wordpress.org/download/git
2.mysql http://www.mysql.com/downloads/mysql/web
3.httpd2.4.6 http://httpd.apache.org/download.cgisql
4.apr1.4.8 http://apr.apache.org/download.cgishell
5.apr-util1.5.2 http://apr.apache.org/download.cgi数据库
6.php5.5.1 http://php.net/downloads.phpapache
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 yunfeiwang@hust.edu.cn
指定服务器的域名和端口,若是没有注册域名,能够填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,那么会出现各类意想不到的问题!