選擇源碼編譯安裝軟件有以下幾個原因:
- 滿足不同的運行平臺。linux發行版衆多,但是每個版本採用的軟件或者內核版本都不一樣,而而二進制包所依賴的環境不一定能夠正常運行,所以大部分軟件直接提供源碼。
- 方便定製所需的模塊,滿足不同的需求。大多數二進制代碼都是一鍵裝完所有,自由度並不高;而源碼編譯需要安裝哪個模塊都是可以自由定製的。
- 方便運維人員和開發人員的維護。我們的源碼是可以打包二進制的,但是對於這個軟件的打包都會有一 份代價不小的額外工作,包括維護,所以如果是源碼的話,軟件產商會直接維護,但是如果是二進制的話, 一般都是Linux 發行商提供!
安裝和配置apache
準備環境:
yum -y install make gcc gcc-c++ openssl openssl-devel
分別編譯安裝一下依賴包
注:httpd2.4版本以後要求apr的版本爲1.5以上
apr-1.6.2.tar.gz、apr-util-1.6.0.tar.gz 、 pcre-8.41.tar.gz
[root@localhost ~]# tar xf apr-1.6.2.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/apr-1.6.2/
[root@localhost apr-1.6.2]# ./configure --prefix=/usr/local/apr
[root@localhost apr-1.6.2]# make && make install
[root@localhost ~]# tar xf apr-util-1.6.0.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/apr-util-1.6.0/
[root@localhost apr-util-1.6.0]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
[root@localhost apr-util-1.6.0]# make -j 8 && make install
報錯解決:xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
yum install -y expat
[root@localhost ~]# tar xf pcre-8.41.tar.gz -C /usr/local/src/
[root@localhost ~]#cd /usr/local/src/pcre-8.41/
[root@localhost pcre-8.41]# ./configure --prefix=/usr/local/pcre [root@localhost pcre-8.41]# make && make install
編譯安裝apache
[root@localhost ~]# tar zxvf httpd-2.4.37.tar.gz -C /usr/local/src/ [root@localhost ~]# cd /usr/local/src/httpd-2.4.37/
[root@localhost httpd-2.4.37]#./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-ssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-modules=most --enable-mpms-shared=all --with-mpm=event
make && make install
報錯:make[1]: Leaving directory `/root/httpd-2.4.41/support’
解決
把你下載的apr、apr-util複製到/root/httpd-2.4.41/srclib/apr(apr-util)在重新./configure make make install
生成啓動腳本
[root@localhost httpd-2.4.37]# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
chomod +x /etc/init.d/httpd
寫個httpd系統服務啓動腳本,以754的權限保存此文件
cat >/etc/systemd/system/httpd.service<<EOF
[Unit]
Description=httpd
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/httpd start
ExecReload=/etc/init.d/httpd restart
ExecStop=/etc/init.d/httpd stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
單獨創建一個用戶來運行服務
useradd -M -s /sbin/nologin www
修改vim /usr/local/apache/conf/httpd.conf的166行的User爲www
編譯安裝mysql
注:mysql從5.7版本後boost是必須的,建議把系統自帶的boost卸載掉,其中cmake的版本不低於2.8
安裝依賴包
yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel
添加用戶和組
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -M -s /sbin/nologin -r -g mysql mysql
解壓源碼包
[root@localhost ~]# tar xf mysql-boost-5.7.28.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/mysql-5.7.28
創建數據目錄和安裝目錄
[root@localhost ~]# mkdir -p /var/lib/mysql/data
[root@localhost ~]# chown -R mysql:mysql /var/lib/mysql
編譯安裝MySQL
[root@localhost ~]# cmake -DCMAKE_INSTALL_PREFIX=/var/lib/mysql \
-DMYSQL_DATADIR=/var/lib/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/src/mysql-5.7.28/boost/boost_1_59_0/
[root@localhost ~]# make
[root@localhost ~]# make install
編輯配置文件
[root@localhost ~]# vim /etc/my.cnf
[mysqld] port=3306
user=mysql basedir=/var/lib/mysql
datadir=/var/lib/mysql/data
socket=/tmp/mysql.sock
character-set-server=utf8
log-error=/var/log/mysqld.log
[mysql] socket=/tmp/mysql.sock
配置環境變量
[root@localhost ~]# vim /etc/profile.d/mysql.sh
PATH=/var/lib/mysql/bin:$PATH
[root@localhost ~]# source /etc/profile.d/mysql.sh
生成服務啓動腳本
[root@localhost ~]# cp /var/lib/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@localhost ~]# chmod +x /etc/init.d/mysqld
[root@localhost ~]# chown -R mysql:mysql /var/lib/mysql
初始化數據庫
[root@localhost ~]# mysqld --defaults-file=/etc/my.cnf --initialize
編譯安裝php
安裝epel源
[root@localhost ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache
安裝所需依賴
[root@localhost ~]# yum -y install php-mcrypt libmcrypt libmcrypt-devel autoconf freetype freetype-devel gd libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel libjpeg-devel freetype-devel libmcrypt-devel
解壓文件
[root@localhost ~]# tar xf php-7.1.24.tar.gz -C /usr/local/src
[root@localhost ~]# cd /usr/local/src/php-7.1.24/
[root@localhost ~]# ./configure --prefix=/usr/local/php/ \
–with-apxs2=/usr/local/apache/bin/apxs \
–enable-mbstring \
–with-curl \ --with-gd \
–enable-fpm \ --enable-mysqlnd \
–with-pdo-mysql=mysqlnd \
–with-config-file-path=/etc/ \
–with-mysqli=mysqlnd \
–with-mysql-sock=/tmp/mysql.sock \
–enable-maintainer-zts
[root@localhost ~]# make && make install
生成配置文件
cp /php.ini.production /etc/php.ini
編輯apache的配置文件以支持php的文件
vim /usr/local/apache/conf/httpd.conf
在393行後添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
測試是否可以連接mysql
<?php $mysqli = new mysqli("localhost", "root", "123456"); if(!$mysqli) { echo"database error"; }else{ echo"php連接mysql successful"; } $mysqli->close(); phpinfo(); ?>