這里希望通過編譯安裝方式來實現(xiàn)對PHP運行環(huán)境的個性化定制,具體的會按名稱縮寫中的順序來編譯安裝所需的各個組件 apache/nginx -> mysql -> php
留壩網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站設計等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)2013年至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)。編譯過程中排錯時, 可以從以下三個維度分析:
編譯過程中的實時報錯信息 相關(guān)程序的運行日志、訪問日志、報錯日志 查看 systemd 產(chǎn)生的系統(tǒng)日志,常用命令 journalctl -xn 基礎依賴安裝這些都是在 lamp / lnmp 編譯過程中報錯提示低要求必須依賴的包,在此預先準備好
sudo yum install gcc gcc-c++ cmake kernel-devel openssl-devel git ncurses-devel bison wget 關(guān)閉安全系統(tǒng) - 避免各種服務被屏蔽
sudo service firewalld stop # 關(guān)閉防火墻(centos6.5下是iptables服務) sudo chkconfig firewalld off # 關(guān)閉防火墻的開機啟動 sudo setenforce 0 # 關(guān)閉selinux服務 sudo sed -i \'s|SELINUX=enforcing|SELINUX=disabled|g\' /etc/selinux/config # 關(guān)閉selinux的開機啟動 準備源碼存放目錄
mkdir /tmp/source cd /tmp/source
163源下默認提供2.4.6版本。這里我們?nèi)匀徊捎檬止ぞ幾g方式來安裝apache
# 安裝pcre依賴 - 提供url-rewrite支持 cd /tmp/source wget http://nchc.dl.sourceforge.net/project/pcre/pcre/8.39/pcre-8.39.tar.gz tar -zxvf pcre-8.39.tar.gz cd pcre-8.39/ ./configure --prefix=/usr/local/pcre make sudo make install # 安裝zlib依賴 - 提供gzip壓縮支持 cd /tmp/source wget http://zlib.net/zlib-1.2.8.tar.gz tar -zxvf zlib-1.2.8.tar.gz cd zlib-1.2.8/ ./configure --prefix=/usr/local/zlib make sudo make install cd /tmp/source wget http://mirror.bit.edu.cn/apache//apr/apr-1.5.2.tar.gz # 下載apr依賴 - Apache可移植運行庫 wget http://mirror.bit.edu.cn/apache//apr/apr-util-1.5.4.tar.gz # 下載apr-util依賴 - 基于apr提供了一系列有用的抽象封裝 wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.23.tar.gz # 下載apache源碼 tar -zxvf apr-1.5.2.tar.gz tar -zxvf apr-util-1.5.4.tar.gz tar -zxvf httpd-2.4.23.tar.gz # 補全apr系列依賴到httpd的源碼庫中 mv apr-1.5.2 httpd-2.4.23/srclib/apr mv apr-util-1.5.4 httpd-2.4.23/srclib/apr-util # 編譯安裝httpd cd httpd-2.4.23 ./configure --prefix=/usr/local/httpd --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc/httpd/conf --enable-so --enable-rewrite --enable-ssl --enable-proxy --with-included-apr --with-pcre=/usr/local/pcre --with-z=/usr/local/zlib make sudo make install # 將httpd注冊為服務以便于通過service命令管理 sudo cp build/rpm/httpd.init /etc/init.d/httpd sudo chmod 755 /etc/init.d/httpd sudo sed -i \'2a # chkconfig: - 80 90n# description: httpd service\' /etc/init.d/httpd # 在第二行后追加兩行服務注解(必須) sudo chkconfig --add httpd # 編入服務 sudo chkconfig httpd on # 服務開機啟動 # 調(diào)整服務配置文件 cd /etc/httpd/conf sudo sed -i \'/<IfModule mime_module>/a Addtype application/x-httpd-php .php\' httpd.conf # 添加php的minetype sudo sed -i \'s|DirectoryIndex index.html|DirectoryIndex index.php index.html index.htm|g\' httpd.conf # 默認頁配置 sudo sed -i \'s|#LoadModule rewrite_module|LoadModule rewrite_module|g\' httpd.conf # 啟用url重寫模塊 sudo sed -i \'s|#Include /etc/httpd/conf/extra/httpd-vhosts.conf|Include /etc/httpd/conf/extra/httpd-vhosts.conf|g\' httpd.conf # 啟用虛擬主機配置文件 sudo sed -i \'/^ServerRoot/aPidFile /var/run/httpd.pid\' httpd.conf # 更改服務進程pid文件寫入路徑(解決路徑報錯) sudo sed -i \'/<VirtualHost *:80>/,$s|^|#|\' extra/httpd-vhosts.conf # 注釋掉預置的測試站點(解決測試站點不存在報錯) sudo mkdir /var/log/httpd sudo chown httpd:httpd /var/log/httpd sudo sed -i \'s|CustomLog "logs/access_log" common|CustomLog "/var/log/httpd/access_log" common|g\' httpd.conf # 更改訪問日志目錄 sudo sed -i \'s|ErrorLog "logs/error_log"|ErrorLog "/var/log/httpd/error_log"|g\' httpd.conf # 更改報錯日志目錄 # httpd用戶組管理 sudo useradd -s /sbin/nologin -r httpd # 創(chuàng)建系統(tǒng)賬戶類型的非登錄賬戶 sudo sed -i \'s|User daemon|User httpd|g\' /etc/httpd/httpd.conf # 設定服務啟動賬戶 sudo sed -i \'s|Group daemon|Group httpd|g\' /etc/httpd/httpd.conf # 設定服務啟動用戶組 Nginx編譯安裝 - 以fastcgi方式同php協(xié)作
epel源下已有最新穩(wěn)定版1.10.1。但這里我們?nèi)匀徊捎檬止ぞ幾g方式來安裝nginx
cd /tmp/source wget http://nchc.dl.sourceforge.net/project/pcre/pcre/8.39/pcre-8.39.tar.gz # 下載pcre依賴 - 提供url-rewrite支持 wget http://zlib.net/zlib-1.2.8.tar.gz # 下載zlib依賴 - 提供gzip壓縮支持 wget https://www.openssl.org/source/openssl-1.0.2j.tar.gz # 下載openssl依賴 wget http://nginx.org/download/nginx-1.10.1.tar.gz # 下載nginx源碼 tar -zxvf pcre-8.39.tar.gz tar -zxvf zlib-1.2.8.tar.gz tar -zxvf openssl-1.0.2j.tar.gz tar -zxvf nginx-1.10.1.tar.gz cd nginx-1.10.1 ./configure --prefix=/usr/local/nginxd --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin/nginx --with-http_ssl_module --with-http_realip_module --without-http_uwsgi_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --without-http_autoindex_module --with-http_stub_status_module --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/run/nginx/nginx.lock --error-log-path=/var/log/nginxd/error.log --http-log-path=/var/log/nginxd/access.log --with-pcre=/tmp/source/pcre-8.39 --with-zlib=/tmp/source/zlib-1.2.8 --with-openssl=/tmp/source/openssl-1.0.2j make sudo make install # 將nginxd注冊為服務以便于通過service命令管理 # 首先創(chuàng)建/etc/init.d/nginxd文件為 `https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/` 頁面內(nèi)容 cd /etc/init.d/ sudo sed -i \'s|/var/run/nginx.pid|/var/run/nginx/nginx.pid|g\' nginxd sudo sed -i \'s|/var/lock/subsys/nginx|/var/run/nginx/nginx.lock|g\' nginxd sudo chmod 755 nginxd sudo chkconfig --add httpd # 編入服務 sudo chkconfig nginxd on # 服務開機啟動 # nginxd用戶組管理 sudo useradd -s /sbin/nologin -r nginxd # 創(chuàng)建系統(tǒng)賬戶類型的非登錄賬戶 sudo sed -i \'s|#user nobody;|user nginxd;|g\' /etc/nginx/nginx.conf # 設定服務啟動賬戶 sudo chown nginxd:nginxd /var/run/nginxd sudo chown nginxd:nginxd /var/log/nginxd sudo sed -i \'s|/scripts$fastcgi_script_name|$document_root$fastcgi_script_name|g\' /etc/nginx/nginx.conf # 修復一個變量配置報錯 Mysql編譯安裝
mysql官方對發(fā)行包有著極好的支持,基本上大多數(shù)版本都提供了對應預編譯好的rpm包,我們可以直接下載安裝。另外,較新的幾個版本還提供了yum源。但這里,我們依然是采用手工編譯。留意,163源下默認提供5.5.50版本的MariaDB數(shù)據(jù)庫
cd /tmp/source wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.13.tar.gz # 下載mysql源碼 tar -zxvf mysql-5.7.13.tar.gz cd mysql-5.7.13 # cmake編譯配置,你也能通過`sudo ccmake .`命令來人性化交互式配置 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DINSTALL_BINDIR=/usr/bin -DINSTALL_SBINDIR=/usr/sbin -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/tmp/source -DWITH_DEBUG=OFF -DENABLE_DEBUG_SYNC=OFF -DWITH_UNIT_TESTS=OFF -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci make # 這一步時間很長,虛機配置3g內(nèi)存、兩核四中心 跑了50分鐘 sudo make install # mysqld用戶組管理 sudo useradd -s /sbin/nologin -r mysqld # 新增mysqld用戶 sudo mkdir /srv/mysql sudo chown mysqld:mysqld /srv/mysql sudo mysqld --initialize --user=mysqld --datadir=/srv/mysql # MySQL 5.7.6+初始化操作并生成my.cnf配置。??!這一步務必記錄下回顯信息最后一行給出的mysql管理員初始密碼,如`root@localhost: PFUtsbtpf5+N`?。? sudo mkdir /var/log/mariadb /var/run/mariadb sudo chown mysqld:mysqld /var/log/mariadb /var/run/mariadb sudo sed -i \'s|datadir=/var/lib/mysql|datadir=/srv/mysql|g\' /etc/my.cnf # 修正配置文件中的數(shù)據(jù)目錄 sudo sed -i \'s|socket=/var/lib/mysql/mysql.sock|socket=/var/run/mariadb/mysql.sock|g\' /etc/my.cnf # 修正配置文件中的套接字文件路徑 sudo sed -i \'/[mysqld]/apid-file=/var/run/mariadb/mysqld.pid\' /etc/my.cnf # 指定pid文件路徑 sudo sed -i \'/[mysqld]/auser=mysqld\' /etc/my.cnf # 指定服務啟動賬號 sudo mysql_ssl_rsa_setup # MySQL 5.7.6+鏈路加密配置初始化 # 將mysqld注冊為服務以便于通過service命令管理 sudo cp support-files/mysql.server /etc/init.d/mysqld sudo sed -i \'s|/var/lock/subsys|/var/run/mariadb|g\' /etc/init.d/mysqld # 修正lock文件目錄錯誤 sudo sed -i \'s|$lockdir/mysql|$lockdir/mysql.lock|g\' /etc/init.d/mysqld # 修正lock文件路徑錯誤 sudo chmod 755 /etc/init.d/mysqld sudo chkconfig --add /etc/init.d/mysqld sudo chkconfig mysqld on # 服務開機啟動 # mysql初始化 mysql -uroot -p #利用上面記錄的root密碼登入mysql終端,并執(zhí)行下面一條sql操作語句 set Password=PASSWORD(\'1qaz2wsx3edc\'); #首次安裝mysql強制要求你更新密碼才能運行 flush privileges; PHP編譯安裝
163源下默認提供5.4.16版本。這里我們?nèi)匀徊捎檬止ぞ幾g方式來安裝php
關(guān)于這里的php編譯安裝, 需要了解這些
這種方式下,php拓展是靜態(tài)編譯入php的,編譯導出的是 .o 靜態(tài)鏈接庫文件。 通過 yum包 及 phpize 方式安裝的php拓展,則是動態(tài)編譯入php的,編譯導出的文件是 .so 動態(tài)鏈接庫文件,并安裝在 extension_dir 目錄下。 如果要靜態(tài)編譯入php拓展,必須對php全量編譯。而后期的增加拓展,則只能是動態(tài)編譯出 鏈接庫 并載入到php中。關(guān)于iconv庫的幾點說明
Centos7最小化安裝 已默認在/usr/local/lib下安裝有一份libiconv庫,我們無需像網(wǎng)上教程說的那樣特意去下載安裝libiconv庫 不做特殊處理,則我們在 configure 并 sudo make 后會產(chǎn)生iconv相關(guān)報錯。cd /tmp/source wget http://cn2.php.net/distributions/php-5.6.24.tar.gz #下載php源碼 tar -zxvf php-5.6.24.tar.gz cd php-5.6.24 # 編譯安裝php,這里啟用的php拓展模塊都是我們?nèi)粘i_發(fā)中經(jīng)常用到的 # 其中 `--with-apxs2=/usr/local/httpd/bin/apxs` 參數(shù)僅在安裝了apache服務器時才使用 ./configure --prefix=/usr/local/php --enable-fpm --enable-pdo --enable-xml --enable-zip --enable-opcache --enable-sockets --enable-mbstring --enable-gd-native-ttf --with-mysql --with-mysqli --with-pdo-mysql --with-mysql-sock --with-gd --with-curl --with-zlib --with-openssl --with-gettext --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-apxs2=/usr/local/httpd/bin/apxs --with-libxml-dir=/usr/lib64 --with-mcrypt=/usr/lib64 --with-freetype-dir=/usr/lib64 --with-jpeg-dir=/usr/lib64 --with-png-dir=/usr/lib64 --with-iconv-dir=/usr/local/lib LIBS="-liconv" make sudo make install # 啟用配置文件 sudo mkdir /etc/php.d sudo chmod 777 /etc/php.d sudo cp /tmp/source/php-5.6.24/php.ini-production /etc/php.ini # 啟用生產(chǎn)環(huán)境模式下的php配置文件 sudo cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf # 啟用fpm默認配置文件 sudo ln -s /usr/local/etc/php-fpm.conf /etc/php-fpm.conf # 啟用opcache拓展(即便是靜態(tài)編譯安裝php,opcache也是以動態(tài)鏈接庫載入到php的,所以這里需要手工配置其啟用) sudo sed -i \'/[opcache]/azend_extension=opcache.so\' /etc/php.ini # 將php-fpm注冊為服務以便于通過service命令管理 sudo cp /tmp/source/php-5.6.24/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm cd /etc/init.d/ sudo chmod 755 php-fpm sudo sed -i \'2a # chkconfig: - 80 90n# description: php-fpm service\' php-fpm # 在第二行后追加兩行服務注解(必須) sudo chkconfig --add php-fpm # 編入服務 sudo chkconfig php-fpm on # 服務開機啟動 # php-fpm服務用戶組管理 sudo useradd -s /sbin/nologin -Mr phpfpm #新增phpfpm用戶 sudo sed -i \'s|user = nobody|user = phpfpm|g\' /etc/php-fpm.conf sudo sed -i \'s|group = nobody|group = phpfpm|g\' /etc/php-fpm.conf PHP后期增加拓展
# 以安裝phpredis拓展為例 cd /tmp/source git clone https://github.com/phpredis/phpredis.git # 下載phpredis源碼 cd phpredis/ phpize ./configure sudo make sudo make install sudo cp rpm/redis.ini /etc/php.d/redis.ini
sudo rm -rf /tmp/source
名稱欄目:CentOS7-Minimal模式下編譯搭建LAMP/LNMP環(huán)境
網(wǎng)頁URL:http://jinyejixie.com/article10/chojdo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設、企業(yè)建站、網(wǎng)站導航、云服務器、網(wǎng)站排名、服務器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)