Linux :通過源代碼編譯安裝lamp
區別
特性 | 源代碼編譯安裝 | yum 安裝 |
---|---|---|
安裝方式 | 從源代碼編譯構建 | 預編譯的二進制包 |
自定義程度 | 高度可定制 | 有限定制 |
性能優化 | 可針對特定硬件優化 | 通用優化 |
依賴管理 | 手動解決依賴關系 | 自動解決依賴 |
安裝復雜度 | 復雜,需技術經驗 | 簡單,一鍵安裝 |
維護更新 | 手動更新 | 自動更新 |
安全性 | 需自行關注安全補丁 | 官方提供安全更新 |
版本控制 | 可選擇任意版本 | 受倉庫版本限制 |
適用場景 | 高性能需求/特殊定制/學習環境 | 快速部署/生產環境/新手友好 |
lamp分別指linux,apache,MySQL(mariadb),php
php環境一般最后安裝,用于溝通web服務器和數據庫進行協同工作
源代碼安裝有四個步驟,分別為解包,配置,編譯,編譯安裝
安裝之前關閉防火墻和selinux,使用yum網絡源進行配置(wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo)
yum -y install epel-release
安裝需要的工具包
yum -y install bzip2 vim make wget openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ libxml2-devel
首先去官網找到需要的軟件包(一般為tar包,可以用tar命令解壓)
本次使用apr-1.7.0.tar.gz,
apr-util-1.6.1.tar.gz,
httpd-2.4.54.tar.gz,
mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz,
php-7.1.10.tar.bz2
使用xshell(或者其他軟件)將軟件包傳輸到linux系統中
首先解壓并安裝apr,apr-util包
apr
[root@xieyuhui2 ~]# tar -xzvf apr-1.7.0.tar.gz
[root@xieyuhui2 ~]# cd apr-1.7.0/
[root@xieyuhui2 apr-1.7.0]# sed -i '/$RM "$cfgfile"/d' configure #刪除configure里面的$RM "$cfgfile,使用`-i`選項時,`sed`會直接更改源文件
配置
[root@xieyuhui2 apr-1.7.0]# ./configure --prefix=/usr/local/apr #prefix為路徑
[root@xieyuhui2 apr-1.7.0]# make #編譯
[root@xieyuhui2 apr-1.7.0]# make install #編譯安裝
apr-util
[root@xieyuhui2 ~]# tar -xzvf apr-util-1.6.1.tar.gz
[root@xieyuhui2 ~]# cd apr-util-1.6.1/
[root@xieyuhui2 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr #with表示包含apr依賴組件
[root@xieyuhui2 apr-util-1.6.1]# make
[root@xieyuhui2 apr-util-1.6.1]# make install
httpd的依賴組件安裝完成后開始安裝httpd
[root@xieyuhui2 ~]# tar -xzvf httpd-2.4.54.tar.gz
[root@xieyuhui2 ~]# cd httpd-2.4.54/
[root@xieyuhui2 httpd-2.4.54]# ./configure --prefix=/usr/local/apache \
> --sysconfdir=/etc/httpd24 \
> --enable-so \
> --enable-ssl \
> --enable-cgi \
> --enable-rewrite \
> --with-zlib \
> --with-pcre \
> --with-apr=/usr/local/apr \
> --with-apr-util=/usr/local/apr-util/ \
> --enable-modules=most \
> --enable-mpms-shared=all \
> --with-mpm=prefork
[root@xieyuhui2 httpd-2.4.54]# make
[root@xieyuhui2 httpd-2.4.54]# make install
啟動apache服務
[root@xieyuhui2 ~]# /usr/local/apache/bin/apachectl start
安裝依賴包
yum -y install libncurses* #centos7系統自帶,因此不用安裝
創建mysql用戶
[root@xieyuhui2 ~]# useradd -r -M -s /sbin/nologin mysql #-r 表示創建一個系統用戶,uid小于1000,-M表示不創建家目錄
安裝mysql
[root@xieyuhui2 ~]# tar -xzvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz -C /usr/local #-C表示指定目錄
[root@xieyuhui2 local]# ln -sv /usr/local/mysql-5.7.37-linux-glibc2.12-x86_64 /usr/local/mysql #給mysql-5.7.37-linux-glibc2.12-x86_64創建軟鏈接
[root@xieyuhui2 local]# chown -R mysql.mysql /usr/local/mysql #將mysql的所有者和所屬組改為mysql,-R表示遞歸
[root@xieyuhui2 local]# mkdir -p /opt/data
[root@xieyuhui2 local]# chown -R mysql.mysql /opt/data/
# yum -y install libaio centos7自帶因此不安裝,如果沒有則安裝
數據庫初始化
[root@xieyuhui2 ~]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/opt/data/
[root@xieyuhui2 ~]# ln -sv /usr/local/mysql/include/ /usr/local/include/mysql
[root@xieyuhui2 ~]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
[root@xieyuhui2 ~]# ldconfig #查看是否報錯
編輯mysql文件
[root@xieyuhui2 ~]# vim /etc/my.cnf #里面的的東西都可以刪掉然后自己重寫
[mysql]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sockport = 3306
pid-file = /opt/data/mysql.pid
user = mysqlskip-name-resolve
[root@xieyuhui2 ~]# vim /usr/local/mysql/support-files/mysql.server
定義mysql服務使用systemd管理
[root@xieyuhui2 ~]# cd /usr/lib/systemd/system
[root@xieyuhui2 system]# vim mysqld.service
重啟mysql服務
[root@xieyuhui2 system]# systemctl daemon-reload
[root@xieyuhui2 system]# systemctl enable --now mysqld
添加mysql命令的變量到環境變量
[root@xieyuhui2 ~]# vim /etc/profile
[root@xieyuhui2 ~]# source /etc/profile
設置數據庫密碼
[root@xieyuhui2 ~]# mysql -uroot -p #首次進入沒有密碼,直接回車即可
[root@xieyuhui2 ~]# /usr/local/mysql/bin/mysql -uroot -e "set password=password('redhat')"
部署lamp-php
安裝依賴包,安裝GD庫和GD庫關聯程序,用來處理和生成圖片
[root@xieyuhui2 ~]# yum -y install \
> libjpeg \
> libjpeg-devel \
> libpng libpng-devel \
> freetype freetype-devel \
> libxml2 \
> libxml2-devel \
> zlib zlib-devel \
> curl curl-devel
[root@xieyuhui2 ~]# tar -xjvf php-7.1.10.tar.bz2
[root@xieyuhui2 php-7.1.10]# ./configure \
> --prefix=/usr/local/php \
> --with-apxs2=/usr/local/apache/bin/apxs \
> --with-mysql-sock=/tmp/mysql.sock \
> --with-mysqli \
> --with-zlib \
> --with-curl \
> --with-gd \
> --with-jpeg-dir \
> --with-png-dir \
> --with-freetype-dir \
> --with-openssl \
> --enable-mbstring \
> --enable-xml \
> --enable-session \
> --enable-ftp \
> --enable-pdo \
> --enable-tokenizer \
> --enable-zip
[root@xieyuhui2 php-7.1.10]# make
[root@xieyuhui2 php-7.1.10]# make install
測試環境時使用php.ini-development文件,生產環境使用php.ini-production文件
[root@xieyuhui2 ~]# cp php.ini-development /usr/local/php/lib/php.ini
修改php配置文件
1.設置時區
[root@xieyuhui2 ~]# vim /usr/local/php/lib/php.ini
2.使apache支持php
[root@xieyuhui2 ~]# vim /etc/httpd24/httpd.conf
[root@xieyuhui2 ~]# cd /usr/local/apache/htdocs
[root@xieyuhui2 htdocs]# rm -f /usr/local/apache/htdocs/index.html #刪除原有的html文件
[root@xieyuhui2 htdocs]# vim index.php #驗證php詳細信息測試網頁
重啟apache服務(先停止再啟動)
[root@xieyuhui2 ~]# /usr/local/apache/bin/apachectl stop
[root@xieyuhui2 ~]# /usr/local/apache/bin/apachectl start