官方文檔以及教程
安裝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/
希望能夠認識一些熱愛技術的小伙伴,歡迎友鏈接喲