輕量級博客|Typecho部署


官方文檔以及教程

安裝web服務器

  • yum -y install httpd # 安裝主程序
  • systemctl start httpd.service # 啟動服務
  • systemctl status httpd.service # 查看服務運行狀態

nginx 端口和 httpd沖突

Job for httpd.service failed because the control process exited with error code. See "systemctl 
  • 修改httpd端口即可 vim /etc/httpd/conf/httpd.conf

  • 找到Listen ,修改端口重新啟動

  • 查看狀態顯示運行即為啟動成功

安裝php和相關插件

Typecho官方要求PHP5.1,但是據說PHP7的性能是PHP5的兩倍,所以我們直接安裝PHP7好了。由於Centos內置源的版本比較老,所以我們要先更換一下PHP的源,輸入如下指令:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm   
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
  • yum -y remove php* #卸載舊版本PHP
  • yum -y install php #安裝PHP
  • yum -y install php-mysql php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel php-sqlite3 #安裝常用插件

如果安裝過舊版的php存在沖突可以加上版本 ,例如yum -y install php70w-gd

官網獲取Typecho主程序

  • 訪問官方下載地址獲取穩定版主程序壓縮包。解壓后將build文件夾內所有文件全部上傳到服務器的/var/www/html目錄下,不包括build文件夾本身。

  • 主程序上傳完后執行如下指令提升權限,這一步很重要,不然Typecho沒有辦法完成安裝

    • chmod -R 777 /var/www/html # 提升權限
  • 輸入如下指令重啟Apache服務:

    • systemctl restart httpd.service #重啟Apache服務
  • 訪問域名完成配置即可

數據庫創建

  • CREATE DATABASE typecho DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

升級到php7

默認的版本太低了,手動安裝有一些麻煩,想采用Yum安裝的可以使用下面的方案:
首先刪除舊版本的PHP,
通過yum list installed | grep php可以查看所有已安裝的php軟件
使用yum remove php*刪除

通過yum list php*查看是否有自己需要安裝的版本,如果沒有就需要添加第三方yum源, 推薦安裝webtatic、rpmforge,還有國內163的

CentOs 5.x 
rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm 
CentOs 6.x 
rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm 
CentOs 7.X 
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm 
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
#32位:  
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm  
rpm -ivh rpmforge-release-0.5.1-1.el5.rf.i386.rpm  
#64位:  
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm  
rpm -ivh rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm  
安裝完成后可以使用yum repolist查看已經安裝的源,也可以通過ls /etc/yum.repos.d/查看。 

然后再yum install php55w或yum install php54w或yum install php56w||yum install php70w……就可以安裝新版本PHP了 

  • 查看當前php版本

$ php -v

  • 檢查當前PHP的安裝包

$ yum list installed | grep php

  • 移除當前PHP的安裝包

$ yum remove php*

  • 添加第三方的YUM源
CentOS 6.5:
$ rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

CentOS 7.x:
$ rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
$ rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
  • 查看YUM源上能用PHP安裝包

$ yum list php*

  • 安裝php7

$ yum install php70w

相關命令


apache
啟動
systemctl start httpd
停止
systemctl stop httpd
重啟
systemctl restart httpd
或者

service httpd stop

service httpd start

service httpd restart


mysql
啟動
systemctl start mysqld
停止
systemctl stop mysqld
重啟
systemctl restart mysqld

或者

service mysqld stop

service mysqld start

service mysqld restart



php-fpm
啟動
systemctl start php-fpm
停止
systemctl stop php-fpm
重啟
systemctl restart php-fpm


nginx
啟動
systemctl start nginx
停止
systemctl stop nginx
重啟
systemctl restart nginx

或者

service nginx stop
service nginx start
service nginx restart
開機自啟

chkconfig httpd on

chkconfig mysqld on


刪除nginx日志的時候粗心大意刪除nginx.pid導致NGINX報錯

"/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

  • nginx停止/usr/local/nginx/sbin/nginx -s stop

  • NGINX重啟 /usr/local/nginx/sbin/nginx -s reload

  • 解決辦法 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

    • 原理:使用nginx -c的參數指定nginx.conf文件的位置

但是nginx.pid被刪除會出現如下問題

  • 進程端口被占用無法完成配置,需要先殺掉NGINX的進程
  • lsof -i:80
[root@izwz993bv9azta8nrfwuhqz sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[root@izwz993bv9azta8nrfwuhqz sbin]# /usr/local/nginx/s
sbin/      scgi_temp/
[root@izwz993bv9azta8nrfwuhqz sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[root@izwz993bv9azta8nrfwuhqz sbin]# kill -9 80
-bash: kill: (80) - 沒有那個進程
[root@izwz993bv9azta8nrfwuhqz sbin]# lsof -i :80
COMMAND     PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
AliYunDun  2175   root   20u  IPv4  18156      0t0  TCP izwz993bv9azta8nrfwuhqz:39954->100.100.30.25:http (ESTABLISHED)
nginx     13994   root    6u  IPv4 203889      0t0  TCP *:http (LISTEN)
nginx     31604 nobody    6u  IPv4 203889      0t0  TCP *:http (LISTEN)
[root@izwz993bv9azta8nrfwuhqz sbin]# kill -9 13994

打開頁面出現502的問題

  • 其實是理解錯誤,nginx的代理配置需要指向php的端口而不是httpd的端口,關鍵是端口不能被占用;另外需要注意nagix的日志信息

  • 其實感覺httpd也可以但是這里不使用這種方式

  • nginx配置如下

  • 注意啟動方式,端口不能被占用,通過nginx訪問

啟動php-cgi:
    1. php-cgi -b 127.0.0.1:8000 -c /etc/php.ini;
    # 注意這只是前台啟動
    2. 開機自啟動:
        cat /etc/init.d/S51phpCGI
        echo "Start php-cgi."
        php-cgi -b 127.0.0.1:8000 -c /etc/php.ini &
server {
    listen          80;
    server_name      www.imisty.cn imisty.cn;
    root            /var/www/html/typecho;
    index           index.html index.htm index.php;

    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php$1 last;
    }

    location ~ .*\.php(\/.*)*$ {
        include fastcgi.conf;
        fastcgi_pass  127.0.0.1:8000;
    }

    access_log logs/misty.log combined;
}

php-cgi啟動一會就會無緣無故關閉

  • 網傳關閉Apache的httpdservice就行了
  • 另外一種,推薦 使用php-fpm 管理php-cgi

頁面顯示數據庫錯誤

  • 網傳升級到php5.6之后就沒這個問題了,但是出現了數據庫適配器無法選擇的問題
PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/msql.so' - /usr/lib64/php/modules/msql.so: cannot open shared object file: No such file or directory in Unknown on line 0

打開php.ini打開mysql擴展

  • 開啟 extension_dir = mysql...,將前面的;刪除即可 (注意不同系統的開啟方式不一致,windows下為.dll,unux下為.so)

啟動php-cgi無法加載mysql.so,文件不存在

  • yum -y install php-mysql 安裝數據庫擴展即可

這里安裝了數據庫擴展,php-cgi啟動也會出現mysql.so的問題,但是不影響頁面數據庫適配器加載了,也不影響啟動和安裝

因為之前安裝過舊版的php,安裝mysql擴展出現依賴沖突

  • 先移除依賴沖突的相關包

 yum remove php-common
已加載插件:fastestmirror
正在解決依賴關系
--> 正在檢查事務
---> 軟件包 php56w-common.x86_64.0.5.6.40-1.w7 將被 刪除
--> 正在處理依賴關系 php56w-common(x86-64) = 5.6.40-1.w7,它被軟件包 php56w-5.6.40-1.w7.x86_64 需要
--> 正在處理依賴關系 php56w-common(x86-64) = 5.6.40-1.w7,它被軟件包 php56w-gd-5.6.40-1.w7.x86_64 需要
--> 正在處理依賴關系 php56w-common(x86-64) = 5.6.40-1.w7,它被軟件包 php56w-cli-5.6.40-1.w7.x86_64 需要
--> 正在處理依賴關系 php56w-common(x86-64) = 5.6.40-1.w7,它被軟件包 php56w-pdo-5.6.40-1.w7.x86_64 需要
--> 正在檢查事務
---> 軟件包 php56w.x86_64.0.5.6.40-1.w7 將被 刪除
---> 軟件包 php56w-cli.x86_64.0.5.6.40-1.w7 將被 刪除
---> 軟件包 php56w-gd.x86_64.0.5.6.40-1.w7 將被 刪除
---> 軟件包 php56w-pdo.x86_64.0.5.6.40-1.w7 將被 刪除
--> 解決依賴關系完成

依賴關系解決

  • 再安裝php相關擴展
yum -y install php-mysql

已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
 * webtatic: us-east.repo.webtatic.com
正在解決依賴關系
--> 正在檢查事務
---> 軟件包 php-mysql.x86_64.0.5.4.16-46.el7 將被 安裝
--> 正在處理依賴關系 php-pdo(x86-64) = 5.4.16-46.el7,它被軟件包 php-mysql-5.4.16-46.el7.x86_64 需要
--> 正在檢查事務
---> 軟件包 php-pdo.x86_64.0.5.4.16-46.el7 將被 安裝
--> 正在處理依賴關系 php-common(x86-64) = 5.4.16-46.el7,它被軟件包 php-pdo-5.4.16-46.el7.x86_64 需要
--> 正在檢查事務
---> 軟件包 php-common.x86_64.0.5.4.16-46.el7 將被 安裝
--> 解決依賴關系完成

可惜到這里還是出現了如下錯誤,因為之前安裝了舊版的php,沒有卸載干凈

---> 軟件包 php-common.x86_64.0.5.4.16-46.el7 將被 安裝
--> 處理 php70w-common-7.0.33-1.w7.x86_64 與 php-common < 7.0 的沖突
--> 解決依賴關系完成
錯誤:php70w-common conflicts with php-common-5.4.16-46.el7.x86_64
 您可以嘗試添加 --skip-broken 選項來解決該問題
 您可以嘗試執行:rpm -Va --nofiles --nodigest

  • 思路:卸載php-common,結果將php卸載了,php -v命令都識別不了;既然5.6版本也無法識別數據庫適配器,索性全部更換了php7,具體安裝詳見上

  • 最終解決辦法,在相關的擴展后面加上版本就好 yum -y install php70w-mysql

注意:之前因為下載不了包,修改了yum.repo.d文件的,將當前的數據源協議改為 http,這里還是改回https,網上的說法不要亂套用,還是要自己思考一下的

  • 至此,重啟php服務,刷新一下界面,typecho就出現了數據庫擴展,官方說使用mysql原生的,但是我這里沒有看到,選擇了另外一個,不影響安裝
[root@izwz993bv9azta8nrfwuhqz yum.repos.d]# kill -9 5470
[root@izwz993bv9azta8nrfwuhqz yum.repos.d]# php-cgi -b 127.0.0.1:8000 -c /etc/php.ini &

后來使用wordpress的過程中,發現可以不啟動,直接用nginx管理靜態網站即可(使用php-fpm服務管理),可惜這個時候已經沒有使用typecho了,順便多次刷新502的問題也解決了

  • 放一張成功的圖片,大吉大利今晚吃雞,來來去去折騰了三天,終於搞定了,還好沒有放棄

小確幸

每一絲靈感都值得被記錄,每一筆記錄都是成長,每一點成長都值得歡呼

博主個人站: www.imisty.cn
CSDN博客: https://blog.csdn.net/lookinthefog
博客園 :https://imist.cnblogs.com/

希望能夠認識一些熱愛技術的小伙伴,歡迎友鏈接喲


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM