早就想搭建一個專屬於本身的博客了,用來記錄本身生活、學習的點點滴滴。之因此選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,那麼會出現各類意象不到的問題!