Linux系統——LAMP架構

目錄

一、LAMP架構組成

1.LAMP定義?

2.各組件的主要作用?

3.CGI和FastCGI

3.1CGI

3.3CGI和FastCGI比較

4.PHP

4.1PHP簡介

4.2PHP的Opcode語言

4.3PHP設置

二、LAMP架構實現

1.編譯安裝Apache httpd服務

2.編譯安裝Mysql

3.編譯安裝PHP

4.安裝論壇

5.搭建博客


Web資源類型

  • 靜態資源:原始形式與響應內容一致,在客戶端瀏覽器執行

  • 動態資源:原始形式通常為程序文件,需要在服務器端執行之后,將執行結果返回給客戶端

注意:靜態和動態的區別,不在于網頁是否能動態變化,而在于服務端的頁面文件和客戶端得到頁面文件是否一致

一、LAMP架構組成

LAMP:

  • L:linux
  • A:apache (httpd)
  • M:mysql, mariadb
  • P:php, perl, python

1.LAMP定義?

LAMP 環境指的是在 Linux 操作系統中分別安裝 Apache 網頁服務器、MySQL 數據庫服務器和 PHP 開發服務器,以及一些對應的擴展軟件。AMP也支持win操作系統 (sccm 域升級版)

LAMP架構是目前成熟的企業網站應用模式之一,指的是協同工作的一整套系統和相關軟件,能夠提供動態web站點服務及其應用開發環境。(前臺)Apache:作為LAMP架構的前端,是一款功能強大,穩定性好的web服務器程序,該服務器直接面向用戶提供網站訪問,發送網頁,圖片等內容。

后臺Mysql:作為LAMP架構的后端,是一款流行的開源關系型數據庫。在企業網站、業務系統應用中,各種賬戶信息、產品信息,客戶資料、業務數據等都可以存儲到mysql數據庫,其他程序可以通過sql語句來查詢,更改這些信息。

(中間連接)PHP/Perl/Python:作為三種開發動態的網頁編程語言,負責解釋動態網頁文件,負責溝通web服務器和數據庫系統已協同工作,并提供web應用程序的開發運行環境。其中PHP是一種廣泛應用的開放源代碼的多用途腳本語言,它可以嵌入到HTML中,尤其適合于web應用開發。

在搭建LAMP時安裝順序一般是linux Apache mysql php 。一般PHP放在最后,負責溝通web服務器和數據庫系統以協同工作。

2.各組件的主要作用?

(平臺)Linux:作為LAMP架構的基礎,提供用于支撐Web站點的操作系統,能夠與其他三個組件提供更好的穩定性,兼容性(AMP組件也支持Windows、UNIX等平臺) 。

(前臺)Apache:作為LAMP架構的前端,是一款功能強大,穩定性好的Web服務器程序,該服務器直接面向用戶提供網站訪問,發送網頁,圖片等文件內容。

(后臺)MySQL:作為LAMP架構的后端,是一款流行的開源關系數據庫系統。在企業網站、業務系統等應用中,各種賬戶信息、產品信息,客戶資料、業務數據等都可以存儲到MySQL數據庫,其他程序可以通過SQL語句來查詢,更改這些信息。

(中間連接)PHP/Perl/Python:作為三種開發動態網頁的編程語言,負責解釋動態網頁文件,負責溝通Web服務器和數據庫系統以協同工作,并提供Web應用程序的開發和運行環境。其中PHP是一種被廣泛應用的開放源代碼的多用途腳本語言,它可以嵌入到HTML中,尤其適合于Web應用開發。

apache主要實現如下功能:

  • 第一:處理http的請求、構建響應報文等自身服務;
  • 第二:配置讓Apache支持PHP程序的響應(通過PHP模塊或FPM);
  • 第三:配置Apache具體處理php程序的方法,如通過反向代理將php程序交給fcgi處理。

mysql 主要實現如下功能:

  • 第一:提供PHP程序對數據的存儲;
  • 第二:提供PHP程序對數據的讀取(通常情況下從性能的角度考慮,盡量實現數據庫的讀寫分離)。

php主要實現如下功能:

  • 第一:提供apache的訪問接口,即CGI或Fast CGI(FPM);
  • 第二:提供PHP程序的解釋器;
  • 第三:提供mysql數據庫的連接函數的基本環境。

3.CGI和FastCGI

3.1CGI

CGI:Common Gateway Interface 公共網關接口

CGI 在2000年或更早的時候用得比較多,以前web服務器一般只處理靜態的請求,如果碰到一個動態請求怎么辦呢?web服務器會根據這次請求的內容,然后會 fork 一個新進程來運行外部的 C 程序或者bash,perl腳本等,這個進程會把處理完的數據返回給web服務器,最后web服務器把內容發送給用戶,剛才fork的進程也隨之退出。 如果下次用戶還請求改動態腳本,那么web服務器又再次fork一個新進程,周而復始的進行。

CGI 可以讓一個客戶端,從網頁瀏覽器通過http服務器向執行在網絡服務器上的程序傳輸數據;CGI描述了客戶端和服務器程序之間傳輸的一種標準

請求流程:

Client -- (http協議) --> httpd -- (cgi協議) --> application server (program file) -- (mysql協議) --> mysql

3.2FastCGI

fastcgi的方式是,web服務器收到一個請求時,不會重新fork一個進程(因為這個進程在web服務器啟動時就開啟了,而且不會退出),web服務器直接把內容傳遞給這個進程(進程間通信,但fastcgi使用了別的方式,tcp方式通信),這個進程收到請求后進行處理,把結果返回給web服務器,最后自己接著等待下一個請求的到來,而不是退出

請求流程:

Client -- (http協議) --> httpd -- (fastcgi協議) --> fastcgi服務器 -- (mysql協議) --> mysql

#httpd 利用CGI運行shell腳本[root@localhost ~]#vim   /var/www/cgi-bin/test.sh
#!/bin/bash
#
cat << EOF
Content-Type: text/html<pre>
My username is: $(id -un)
My id is: $(id -u)
My shell settings are:
$(set)My environment variables are:
$(env)Here is the file in /etc:
$(ls -l /etc/redhat-release )
$( cat /etc/redhat-release )# sleep 1000
</pre>
EOF[root@localhost ~]#chmod +x /var/www/cgi-bin/test.sh
[root@localhost ~]#ll /data/script/cgi.sh

3.3CGI和FastCGI比較

  • CGI: 兼職, 一次性的過河拆橋式的服務
  • FASTCGI: 專職,全周期的持續式的服務

4.PHP

4.1PHP簡介

PHP官網:http://www.php.net/

PHP(Hypertext Preprocessor 超文本預處理器)是通用服務器端腳本編程語言,主要用于web開發實現動態web頁面,也是最早實現將腳本嵌入HTML源碼文檔中的服務器端腳本語言之一。同時,php還提供了一個命令行接口,因此,其也可以在大多數系統上作為一個獨立的shell來使用

Rasmus Lerdorf于1994年開始開發PHP,最初是一組被Rasmus Lerdorf稱作“Personal Home Page Tool” 的Perl腳本, 可以用于顯示作者的簡歷并記錄用戶對其網站的訪問。后來,Rasmus Lerdorf使用C語言將這些Perl腳本重寫為CGI程序,還為其增加了運行Web forms的能力以及與數據庫交互的特性,并將其重命名為“Personal Home Page/Forms Interpreter”或“PHP/FI”。此時,PHP/FI已經可以用于開comp.infosystems.www.authoring.cgi Usenet討論組,從此PHP開始走進人們的視野。1997年,其2.0版本發布

1997年,兩名以色列程序員Zeev Suraski和Andi Gutmans重寫的PHP的分析器(parser)成為PHP發展到3.0的基礎,而且從此將PHP重命名為PHP: Hypertext Preprocessor。此后,這兩名程序員開始重寫整個PHP核心,并于1999年發布了Zend Engine 1.0,這也意味著PHP 4.0的誕生。2004年7月,Zend Engine 2.0發布,由此也將PHP帶入了PHP 5時代。PHP5包含了許多重要的新特性,如增強的面向對象編程的支持、支持PDO(PHP Data Objects)擴展機制以及一系列對PHP性能的改進

Zend Engine是開源的、PHP腳本語言的解釋器,它最早是由以色列理工學院(Technion)的學生Andi Gutmans和Zeev Suraski所開發,Zend也正是此二人名字的合稱。后來兩人聯合創立了Zend Technologies公司

Zend Engine 1.0于1999年隨PHP 4發布,由C語言開發且經過高度優化,并能夠做為PHP的后端模塊使用。Zend Engine為PHP提供了內存和資源管理的功能以及其它的一些標準服務,其高性能、可靠性和可擴展性在促進PHP成為一種流行的語言方面發揮了重要作用

Zend Engine的出現將PHP代碼的處理過程分成了兩個階段:首先是分析PHP代碼并將其轉換為稱作Zend opcode的二進制格式opcode(類似Java的字節碼),并將其存儲于內存中;第二階段是使用Zend Engine去執行這些轉換后的Opcode

4.2PHP的Opcode語言

Opcode是一種PHP腳本編譯后的中間語言,類似于Java的ByteCode,或者.NET的MSL

PHP的語言引擎Zend執行PHP腳本代碼一般會經過如下4個步驟

  • Scanning 詞法分析,將PHP代碼轉換為語言片段(Tokens)
  • Parsing 語義分析,將Tokens轉換成簡單而有意義的表達式
  • Compilation 將表達式編譯成Opcode
  • Execution 順次執行Opcode,每次一條,從而實現PHP腳本的功能

即:掃描-->分析-->編譯-->執行

4.3PHP設置

php 的配置文件:/etc/php.ini, /etc/php.d/*.ini

配置文件在php解釋器啟動時被讀取

對配置文件的修改生效方法

  • Modules:重啟httpd服務
  • FastCGI:重啟php-fpm服務

/etc/php.ini配置文件格式:

[foo]:Section Header
directive = value

注釋符:

  • 以#開頭,純粹的注釋信息
  • 以 ; 開頭,用于注釋可啟用的directive

提示:較新的版本中,已經完全使用 “ ; ” 進行注釋

php.ini配置參考文檔

php.ini的核心配置選項文檔: http://php.net/manual/zh/ini.core.phpphp.ini配置選項列表:http://php.net/manual/zh/ini.list.php
expose_php = On
#響應報文顯示首部字段x-poered-by:PHP/x.y.z,暴露php版本,建議為offmax_execution_time = 30
#最長執行時間為30smemory_limit=128M
#可調大display_errors=off
#調試使用,不要打開,否則可能暴露重要信息display_startup_errors=off
#建議關閉post_max_size=8M
#最大上傳數據大小,可能調大,比下面的項大upload_max_filesize=2M
#最大上傳文件,可能調大max_file_uploads = 20
#同時上傳最多文件數date.timezone = Asia/Shanghai
#指定時區short_open_tag=on
#開啟短標簽,如:<? phpinfo();?>

二、LAMP架構實現

1.編譯安裝Apache httpd服務

[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0
setenforce: SELinux is disabled#安裝環境依賴包
[root@localhost ~]#yum -y install gcc gcc-c++ make pcre-devel expat-devel perl pcre
gcc \                #c語言編譯器
gcc-c++ \            #c編譯器
make \               #源代碼編譯器
pcre\                #pcre函數庫
pcre-devel \         #pcre接口開發包
expat-devel \        #用于支持網站解析HTML、XML文件
perl                 #perl 語言編譯器
#配置本地yum倉庫[root@localhost ~]#cd /etc/yum.repos.d/
[root@localhost yum.repos.d]#ls
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-CR.repo         CentOS-Media.repo      epel.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo    epel-testing.repo
[root@localhost yum.repos.d]#mkdir repos.bak
[root@localhost yum.repos.d]#mv *.repo repos.bak/
[root@localhost yum.repos.d]#ls
repos.bak
[root@localhost yum.repos.d]#cd repos.bak/
[root@localhost repos.bak]#ls
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-CR.repo         CentOS-Media.repo      epel.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo    epel-testing.repo
[root@localhost repos.bak]#cd -
/etc/yum.repos.d
[root@localhost yum.repos.d]#vim local.repo[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0[root@localhost yum.repos.d]#yum clean all
[root@localhost yum.repos.d]#yum makecache

事先準備apr-1.6.2.tar.gz ?apr-util-1.6.0.tar.gz ?httpd-2.4.29.tar.bz2三個壓縮包?

[root@localhost yum.repos.d]#cd /opt
[root@localhost opt]#rz -E
rz waiting to receive.
[root@localhost opt]#ls
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2
[root@localhost opt]#tar xf httpd-2.4.29.tar.bz2 
[root@localhost opt]#tar xf apr-1.6.2.tar.gz 
[root@localhost opt]#tar xf apr-util-1.6.0.tar.gz 
[root@localhost opt]#ls
apr-1.6.2         apr-util-1.6.0         httpd-2.4.29
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2#apr組件包用于支持Apache上層應用跨平臺,提供底層接口庫,能有效的降低并發連接數、降低進程和減少訪問堵塞。
[root@localhost opt]#mv apr-1.6.2 /opt/httpd-2.4.29/srclib/apr
[root@localhost opt]#mv apr-util-1.6.0 /opt/httpd-2.4.29/srclib/apr-util
[root@localhost opt]#ls
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29  httpd-2.4.29.tar.bz2
[root@localhost opt]#cd httpd-2.4.29/
[root@localhost httpd-2.4.29]#./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi--prefix=/usr/local/httpd \       #指定httpd的安裝目錄
--enable-so \                     #啟用動態加載模塊支持,使httpd具備進一步擴展功能的能力
--enable-rewrite \             #啟用網頁地址的重寫功能,用于網站優化、防盜鏈及目錄遷移維護   
--enable-charset-lite \     #啟用字符集支持,以便支持使用各種字符集編碼的頁面
--enable-cgi      #啟用CGI(通用網關接口)腳本程序支持,便于網站外部擴展應用訪問的能力[root@localhost httpd-2.4.29]#make
[root@localhost httpd-2.4.29]#make install#優化配置文件路徑,并把httpd服務的可執行程序文件放入路徑環境變量的目錄中便于系統識別
[root@localhost httpd-2.4.29]#ln -s /usr/local/httpd/conf/httpd.conf /etc/
#建立配置文件軟連接放入etc目錄下
[root@localhost httpd-2.4.29]#ln -s /usr/local/httpd/bin/* /usr/local/bin/
#將啟動文件放入/usr/local/bin/目錄下可以直接使用
[root@localhost httpd-2.4.29]#cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@localhost httpd-2.4.29]#chmod +x /etc/init.d/httpd
[root@localhost httpd-2.4.29]#ll /etc/init.d/httpd 
-rwxr-xr-x 1 root root 3431 2月  28 14:42 /etc/init.d/httpd
[root@localhost httpd-2.4.29]#vim /etc/init.d/httpd[root@localhost httpd-2.4.29]#chkconfig --add httpd
#將httpd加入service管理器

[root@localhost httpd-2.4.29]#vim /usr/local/httpd/conf/httpd.conf

[root@localhost httpd-2.4.29]#vim /etc/hosts

[root@localhost httpd-2.4.29]#service httpd start
#啟動服務注意使用了service啟動不要使用systemctl關閉,兩種無法混用
[root@localhost httpd-2.4.29]#netstat -natp|grep 80
tcp        0      0 192.168.241.11:80       0.0.0.0:*               LISTEN      34886/httpd 
[root@localhost httpd-2.4.29]#cat /usr/local/httpd/htdocs/index.html 
<html><body><h1>It works!</h1></body></html>

方法2添加httpd服務[root@localhost mysql-5.6.26]#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}
[Install]
WantedBy=multi-user.target
[root@localhost system]# systemctl start httpd.service 
Warning: httpd.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
[root@localhost system]# systemctl daemon-reload
[root@localhost system]# systemctl start httpd.service 
[root@localhost system]# netstat -ntap |grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      121165/httpd      

2.編譯安裝Mysql

需要事先準備好mysql-boost-5.7.20.tar.gz? boost_1_59_0.tar.gz ? ?mysql-5.7.17.tar.gz三個壓縮包

[root@localhost httpd-2.4.29]#cd /opt
[root@localhost opt]#ls
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29  httpd-2.4.29.tar.bz2
[root@localhost opt]#rz -E
rz waiting to receive.
[root@localhost opt]#ls
apr-1.6.2.tar.gz       httpd-2.4.29          mysql-boost-5.7.20.tar.gz
apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2
boost_1_59_0.tar.gz    mysql-5.7.17.tar.gz
#安裝依賴包[root@localhost opt]#yum install -y ncurses-devel autoconf cmake
ncurses \              #字符終端下圖形互動功能的動態庫
ncurses-devel \        #ncurses開發包
bison \                #語法分析器
cmake                  #mysql需要用到的cmake編譯安裝包
[root@localhost opt]#useradd -s /sbin/nologin  mysql
[root@localhost opt]#tar xf mysql-boost-5.7.20.tar.gz 
[root@localhost opt]#cd mysql-5.7.20/
[root@localhost 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                        是否啟用性能分析功能[root@localhost mysql-5.7.20]#make -j2
[root@localhost mysql-5.7.20]#make install
[root@localhost mysql-5.7.20]#chown -R mysql:mysql /usr/local/mysql/
#數據庫目錄進行權限調整[root@localhost mysql-5.7.20]#vim /etc/my.cnf[client]
#客戶端設置
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock#服務全局設置
[mysqld]
user = mysql
#設置管理用戶
basedir = /usr/local/mysql
#指定數據庫的安裝目錄
datadir = /usr/local/mysql/data
#指定數據庫文件的存儲路徑
port = 3306
#指定端口
character_set_server=utf8
#設置服務器字符集編碼格式為utf8
pid-file = /usr/local/mysql/mysqld.pid
#指定pid 進程文件路徑
socket = /usr/local/mysql/mysql.sock
#指定數據庫連接文件
bind-address = 0.0.0.0
#設置監聽地址,0.0.0.0代表允許所有,如允許多個IP需空格隔開
skip-name-resolve
#禁用DNS解析
max_connections=2048
#設置mysql的最大連接數
default-storage-engine=INNODB
#指定默認存儲引擎
max_allowed_packet=16M
#設置數據庫接收的數據包大小的最大值
server-id = 1
#指定服務ID號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#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后,不能用雙引號來引用字符串,因為它被解釋為識別符[root@localhost mysql-5.7.20]#chown mysql:mysql /etc/my.cnf
[root@localhost mysql-5.7.20]#chown -R mysql:mysql /usr/local/mysql/
#更改mysql安裝目錄和配置文件的屬主屬組#設置環境變量
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@localhost mysql-5.7.20]#source /etc/profile
[root@localhost mysql-5.7.20]#echo $PATH
/usr/local/mysql/bin:/usr/local/mysql/lib:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin#初始化數據庫
[root@localhost mysql-5.7.20]#cd /usr/local/mysql/bin/
[root@localhost bin]#./mysqld \
> --initialize-insecure \
#生成初始化密碼為空
> --user=mysql \
#指定管理用戶
> --basedir=/usr/local/mysql \
#指定數據庫的安裝目錄
> --datadir=/usr/local/mysql/data
#指定數據庫文件的存儲路徑[root@localhost bin]#cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
#添加mysqld系統服務
[root@localhost bin]#systemctl enable mysqld
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
[root@localhost bin]#systemctl start mysqld
[root@localhost bin]#systemctl status mysqld
● mysqld.service - MySQL ServerLoaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)Active: active (running) since 三 2024-02-28 16:25:25 CST; 4s agoDocs: man:mysqld(8)http://dev.mysql.com/doc/refman/en/using-systemd.htmlProcess: 57789 ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)Process: 57768 ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)Main PID: 57792 (mysqld)CGroup: /system.slice/mysqld.service└─57792 /usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/...2月 28 16:25:25 localhost.localdomain mysqld[57789]: 2024-02-28T08:25:25.5...
2月 28 16:25:25 localhost.localdomain mysqld[57789]: 2024-02-28T08:25:25.5...
2月 28 16:25:25 localhost.localdomain mysqld[57789]: 2024-02-28T08:25:25.5...
2月 28 16:25:25 localhost.localdomain mysqld[57789]: 2024-02-28T08:25:25.5...
2月 28 16:25:25 localhost.localdomain mysqld[57789]: 2024-02-28T08:25:25.5...
2月 28 16:25:25 localhost.localdomain mysqld[57789]: 2024-02-28T08:25:25.5...
2月 28 16:25:25 localhost.localdomain mysqld[57789]: Version: '5.7.20'  so...
2月 28 16:25:25 localhost.localdomain mysqld[57789]: 2024-02-28T08:25:25.5...
2月 28 16:25:25 localhost.localdomain mysqld[57789]: 2024-02-28T08:25:25.5...
2月 28 16:25:25 localhost.localdomain systemd[1]: Started MySQL Server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost bin]#netstat -anpt | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      57792/mysqld
[root@localhost bin]#mysqladmin -u root -p password "abc123"
#給root賬號設置密碼為abc123,提示輸入的是原始密碼(為空)
Enter password: 
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[root@localhost bin]#mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.20 Source distributionCopyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> 
mysql> 
mysql> ^DBye

3.編譯安裝PHP

事先要準備好 Discuz_X3.4_SC_UTF8.zip? php-7.1.10.tar.bz2兩個壓縮包

[root@localhost bin]#cd /opt
[root@localhost opt]#ls
apr-1.6.2.tar.gz       cmake                 mysql-5.7.20
apr-util-1.6.0.tar.gz  httpd-2.4.29          mysql-boost-5.7.20.tar.gz
bison                  httpd-2.4.29.tar.bz2  ncurses
boost_1_59_0.tar.gz    mysql-5.7.17.tar.gz   ncurses-devel
[root@localhost opt]#rz -E
rz waiting to receive.
[root@localhost opt]#ls
apr-1.6.2.tar.gz       Discuz_X3.4_SC_UTF8.zip  mysql-boost-5.7.20.tar.gz
apr-util-1.6.0.tar.gz  httpd-2.4.29             ncurses
bison                  httpd-2.4.29.tar.bz2     ncurses-devel
boost_1_59_0.tar.gz    mysql-5.7.17.tar.gz      php-7.1.10.tar.bz2
cmake                  mysql-5.7.20#安裝依賴環境 依賴包 安裝GD庫和GD庫關聯程序,用來處理和生成圖片
[root@localhost opt]#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#編譯安裝
[root@localhost opt]#tar xf php-7.1.10.tar.bz2 
[root@localhost opt]#cd php-7.1.10/
[root@localhost php-7.1.10]#./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@localhost php-7.1.10]#make -j2
[root@localhost php-7.1.10]#make install#復制模版文件作為PHP 的主配置文件,并進行修改
[root@localhost php-7.1.10]#cp /opt/php-7.1.10/php.ini-development /usr/local/php7/php.ini
#在測試環境時使用php.ini-development文件,而在生產環境時使用php.ini-production文件[root@localhost php-7.1.10]#vim /usr/local/php7/php.ini

[root@localhost php-7.1.10]#ln -s /usr/local/php7/bin/* /usr/local/bin/
[root@localhost php-7.1.10]#vim /etc/httpd.conf

這里的點前面空格一定要加,否則報錯

[root@localhost php-7.1.10]#vim /usr/local/httpd/htdocs/index.php<?php
phpinfo();
?>[root@localhost php-7.1.10]#service httpd start

測試php?

4.安裝論壇

[root@localhost php-7.1.10]#mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.7.20 Source distributionCopyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> CREATE DATABASE bbs;
#創建一個數據庫
Query OK, 1 row affected (0.01 sec)mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
#把bbs數據庫里面所有表的權限授予給bbsuser,并設置密碼
Query OK, 0 rows affected, 1 warning (0.01 sec)mysql> flush privileges;
#刷新數據庫
Query OK, 0 rows affected (0.00 sec)mysql> ^DBye
#Ctrl D 退出
[root@localhost php-7.1.10]#cd /opt
[root@localhost opt]#ls
apr-1.6.2.tar.gz       Discuz_X3.4_SC_UTF8.zip  mysql-boost-5.7.20.tar.gz
apr-util-1.6.0.tar.gz  httpd-2.4.29             ncurses
bison                  httpd-2.4.29.tar.bz2     ncurses-devel
boost_1_59_0.tar.gz    mysql-5.7.17.tar.gz      php-7.1.10
cmake                  mysql-5.7.20             php-7.1.10.tar.bz2
[root@localhost opt]#unzip Discuz_X3.4_SC_UTF8.zip
#解壓論壇壓縮包
[root@localhost opt]#cd dir_SC_UTF8/
[root@localhost dir_SC_UTF8]#cp -r upload/ /usr/local/httpd/htdocs/bbs
#上傳站點更新包
[root@localhost dir_SC_UTF8]#cd /usr/local/httpd/htdocs/bbs
[root@localhost bbs]#chown -R daemon ./config
[root@localhost bbs]#chown -R daemon ./data
[root@localhost bbs]#chown -R daemon ./uc_client
[root@localhost bbs]#chown -R daemon ./uc_server/data
#更改論壇目錄的屬主
[root@localhost bbs]#chmod -R 777 ./config/
[root@localhost bbs]#chmod -R 777 ./data/
[root@localhost bbs]#chmod -R 777 ./uc_client/
[root@localhost bbs]#chmod -R 777 ./uc_server/

登錄管理員?

5.搭建博客

[root@localhost bbs]#cd /opt
[root@localhost opt]#ls
apr-1.6.2.tar.gz       Discuz_X3.4_SC_UTF8.zip    ncurses
apr-util-1.6.0.tar.gz  httpd-2.4.29               ncurses-devel
bison                  httpd-2.4.29.tar.bz2       php-7.1.10
boost_1_59_0.tar.gz    mysql-5.7.17.tar.gz        php-7.1.10.tar.bz2
cmake                  mysql-5.7.20               說明.htm
dir_SC_UTF8            mysql-boost-5.7.20.tar.gz
[root@localhost opt]#rz -E
rz waiting to receive.
[root@localhost opt]#ls
apr-1.6.2.tar.gz       Discuz_X3.4_SC_UTF8.zip    ncurses
apr-util-1.6.0.tar.gz  httpd-2.4.29               ncurses-devel
bison                  httpd-2.4.29.tar.bz2       php-7.1.10
boost_1_59_0.tar.gz    mysql-5.7.17.tar.gz        php-7.1.10.tar.bz2
cmake                  mysql-5.7.20               wordpress-6.1.1-zh_CN.zip
dir_SC_UTF8            mysql-boost-5.7.20.tar.gz  說明.htm
[root@localhost opt]#unzip wordpress-6.1.1-zh_CN.zip 
[root@localhost opt]#cp -r wordpress/ /usr/local/httpd/htdocs/
[root@localhost opt]#cd /usr/local/httpd/htdocs/
[root@localhost htdocs]#ls
bbs  index.html  index.php  wordpress
[root@localhost htdocs]#chmod -R 777 wordpress/
[root@localhost htdocs]#mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 55
Server version: 5.7.20 Source distributionCopyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> create database blog;
Query OK, 1 row affected (0.00 sec)mysql> GRANT all ON blog.* To 'bloguser'@'%' IDENTIFIED BY 'admin123'-> -> -> -> -> ;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> GRANT all ON blog.* To 'bloguser'@'localhost' IDENTIFIED BY 'admin123'; 
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)mysql> ^DBye

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/711785.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711785.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711785.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux編程 2.4 文件和目錄-Linux文件系統結構

1、文件操作基本元素 文件操作相關的最基本元素是&#xff1a;目錄結構、索引節點和文件的數據本身。 目錄結構&#xff08;目錄項&#xff09;索引節點&#xff08;i節點&#xff09;文件的數據 2、文件系統的三個區域 屬性&#xff1a; 超級塊&#xff1a;存放文件系統本身…

vs code快捷鍵

ShiftCtrlO vs code 提供很強大的功能&#xff0c;就是可以快速查文件中的符號列表和函數列表&#xff0c;我們首先打開一個源碼文件&#xff0c;比tcp.c&#xff0c;然后我們通過快捷鍵“ShiftCtrlO”即可打開對應源碼文件的符號列表和函數列表&#xff0c;通過查看這些列表&a…

【學習心得】Python調用JS的三種常用方法

在做JS逆向的時候&#xff0c;一種情況是直接用Python代碼復現JS代碼的功能&#xff0c;達成目的。但很多時候這種方法有明顯的缺點&#xff0c;那就是一旦JS代碼邏輯發生了更改&#xff0c;你就得重寫Python的代碼邏輯非常不便。于是第二種情況就出現了&#xff0c;我直接得到…

python自動化管理和zabbix監控網絡設備(防火墻和python自動化配置部分)

目錄 前言 一、ssh配置 1.FW1 2.core-sw1 3.core-sw2 二、python自動化配置防火墻 三、驗證DNAT 四、驗證DNAT 前言 視頻演示請訪問b站主頁 白帽小丑的個人空間-白帽小丑個人主頁-嗶哩嗶哩視頻 一、ssh配置 給需要自動化管理的設備配置ssh服務端用戶名和密碼 1.FW1 …

純css實現-讓字符串在文字少時顯示為居中對齊,而在文字多時顯示為左對齊

純css實現-讓字符串在文字少時顯示為居中對齊&#xff0c;而在文字多時顯示為左對齊 使用flex實現 思路 容器樣式&#xff08;.container&#xff09;: Flex容器的BFC性質使得其內部的子元素&#xff08;.text-box&#xff09;在水平方向上能夠居中&#xff0c;通過justify-c…

生態環境數據分析新篇章:Meta分析、R語言、Matlab、貝葉斯、結構方程模型等的前沿實踐

目錄 ①Meta分析在生態環境領域里的應用 ②R語言在生態環境領域中的應用 ③MATLAB在生態環境數據處理與分析中的應用 ④基于R語言piecewiseSEM結構方程模型在生態環境應用 ⑤R語言貝葉斯方法在生態環境領域中的高階技術應用 更多應用 為了Meta分析問題的設計、基礎理論、…

【菜鳥入門!】Matlab零基礎快速入門教程

數學建模競賽中&#xff0c;編程軟件是必不可缺少的&#xff0c;比如大家都熟知的MATLAB多數同學們都會經常用到&#xff0c;今天給大家介紹一些MATLAB的基本元素&#xff0c;希望幫助大家更好的掌握編寫基本的函數&#xff01; 變量和數組 MATLAB 程序的基本數據單元是數組。一…

rm刪除未釋放空間,linux sync有時不起作用

此時需要重啟系統即可. Linux中的sync命令用于將文件系統的緩沖區數據立即寫入磁盤&#xff0c;以確保數據的持久性。123456 sync命令沒有任何選項&#xff0c;簡單執行即可。它會將文件系統緩沖區中的數據寫入磁盤&#xff0c;并更新文件系統的超級塊及其他元數據。使用sync命…

Vue.js的雙向綁定原理

Vue的雙向綁定 vue雙向綁定是其最重要的核心亮點&#xff0c;其原理也很簡單&#xff0c;這里做個簡單總結 vue2的雙向綁定是利用的Object.definePropertyvue3的雙向綁定是利用的 ES6Porxy中的defineProperty(target, propKey, propDesc 其作用類似于Object.defineProperty …

您想要擁有 Apple Vision Pro 的原因

自從2024年2月2日Apple Vision Pro發布以來&#xff0c;網上已經有很多關于如何使用這款蘋果最新設備的示例。該平臺引入的空間計算新世界能夠完成許多在其他設備上無法完成的事情。Reddit 上的這個人能夠以 51202160 的分辨率從他的 PC 上串流游戲&#xff01;在本文中&#x…

SpringMVC01、回顧MVC

1、回顧MVC 1.1、什么是MVC MVC是模型(Model)、視圖(View)、控制器(Controller)的簡寫&#xff0c;是一種軟件設計規范。是將業務邏輯、數據、顯示分離的方法來組織代碼。MVC主要作用是降低了視圖與業務邏輯間的雙向偶合。MVC不是一種設計模式&#xff0c;MVC是一種架構模式。…

Docker部署前后端服務示例

使用Docker部署js前端 1.創建Dockerfile 在項目跟目錄下創建Dockerfile文件&#xff1a; # 使用nginx作為基礎鏡像 FROM nginx:1.19.1# 指定工作空間 WORKDIR /data/web# 將 yarn build 打包后的build文件夾添加到工作空間 ADD build build# 將項目必要文件添加到工作空間&a…

數據結構—>帶你深入了解單鏈表(基礎篇)

?作者簡介&#xff1a;大家好&#xff0c;我是橘橙黃又青&#xff0c;一個想要與大家共同進步的男人&#x1f609;&#x1f609; &#x1f34e;個人主頁&#xff1a;橘橙黃又青-CSDN博客 前面我們學習了順序表&#xff0c;今天我們來學習與順序表類似的單鏈表 1.&#x1f3…

鴻蒙Harmony應用開發—ArkTS聲明式開發(通用屬性:透明度設置)

設置組件的透明度。 說明&#xff1a; 從API Version 7開始支持。后續版本如有新增內容&#xff0c;則采用上角標單獨標記該內容的起始版本。 opacity opacity(value: number | Resource) 設置組件的不透明度。 卡片能力&#xff1a; 從API version 9開始&#xff0c;該接口…

香橙派AIpro快速上手指南

1 前言 作為業界首款基于昇騰深度研發的AI開發板&#xff0c;Orange Pi AIpro無論在外觀上、性能上還是技術服務支持上都非常優秀&#xff0c;其8/20TOPS澎湃算力是目前開發板市場中所具備的最大算力&#xff0c;能覆蓋生態開發板者的主流應用場景&#xff0c;讓用戶實踐各種創…

深入理解Redis中的漸進式Rehash技術

1. 引言 Redis是一款高性能的鍵值存儲系統,被廣泛應用于緩存、隊列、計數器等場景,因其快速、穩定的特性備受開發者青睞。在Redis的背后,有著許多復雜的數據結構和算法支撐著其高效運行,而其中之一就是Rehash操作。 Rehash是Redis中的一個關鍵操作,負責在數據量增加時對…

Web自動化測試平臺開發---Automated_platform

一、項目簡介 歷時一個假期&#xff0c;Automated_platform 第一版完工&#xff0c;是一款基于po模式的自動化測試平臺,采用后端技術為DjangoceleryRabbitMQmysql 配置mysql數據庫&#xff0c;進行數據遷移后&#xff0c;運行項目后&#xff0c;即可成功訪問http://127.0.0.1:8…

5. 升級 Spring Boot(Upgrading Spring Boot)

5. 升級 Spring Boot&#xff08;Upgrading Spring Boot&#xff09; 項目 wiki 提供如何從 Spring Boot 早期版本升級的說明。請按照 release notes 部分查找要升級到的版本。 升級說明總是版本說明的第一部分。如果您的版本落后一個以上&#xff0c;請確保您已經查看了所跳…

【軟考】數據結構之隊列和棧

目錄 1.例題一1.1題目1.2 題目截圖1.3 題目分析 1.例題一 1.1題目 輸出受限的雙端隊列是指元素可以從隊列的兩端輸入&#xff0c;但只能從隊列的一端輸出&#xff0c;如下圖所示&#xff0c;若有e1&#xff0c;e2&#xff0c;e3&#xff0c;e4依次進入輸出受限的雙端隊列&…

Nginx-location匹配規則

每次配置Nginx的時候&#xff0c;不是多個這匹配不上就是那匹配不上&#xff0c;多個斜線少個斜線的&#xff0c;然后頭疼&#xff0c;尤其多層代理之后&#xff0c;真是瘋狂掉頭發 #mermaid-svg-Z1ScpZFefeixtnn3 {font-family:"trebuchet ms",verdana,arial,sans-s…