centos7默認的php是5.5,mysql已經變爲mariadb,如果想要自定義的配置,需要自己手動來編譯配置.以下步驟做過操作驗證.
1、安裝centos7選擇基本安裝,配置完網絡後首先要先關閉firewall:
停止firewall
# systemctl stop firewalld.service
禁止firewall開機啓動
# systemctl disable firewalld.service
2、安裝iptables防火牆
yum方式安裝iptables
# yum install iptables-services
編輯防火牆配置文件
vi /etc/sysconfig/iptables
添加下面三句話到默認的22端口這條規則的下面
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 161 -j ACCEPT
最後重啓防火牆使配置生效
# systemctl restart iptables.service
設置防火牆開機啓動
# systemctl enable iptables.service
3,關閉SELINUX
編輯selinux的配置文件
vi /etc/selinux/config
註釋掉下面兩行
#SELINUX=enforcing
#SELINUXTYPE=targeted
增加一行
SELINUX=disabled
保存,關閉
ESC
:wq
重啓系統
shutdown -r now
4,centos7最小化安裝沒有wget工具,這個我們後面下源碼會用到,所以先安裝這個
yum install -y wget
5,增加第三方的yum源,有些壞境需要的軟件,centos自帶的源裏,我們增加兩個源,方便後面的yum安裝壞境需要的組件,要不一個一個的去下源碼編譯太過麻煩,我這裏只增加了epel和rpmforge兩個源
第一步,源文件如果衝突,需要有個優先級,所以先安裝yum-priorities
yum install yum-priorities
第二步,設置CentOS默認yum源的優先級爲最高
cd /etc/yum.repos.d/ #進入yum源目錄
vi CentOS-Base.repo #在[base]、[updates]、[extras]組下面添加priority=1,在[centosplus]、[contrib]組下面添加priority=2
第三步,安裝epel
#rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm --replacefiles
#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
#vi /etc/yum.repos.d/epel.repo
修改epel yum源優先級,priority=11
第四步驟,安裝rpmforge yum源
#wget http://apt.sw.be/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
#wget http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
#rpm --import RPM-GPG-KEY.dag.txt
#rpm -ivh rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
#vi /etc/yum.repos.d/rpmforge.repo
修改rpmforge yum源優先級,priority=12
6,yum update
7,yum安裝apache
#yum install -y httpd httpd-devel
啓動apache
systemctl start httpd.service
設置爲自啓動
systemctl enable httpd.service
8,yum安裝mysql
# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-community-server
成功安裝之後重啓mysql服務
#systemctl start mysqld.service
設置爲自啓動
#systemctl enable mysqld.service
設置mysql密碼
#mysql -uroot
mysql> SET PASSWORD = PASSWORD('123456');
啓動mysql
systemctl stop mysqld.service
增加到自啓動
systemctl start mysqld.service
因爲編譯php需要用到mysql的一些庫文件所以還需要安裝mysql庫
yum install -y mysql-devel
9,一次性yum安裝編譯php所需的組件,這些都是在一個錯誤一個錯誤的試驗後,爲了解決錯誤安裝的,不要嫌多.
yum install -y gcc cmake make gcc-c++ apr* automake autoconf libxml2 libxml2-devel openssl openssl-devel curl* libjpeg* libpng* freetype* zlib-devel zip unzip gzip ncurses* pcre-devel bzip2* gd gd-devel kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel ppl cloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* php-common php-gd ncurses* libtool* patch libmcrypt libmcrypt-devel mcrypt mhash --skip-broken
10,下載安裝php
我是在root用戶下直接安裝的,所以進入root家目錄
#cd /root
下載最新的php-5.3.29
#wget http://cn2.php.net/get/php-5.3.29.tar.gz/from/this/mirror
解壓縮
#tar -zxvf mirror
進入php目錄
#cd php-5.3.29
開始編譯
#./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-apxs2=/usr/bin/apxs --with-mysql=/usr/bin --with-mysqli=/usr/bin/mysql_config --with-iconv-dir=/usr/local --with-jpeg-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr/bin --enable-xml --disable-rpath --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-ftp --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --with-zlib --enable-pdo --with-pdo-mysql
注:如果出現Cannot find libmysqlclient的錯誤,就find下libmysqlclient*,找到libmysqlclient.so文件,做一個軟連接放到/usr/lib下就好了
#find / -name libmysqlclient*
你找的目錄可能和我的不同,以你的爲準建立鏈接
#ln -s /usr/lib64/mysql/libmysqlclient.so.18.1.0 /usr/lib/libmysqlclient.so
# make
# make install
10,編輯配置
# vi /etc/httpd/conf/httpd.conf
一,增加 AddType application/x-httpd-php .php .php3 .php5 .phtml
二,網站跟目錄配置修改 AllowOverride All
三,修改支持文件類型
<IfModule dir_module>
DirectoryIndex index.html index.htm default.html default.htm index.php default.php u.php
</IfModule>
拷貝php配置文件到配置目錄
#cp php.ini-production /usr/local/php/etc/php.ini
修改php.ini
#vi /usr/local/php/etc/php.ini
增加時區設置
date.timezone = Asia/Shanghai
其他優化設置,可以自行配製
保存退出後重啓動系統
另外,需要說明的,在編譯過程中,總結遇到的問題,常常都是以下原因
1,安裝了程序,但是沒有安裝庫,如安裝了mysql,但是沒有安裝mysql-devel,安裝了gd,但是沒有安裝ge-devel等等,這些在編譯過程中常常後需要調用一些庫文件時候出現錯誤,如果你的電腦裏沒有錯誤表明的以lib開頭的*.so文件,那麼大部分都是這個原因
2,很多文件安裝在了/usr/lib64下而不是/usr/lib下,編譯過程常常自動搜索/usr/lib,如果這裏沒有相應文件就會報錯,如果經過查找你安裝了相應文件,那麼你只需要租個連接到/usr/lib下就可以
3,php 編譯選項不對,最常見的如--with-apxs2=/usr/bin/apxs --with-mysql=/usr/bin,這兩個選項各個環境可能有所不同,你需要根據自己的環境來配置位置,而不能一味的跟着網上的文章走.
再另:常用的一些linux下的命令一定要學會,這對你定位錯誤,解決問題起決定作用
查找源yum源
#yun search name
顯示yum已安裝軟件的信息
#yum info name
顯示軟件的安裝路徑,yum安裝的也可以這樣查看
# whereis name,
或者 #rpm -qal name
查找文件
# find / -name 'php*'
查看文件屬於哪個軟件包
# rpm -qf name
查看軟件包都安裝到了那些目錄下
# rpm -qla name
查看文件所屬於的軟件包把包內所有文件都安裝在了那些目錄下
# rpm -qlf name
安裝一個包
rpm -ivh name/url
升級一個包
rpm -Uvh
移走一個包
# rpm -e
--replacefiles用於覆蓋安裝
# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm --replacefiles
顯示目錄或文件
#ls -lp|less
l :顯示詳細
p : 在每個文件名後附上一個字符以說明該文件的類型,“*”表示可執行的普通文件;“/”表示目錄;“@”表示符號鏈接;“|”表示FIFOs;“=”表示套
接字(sockets)。
less: 分屏
顯示某一文件或目錄
#ls -ldp name*
刪除文件
#rm -f filename
wget斷點續傳
#wget -c url
編輯文件
#vi name
打開文件時候是指令行模式
a進入編輯模式
o進入編輯模式並增加空行
ESC切換編輯模式到指令行模式
指令行模式下
dd刪除整行
yy複製整行
/name+回車搜索制定詞
:set nu增加行號
wq和:x是存盤退出
:q!強制退出不保存