LAMP架構是目前成熟的企業網站應用模式之一,指的是協同工做的一整套系統和相關軟件,可以提供動態Web站點服務及其應用開發環境。LAMP是一個縮寫詞,具體包括Linux操做系統、Apache網站服務器、MySQL數據庫服務器、PHP(或Perl、Python)網頁編程語言。php
在構建LAMP平臺時,各組件的安裝順序依次爲Linux、Apache、MySQL、PHP。其中Apache和MySQL的安裝並無嚴格的順序,PHP環境的安裝通常放到最後安裝,負責溝通 Web 服務器和數據庫系統以協同工做。html
1 systemctl stop firewalld 2 systemctl disable firewalld 3 setenforce 0 4 5 #傳入壓縮包 6 httpd-2.4.29.tar.gz 7 apr-1.6.2.tar.gz 8 apr-util-1.6.0.tar.gz
1 yum -y install \ 2 gcc \ #C語言的編譯器 3 gcc-c++ \ #C++的編譯器 4 make \ #源代碼編譯器(源代碼轉換成二進制文件) 5 pcre \ #pcre是一個Perl函數庫,包括perl 兼容的正則表達式庫 6 pcre-devel \ #perl的接口開發包 7 expat-devel \ #用於支持網站解析HTML、XML文件 8 perl #perl語言編譯 9 10 yum -y install gcc gcc-c++ make pcre pcre-devel expat-devel perl
1 cd /opt/ 2 tar zxvf apr-1.6.2.tar.gz 3 tar zxvf apr-util-1.6.0.tar.gz 4 tar jxvf httpd-2.4.29.tar.bz2 5 6 mv apr-1.6.2 /opt/httpd-2.4.29/srclib/apr 7 mv apr-util-1.6.0 /opt/httpd-2.4.29/srclib/apr-util 8 9 cd /opt/httpd-2.4.29/ 10 ./configure \ 11 --prefix=/usr/local/httpd \ #指定將 httpd 服務程序的安裝路徑 12 --enable-so \ #啓用動態加載模塊支持,使 httpd 具有進一步擴展功能的能力 13 --enable-rewrite \ #啓用網頁地址重寫功能,用於網站優化、防盜鏈及目錄遷移維護 14 --enable-charset-lite \ #啓動字符集支持,以便支持使用各類字符集編碼的頁面 15 --enable-cgi #啓用CGI(通用網關接口)腳本程序支持,便於網站的外部擴展應用訪問能力 16 17 ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
1 make #make -j 2 表示開2核同時進行編譯 2 make install
1 ln -s /usr/local/httpd/conf/httpd.conf /etc/ 2 ln -s /usr/local/httpd/bin/* /usr/local/bin/
1 cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd #用於service服務管理 2 chmod +x /etc/init.d/httpd 3 vi /etc/init.d/httpd 4 #!/bin/bash #在第一行前插入新行,添加此三行內容 5 # chkconfig: 35 85 21 #35級別自動運行 第85個啓動 第21個關閉 6 # description: Apache is a World Wide Web server 7 8 chkconfig --add httpd #將httpd服務加入到service管理器 9 10 systemctl start httpd.service 11 或 12 service httpd start
1 vim /lib/systemd/system/httpd.service 2 [Unit] 3 Description=The Apache HTTP Server #描述 4 After=network.target #描述服務類別 5 [Service] 6 Type=forking #後臺運行方式 7 PIDFile=/usr/local/httpd/logs/httpd.pid #PID文件位置 8 ExecStart=/usr/local/bin/apachectl $OPTIONS #啓動服務 9 ExecReload=/bin/kill -HUP $MAINPID #根據PID重載配置 10 [Install] 11 WantedBy=multi-user.target 12 13 systemctl start httpd.service 14 systemctl enable httpd.service
1 vim /etc/httpd.conf 2 --52行--修改 3 Listen 192.198.208.40:80 4 --197行--取消註釋,修改 5 ServerName www.xcc.com:80 6 7 --221行--默認首頁存放路徑 8 DocumentRoot "/usr/local/httpd/htdocs" 9 --255行--默認首頁文件名設置 10 DirectoryIndex index.html 11 12 httpd -t 或 apachectl -t #檢查配置文件的配置項是否有誤 13 cat /usr/local/httpd/htdocs/index.html 14 systemctl restart httpd.service
1 echo "192.168.208.40 www.xcc.com" >> /etc/hosts 2 3 http://192.168.208.40 4 http://www.xcc.com
1 mysql-5.7.17.tar.gz 2 boost_1_59_0.tar.gz #支持c++的運行庫
1 yum -y install \ 2 gcc \ 3 gcc-c++ \ 4 ncurses \ #字符終端下圖形互動功能的動態庫 5 ncurses-devel \ #ncurses開發包 6 bison \ #語法分析器 7 cmake #mysql須要用cmake編譯安裝
1 tar zxvf mysql-5.7.17.tar.gz 2 tar zxvf boost_1_59_0.tar.gz 3 4 cd /opt 5 mv boost_1_59_0 /usr/local/boost #重命名 6 7 cd /opt/mysql-5.7.17/ 8 cmake \ 9 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定mysql的安裝路徑 10 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定mysql進程監聽套接字文件(數據庫鏈接文件)的存儲路徑 11 -DSYSCONFDIR=/etc \ #指定配置文件的存儲路徑 12 -DSYSTEMD_PID_DIR=/usr/local/mysql \ #指定進程文件的存儲路徑 13 -DDEFAULT_CHARSET=utf8 \ #指定默認使用的字符集編碼,如utf8 14 -DDEFAULT_COLLATION=utf8_general_ci \ #指定默認使用的字符集校對規則 15 -DWITH_EXTRA_CHARSETS=all \ #指定其餘字符集編碼 16 -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安裝INNOBASE存儲引擎 17 -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ #安裝ARCHIVE存儲引擎 18 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ #安裝BLACKHOLE存儲引擎 19 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ #安裝PERFSCHEMA存儲引擎 20 -DMYSQL_DATADIR=/usr/local/mysql/data \ #指定數據庫文件的存儲路徑 21 -DWITH_BOOST=/usr/local/boost \ #指定boost的路徑,若使用mysql-boost集成包安裝則-DWITH_BOOST=boost 22 -DWITH_SYSTEMD=1 #生成便於systemctl管理的文件
MYISAM,MERGE,MEMORY,和CSV引擎是默認編譯到服務器中,並不須要明確地安裝
靜態編譯一個存儲引擎到服務器,使用-DWITH_engine_STORAGE_ENGINE= 1
可用的存儲引擎值有:ARCHIVE,BLACKHOLE,EXAMPLE,FEDERATED,INNOBASE (InnoDB),PARTITION (partitioning support)和PERFSCHEMA (Performance Schema)前端
注意:若是在CMAKE的過程當中有報錯,當報錯解決後,須要把源碼目錄中的CMakeCache.txt文件刪除,而後再從新CMAKE,不然錯誤依舊mysql
1 make -j 2 && make install 2 3 須要長時間等待,-j 2 表示使用兩個核進行編譯
1 useradd -M -s /sbin/nologin mysql
1 vim /etc/my.cnf #刪除原配置項,再從新添加下面內容 2 [client] #客戶端設置 3 port = 3306 4 socket=/usr/local/mysql/mysql.sock 5 6 [mysqld] #服務全局設置 7 user = mysql #設置管理用戶 8 basedir=/usr/local/mysql #指定數據庫的安裝目錄 9 datadir=/usr/local/mysql/data #指定數據庫文件的存儲路徑 10 port = 3306 #指定端口 11 character-set-server=utf8 #設置服務器字符集編碼格式爲utf8 12 pid-file = /usr/local/mysql/mysqld.pid #指定pid 進程文件路徑 13 socket=/usr/local/mysql/mysql.sock #指定數據庫鏈接文件 14 bind-address = 0.0.0.0 #設置監聽地址,0.0.0.0表明容許全部,如容許多個IP需空格隔開 15 skip-name-resolve #禁用DNS解析 16 max_connections=2048 #設置mysql的最大鏈接數 17 default-storage-engine=INNODB #指定默認存儲引擎 18 max_allowed_packet=16M #設置數據庫接收的數據包大小的最大值 19 server-id = 1 #指定服務ID號 20 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
sql_mode經常使用值以下:c++
sql_mode經常使用值 | 說明 |
---|---|
NO_ENGINE_SUBSTITUTION | 若是須要的存儲引擎被禁用或未編譯,那麼拋出錯誤。不設置此值時,用默認的存儲引擎替代,並拋出一個異常 |
STRICT_TRANS_TABLES | 在該模式下,若是一個值不能插入到一個事務表中,則中斷當前的操做,對非事務表不作限制 |
NO_AUTO_CREATE_USER | 禁止GRANT建立密碼爲空的用戶 |
NO_AUTO_VALUE_ON_ZERO | mysql中的自增加列能夠從0開始。默認狀況下自增加列是從1開始的,若是你插入值爲0的數據會報錯 |
NO_ZERO_IN_DATE | 不容許日期和月份爲零 |
NO_ZERO_DATE | mysql數據庫不容許插入零日期,插入零日期會拋出錯誤而不是警告 |
ERROR_FOR_DIVISION_BY_ZERO | 在INSERT或UPDATE過程當中,若是數據被零除,則產生錯誤而非警告。默認狀況下數據被零除時MySQL返回NULL |
PIPES_AS_CONCAT | 將"||"視爲字符串的鏈接操做符而非或運算符,這和Oracle數據庫是同樣的,也和字符串的拼接函數Concat相相似 |
ANSI_QUOTES | 啓用ANSI_QUOTES後,不能用雙引號來引用字符串,由於它被解釋爲識別符 |
1 chown -R mysql:mysql /usr/local/mysql 2 chown mysql:mysql /etc/my.cnf
1 echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile 2 source /etc/profile
1 cd /usr/local/mysql/bin/ 2 ./mysqld \ 3 --initialize-insecure \ #生成初始化密碼爲空 4 --user=mysql \ #指定管理用戶 5 --basedir=/usr/local/mysql \ #指定數據庫的安裝目錄 6 --datadir=/usr/local/mysql/data #指定數據庫文件的存儲路徑
1 cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ #用於systemctl服務管理 2 systemctl daemon-reload #刷新識別 3 systemctl start mysqld.service #開啓服務 4 systemctl enable mysqld #開機自啓動 5 netstat -anpt | grep 3306 #查看端口
1 mysqladmin -u root -p password "abc123" #給root帳號設置密碼爲abc123,提示輸入的是原始密碼(爲空)
1 mysql -u root -p 2 grant all privileges on *.* to 'root'@'%' identified by 'abc123'; 3 #授予root用戶能夠在全部終端遠程登陸,使用的密碼是abc123,並對全部數據庫和全部表有操做權限 4 5 show databases;
6 #查看當前已有的數據庫
1 php-7.1.10.tar.bz2
1 yum -y install \ 2 gd \ 3 libjpeg libjpeg-devel \ #圖片格式 4 libpng libpng-devel \ #圖片格式 5 freetype freetype-devel \ 6 libxml2 libxml2-devel \ 7 zlib zlib-devel \ 8 curl curl-devel \ 9 openssl openssl-devel
1 cd /opt 2 tar jxvf php-7.1.10.tar.bz2 3 cd /opt/php-7.1.10/
1 ./configure \ 2 --prefix=/usr/local/php7 \ #指定將 PHP 程序的安裝路徑 3 --with-apxs2=/usr/local/httpd/bin/apxs \ #指定Apache httpd服務提供的apxs 模塊支持程序的文件位置 4 --with-mysql-sock=/usr/local/mysql/mysql.sock \ #指定mysql 數據庫鏈接文件的存儲路徑 5 --with-config-file-path=/usr/local/php7 #設置 PHP 的配置文件 php.ini 將要存放的位置 6 --with-mysqli \ #添加 MySQL 擴展支持 #mysqli擴展技術不只能夠調用MySQL的存儲過程、處理MySQL事務,並且還可使訪問數據庫工做變得更加穩定 7 --with-zlib \ #支持zlib功能,提供數據壓縮 8 --with-curl \ #開啓curl擴展功能,實現HTTP的Get下載和Post請求的方法 9 --with-gd \ #激活gd 庫的支持 10 --with-jpeg-dir \ #激活jpeg 的支持 11 --with-png-dir \ #激活png 的支持 12 --with-freetype-dir \ 13 --with-openssl \ 14 --enable-mbstring \ #啓用多字節字符串功能,以便支持中文等代碼 15 --enable-xml \ #開啓擴展性標記語言模塊 16 --enable-session \ #會話 17 --enable-ftp \ #文本傳輸協議 18 --enable-pdo \ #函數庫 19 --enable-tokenizer \ #令牌解釋器 20 --enable-zip #ZIP壓縮格式
1 make && make install
1 cp /opt/php-7.1.10/php.ini-development /usr/local/php7/php.ini 2 #在測試環境時使用php.ini-development文件,而在生產環境時使用php.ini-production文件 3 4 vim /usr/local/php7/php.ini 5 --1170行--修改 6 mysqli.default_socket = /usr/local/mysql/mysql.sock 7 --939行--取消註釋,修改 8 date.timezone = Asia/Shanghai
1 ln -s /usr/local/php7/bin/* /usr/local/bin/ 2 php -m #查看PHP 加載了哪些模塊
1 vim /etc/httpd.conf 2 --393行--插入如下內容 3 AddType application/x-httpd-php .php 4 AddType application/x-httpd-php-source .phps 5 --256行--修改首頁文件名設置 6 DirectoryIndex index.html index.php 7 8 ---檢查支持php7的模塊是否存在------ 9 LoadModule php7_module modules/libphp7.so
1 rm -rf /usr/local/httpd/htdocs/index.html 2 vim /usr/local/httpd/htdocs/index.php 3 <?php 4 phpinfo(); 5 ?> 6 7 systemctl restart httpd.service 8 9 瀏覽器訪問 10 http://192.168.208.40