思路
在構建LAMP平臺時,各元件的安裝順序依次為Linux、Apache、MySQL、PHP。
編譯安裝Apache httpd服務 ----->編譯安裝MySQL----->編譯安裝PHP ----->搭建LAMP平臺
編譯安裝Apache httpd
安裝環境依賴包
[root@192 opt]# yum -y install gcc gcc-c++ make pcre-devel expat-devel perl pcre zlib-devel zlib gcc \ #c語言編譯器 gcc-c++ \ #c編譯器 make \ #原始碼編譯器 pcre\ #pcre函式庫 pcre-devel \ #pcre介面開發包 expat-devel \ #用於支援網站解析HTML、XML檔案 perl #perl 語言編譯器
解壓軟體包
[root@192 opt]# tar xf apr-1.6.2.tar.gz [root@192 opt]# tar xf apr-util-1.6.0.tar.gz [root@192 opt]# tar jvxf httpd-2.4.29.tar.bz2
移動apr包 apr-util包到安裝目錄中,並切換到 httpd-2.4.29目錄中
mv apr-1.6.2 httpd-2.4.29/srclib/apr mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
編譯安裝
[root@192 httpd-2.4.29]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi ./configure \ --prefix=/usr/local/httpd \ #指定httpd的安裝目錄 --enable-so \ #啟用動態載入模組支援,使httpd具備進一步擴充套件功能的能力 --enable-rewrite \ #啟用網頁地址的重寫功能,用於網站最佳化、防盜鏈及目錄遷移維護 --enable-charset-lite \ #啟用字符集支援,以便支援使用各種字符集編碼的頁面 --enable-cgi #啟用CGI(通用閘道器介面)指令碼程式支援,便於網站外部擴充套件應用訪問的能力
[root@192 httpd-2.4.29]# make -j2 && make install
建立軟連線,方便補全
[root@192 httpd-2.4.29]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd #將檔案拷入/etc/init.d/httpd [root@192 httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/ #建立配置檔案軟連線放入etc目錄下 [root@192 httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ #將啟動檔案放入/usr/local/bin/目錄下可以直接使用
[root@192 httpd-2.4.29]# vim /lib/systemd/system/httpd.service #建立 httpd.service [Unit] Description=The Apache HTTP Server After=network.target [Service] Type=forking PIDFile=/usr/local/httpd/logs/httpd.pid ExecStart=/usr/local/bin/apachectl $OPTIONS ExecReload=/bin/kill -HUP ${MAINPID} ExecStop=/bin/kill -WINCH ${MAINPID} [Install] WantedBy=multi-user.target
[root@192 httpd-2.4.29]# systemctl start httpd.service
編譯安裝 mysql
安裝依賴包新增mysql使用者
[root@192 ~]# yum install -y ncurses-devel autoconf cmake yum -y install \ ncurses \ #字元終端下圖形互動功能的動態庫 ncurses-devel \ #ncurses開發包 bison \ #語法分析器 cmake #mysql需要用到的cmake編譯安裝包
新建使用者
[root@192 ~]# useradd -s /sbin/nologin mysql
###上傳mysql-boost-5.7.20.tar.gz到opt目錄下### [root@192 opt]# tar xf mysql-boost-5.7.20.tar.gz
配置軟體模組
[root@192 opt]# cd /opt/mysql-5.7.20/ [root@192 mysql-5.7.20]# cmake \ > -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ > -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ > -DSYSCONFDIR=/etc \ > -DSYSTEMD_PID_DIR=/usr/local/mysql \ > -DDEFAULT_CHARSET=utf8 \ > -DDEFAULT_COLLATION=utf8_general_ci \ > -DWITH_INNOBASE_STORAGE_ENGINE=1 \ > -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ > -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ > -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ > -DMYSQL_DATADIR=/usr/local/mysql/data \ > -DWITH_BOOST=boost \ > -DWITH_SYSTEMD=1 ####配置選項含義### 1、DCMAKE_INSTALL_PREFIX:指定將 mysql 資料庫程式安裝到某目錄下, 如目錄/usr/local/ mysql。 2、DMYSQL_UNIX_ADDR:指定套接字檔案的儲存路徑,資料庫連線的檔案 3、DSYSCONFDIR:指定初始化引數檔案目錄 3、DDEFAULT_CHARSET:指定預設使用的字符集編碼,如 utf8。 5、DDEFAULT_COLLATION:指定預設使用的字符集校對規則,utf8_general_ci 是適用於 UTF-8 字符集的通用規則。 6、DWITH_INNOBASE_STORAGE_ENGINE=1 :安裝INNOBASE儲存引擎 7、DWITH_ARCHIVE_STORAGE_ENGINE=1 :安裝ARCHIVE儲存引擎 8、DWITH_BLACKHOLE_STORAGE_ENGINE=1 :安裝BLACKHOLE儲存引擎 9、DWITH_PERFSCHEMA_STORAGE_ENGINE :安裝FEDERATED儲存引擎 指定安裝檔案的安裝路徑時常用的選項: -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 指定安裝路徑 -DMYSQL_DATADIR=/data/mysql 資料安裝路徑 -DSYSCONFDIR=/etc 配置檔案的安裝路徑 由於MySQL支援很多的儲存引擎而預設編譯的儲存引擎包括:csv、myisam、myisammrg和heap。若要安裝其它儲存引擎,可以使用類似如下編譯選項: -DWITH_INNOBASE_STORAGE_ENGINE=1 安裝INNOBASE儲存引擎 -DWITH_ARCHIVE_STORAGE_ENGINE=1 安裝ARCHIVE儲存引擎 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 安裝BLACKHOLE儲存引擎 -DWITH_FEDERATED_STORAGE_ENGINE=1 安裝FEDERATED儲存引擎 若要明確指定不編譯某儲存引擎,可以使用類似如下的選項: -DWITHOUT_<ENGINE>_STORAGE_ENGINE=1 比如: -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 不啟用或不編譯EXAMPLE儲存引擎 -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 -DWITHOUT_PARTITION_STORAGE_ENGINE=1 如若要編譯進其它功能,如SSL等,則可使用類似如下選項來實現編譯時使用某庫或不使用某庫: -DWITH_READLINE=1 -DWITH_SSL=system 表示使用系統上的自帶的SSL庫 -DWITH_ZLIB=system -DWITH_LIBWRAP=0 其它常用的選項: -DMYSQL_TCP_PORT=3306 設定預設埠的 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock MySQL程序間通訊的套接字的位置 -DENABLED_LOCAL_INFILE=1 是否啟動本地的LOCAL_INFILE -DEXTRA_CHARSETS=all 支援哪些額外的字符集 -DDEFAULT_CHARSET=utf8 預設字符集 -DDEFAULT_COLLATION=utf8_general_ci 預設的字符集排序規則 -DWITH_DEBUG=0 是否啟動DEBUG功能 -DENABLE_PROFILING=1 是否啟用效能分析功能 ################################################################################################## ------注意:如果在CMAKE的過程中有報錯--- 當報錯解決後,需要把原始碼目錄中的CMakeCache.txt檔案刪除,然後再重新CMAKE,否則錯誤依舊 ------注意:make: *** No targets specified and no makefile found. Stop.解決方法 1、wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz 2.、tar zxvf ncurses-5.6.tar.gz 3、 ./configure -prefix=/usr/local -with-shared-without-debug 4、make 5、make install ###############################################################################################
[root@192 opt]# make -j4 && make install
[root@192 mysql-5.7.20]# chown -R mysql:mysql /usr/local/mysql/
[root@192 mysql-5.7.20]# vim /etc/my.cnf
vim /etc/my.cnf #刪除原配置,新增新配置 #客戶端配置 [client] port = 3306 default-character-set=utf8 socket = /test/mysql/mysql.sock #服務端配置 [mysql] port = 3306 default-character-set=utf8 socket = /test/mysql/mysql.sock #服務端全域性配置 [mysqld] user = mysql basedir = /test/mysql datadir = /test/mysql/data port = 3306 character_set_server=utf8 pid-file = /test/mysql/mysqld.pid socket = /test/mysql/mysql.sock server-id = 1sql_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
[root@192 mysql-5.7.20]# chown mysql:mysql /etc/my.cnf
[root@192 mysql-5.7.20]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile [root@192 mysql-5.7.20]# echo 'export PATH' >> /etc/profile [root@192 mysql-5.7.20]# source /etc/profile
[root@192 mysql-5.7.20]# cd /usr/local/mysql/ [root@192 mysql]# bin/mysqld \ > --initialize-insecure \ > --user=mysql \ > --basedir=/usr/local/mysql \ > --datadir=/usr/local/mysql/data
[root@192 mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ [root@192 mysql]# systemctl enable mysqld [root@192 mysql]# systemctl start mysqld [root@192 mysql]# systemctl status mysqld [root@192 mysql]# netstat -anpt | grep 3306
[root@192 mysql]# mysqladmin -u root -p password "abc123" //剛開始沒密碼是空的直接回車
[root@192 mysql]# mysql -u root -p #這個命令敲下,提示要輸入密碼,這個就是剛才設定的密碼abc123
[root@192 ~]# yum -y install \ gd \ libjpeg libjpeg-devel \ libpng libpng-devel \ freetype freetype-devel \ libxml2 libxml2-devel \ zlib zlib-devel \ curl curl-devel \ openssl openssl-devel 安裝GD庫和GD庫關聯程式,用來處理和生成圖片
[root@192 opt]# tar jxvf php-7.1.10.tar.bz2
[root@192 opt]# cd /opt/php-7.1.10/
./configure \ --prefix=/usr/local/php7 \ --with-apxs2=/usr/local/httpd/bin/apxs \ --with-mysql-sock=/usr/local/mysql/mysql.sock \ --with-config-file-path=/usr/local/php7 \ --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 ./configure \ --prefix=/usr/local/php7 \ 指定將 PHP 程式的安裝路徑 --with-apxs2=/usr/local/httpd/bin/apxs \ 指定Apache httpd服務提供的apxs 模組支援程式的檔案位置 --with-mysql-sock=/usr/local/mysql/mysql.sock \ 指定mysql 資料庫連線檔案的儲存路徑 --with-config-file-path=/usr/local/php7 設定 PHP 的配置檔案 php.ini 將要存放的位置 --with-mysqli \ 新增 MySQL 擴充套件支援 #mysqli擴充套件技術不僅可以呼叫MySQL的儲存過程、處理MySQL事務,而且還可以使訪問資料庫工作變得更加穩定 --with-zlib \ 支援zlib功能,提供資料壓縮 --with-curl \ 開啟curl擴充套件功能,實現HTTP的Get下載和Post請求的方法 --with-gd \ 啟用gd 庫的支援 --with-jpeg-dir \ 啟用jpeg 的支援 --with-png-dir \ 啟用png 的支援 --with-freetype-dir \ --with-openssl \ --enable-mbstring \ 啟用多位元組字串功能,以便支援中文等程式碼 --enable-xml \ 開啟擴充套件性標記語言模組 --enable-session \ 會話 --enable-ftp \ 文字傳輸協議 --enable-pdo \ 函式庫 --enable-tokenizer \ 令牌直譯器 --enable-zip ZIP壓縮格式
[root@192 php-7.1.10]# make -j4 && make install
[root@192 php-7.1.10]# cp /opt/php-7.1.10/php.ini-development /usr/local/php7/php.ini #複製模版檔案作為PHP 的主配置檔案,並進行修改 [root@192 php-7.1.10]# vim /usr/local/php7/php.ini mysqli.default_socket = /usr/local/mysql/mysql.sock --1170行--修改 1170 G,大寫的G,直接跳轉 date.timezone = Asia/Shanghai --939行---修改
PHP 的可執行程式檔案放入路徑環境變數的目錄中便於系統識別 ln -s /usr/local/php7/bin/* /usr/local/bin/ php -m 檢視PHP 載入了哪些模組
[root@192 php-7.1.10]# vim /etc/httpd.conf AddType application/x-httpd-php .php --393行--插入以下內容(插在下面,原行不刪) AddType application/x-httpd-php-source .phps ##這裡的點前面空格一定要加,否則報錯 AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps DirectoryIndex index.html index.php --255行--修改首頁檔名設定 LoadModule php7_module modules/libphp7.so ---156行 ---檢查支援php7的模組是否存在(可以用'/'在檔案中查詢 )
[root@192 php-7.1.10]# systemctl restart httpd #重啟服務
[root@192 php-7.1.10]# rm -rf /usr/local/httpd/htdocs/index.html [root@192 php-7.1.10]# vim /usr/local/httpd/htdocs/index.php <?php phpinfo(); ?> [root@192 php-7.1.10]# systemctl restart httpd.service
http://192.168.100.146/index.php
[root@192 php-7.1.10]# mysql -uroot -pabc123 mysql> CREATE DATABASE bbs; //建立一個資料庫// mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123'; //把bbs資料庫裡面所有表的許可權授予給bbsuser,並設定密碼// mysql>flush privileges; //重新整理資料庫//
[root@192 opt]# unzip /opt/Discuz_X3.4_SC_UTF8.zip
[root@192 opt]# cd dir_SC_UTF8/ [root@192 dir_SC_UTF8]# ls readme upload utility [root@192 dir_SC_UTF8]# cp -r upload/ /usr/local/httpd/htdocs/bbs
[root@192 dir_SC_UTF8]# cd /usr/local/httpd/htdocs/bbs [root@192 bbs]# chown -R daemon ./config [root@192 bbs]# chown -R daemon ./data [root@192 bbs]# chown -R daemon ./uc_client [root@192 bbs]# chown -R daemon ./uc_server/data