輕量級博客|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

  • 查看狀態顯示運行即爲啓動成功html

安裝php和相關插件

Typecho官方要求PHP5.1,可是聽說PHP7的性能是PHP5的兩倍,因此咱們直接安裝PHP7好了。因爲Centos內置源的版本比較老,因此咱們要先更換一下PHP的源,輸入以下指令:mysql

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-gdnginx

官網獲取Typecho主程序

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

  • 主程序上傳完後執行以下指令提高權限,這一步很重要,否則Typecho沒有辦法完成安裝
    • chmod -R 777 /var/www/html # 提高權限
  • 輸入以下指令重啓Apache服務:sql

    • 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 -vapache

  • 檢查當前PHP的安裝包

$ yum list installed | grep phpvim

  • 移除當前PHP的安裝包

$ yum remove php*windows

  • 添加第三方的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/

但願可以認識一些熱愛技術的小夥伴,歡迎友連接喲

相關文章
相關標籤/搜索