轻量级博客|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/

但愿可以认识一些热爱技术的小伙伴,欢迎友连接哟

相关文章
相关标签/搜索