目錄
nginx
安裝nginx服務(wù)器依賴環(huán)境
源碼安裝和yum安裝的區(qū)別
源碼安裝
源碼安裝三步走:
php
下載
安裝所有擴(kuò)展:(php運(yùn)行所需要的環(huán)境)
編輯/etc/php.ini
開啟php-fpm
在html下創(chuàng)建index.php,看一下是否可以網(wǎng)頁中訪問得到它
編輯nginx配置文件
重啟服務(wù)
mysql
安裝mysql
mysql的使用
用nginx服務(wù)器連接mysql數(shù)據(jù)庫
報(bào)錯(cuò)情況
CMS
中間件
web服務(wù)器:nginx(前端網(wǎng)頁)+php
數(shù)據(jù)庫服務(wù)器:mysql
思路:
??????? 先安裝中間件nginx,nginx要采用源碼安裝。安裝按之后啟動(dòng),可以訪問到一個(gè)靜態(tài)初始頁面;然后安裝php(超文本預(yù)處理器,是在服務(wù)器端執(zhí)行的腳本語言,尤其適用于Web開發(fā)并可嵌入HTML中),他的源碼要用rpm安裝,執(zhí)行環(huán)境用yum;最后安裝mysql數(shù)據(jù)庫。全部完成后就可以進(jìn)行連接了。
?
nginx
安裝nginx服務(wù)器依賴環(huán)境
yum -y install? gcc-c++? pcre-devel? zlib-devel
安裝完之后,可以看到下面有六個(gè)包,其中devel是開發(fā)包(看到讓我們選擇那種安裝包的話,一般都選devel)
源碼安裝和yum安裝的區(qū)別
①yum安裝相當(dāng)與于一鍵安裝,自動(dòng)幫你解析安裝,解決一切問題
②源碼安裝相當(dāng)于手動(dòng)安裝,路勁什么的都需要自己下載
③源碼安裝沒有寫入系統(tǒng),啟動(dòng)的時(shí)候不能用systemctl來執(zhí)行
源碼安裝
wget https://nginx.org/download/nginx-1.22.1.tar.gz #獲取源碼
#wget是獲取網(wǎng)上的安裝包
tar -zxvf nginx-1.22.1.tar.gz #解壓安裝包
#-z是對應(yīng)后面的.gz。如果只是單純的tar,就不用z
獲取解壓完源碼之后就可以看到在家目錄下面出現(xiàn)了這兩文件
源碼安裝三步走:
知識點(diǎn):
源碼的安裝一般由3個(gè)步驟組成:配置(configure)、編譯(make)、安裝(make install)。
Configure是一個(gè)可執(zhí)行腳本,它有很多選項(xiàng),在待安裝的源碼路徑下使用命令./configure –help輸出詳細(xì)的選項(xiàng)列表。其中--prefix選項(xiàng)是配置安裝的路徑。
如果不配置 --prefix 選項(xiàng),安裝后:
可執(zhí)行文件默認(rèn)放在/usr /local/bin,
庫文件默認(rèn)放在/usr/local/lib,
配置文件默認(rèn)放在/usr/local/etc,
其它的資源文件放在/usr /local/share,
進(jìn)入到nginx目錄中可以看到下面存在一個(gè)配置文件和一個(gè)可執(zhí)行文件。其中,conf是配置文件,configure是可執(zhí)行文件(用來進(jìn)一步生成可編譯執(zhí)行文件(makefile))
?第一步:指定編譯安裝目錄
./configure --prefix=/usr/local/nginx #指定安裝目錄為/usr/local/nginx
#默認(rèn)情況下不指定安裝路徑的話是默認(rèn)安裝在/usr/local下
執(zhí)行完configure,在我們指定路徑下進(jìn)行查看,并沒有看到生成的文件夾,因?yàn)檫@個(gè)時(shí)候只是生成可編譯文件(makefile)而已,并沒有開始進(jìn)行編譯
可以看到nginx目錄下生成了一個(gè)makefile
&&/;連續(xù)執(zhí)行的區(qū)別
&&:先成功執(zhí)行前面的語句,再執(zhí)行后續(xù)語句
;:不管前面的語句是否執(zhí)行成功都執(zhí)行后面的語句
第二步:編譯與安裝
make&&make install #進(jìn)行編譯并且生成編譯文件
#前面的make就是自動(dòng)對c語言文件進(jìn)行編譯,后面是生成編譯文件
?要注意進(jìn)行編譯的路徑
編譯完成后,在/usr/local中進(jìn)行查看,可以看到多了一個(gè)nginx文件夾
?對nginx文件夾進(jìn)行查看,可以下面還有四個(gè)文件
conf:nginx的配置文件(如果用yum安裝的話就是在/etc/conf目錄下)
html:默認(rèn)是nginx的網(wǎng)站根目錄(要看配置文件的內(nèi)容,可在配置文件中進(jìn)行更改)
logs:日志文件
sbin:下面存放著可執(zhí)行命令字nginx(本應(yīng)該放在/目錄下面的sbin文件夾,但是他是使用源碼安裝的,所以sbin放在我們指定的目錄下)
nginx的主配置文件
路徑:/usr/local/nginx/conf/nginx.conf
#pid logs/nginx.pid; #這個(gè)是詢問是否開啟nginx的pid,如果報(bào)錯(cuò)的話再進(jìn)行開啟
#配置文件分為兩部分,一部分是http,一部分是https
#http
http {
include mime.types; #文件拓展名與文件類型映射表
default_type application/octet-stream; #默認(rèn)文件下載類型
sendfile on; #支持文件發(fā)送下載
keepalive_timeout 65; #連接保持超時(shí)時(shí)間
server {
listen 80; #對應(yīng)http使用的80端口
server_name localhost; #網(wǎng)站的名稱
location / {
root html; #網(wǎng)站的根目錄,對應(yīng)前面看到的文件夾
index index.html index.htm; #網(wǎng)站主頁
}
???? ?? 另外的編譯生成文件方法(不建議)
?????????如果不用make進(jìn)行編譯安裝的話,我們需要在/root/nginx-1.22.1/src/core 下對他的所有c語言帶啊嗎進(jìn)行一行一行的安裝,很麻煩
第三步:執(zhí)行開啟nginx
這時(shí)候執(zhí)行nginx指令,用tab鍵發(fā)現(xiàn)不能補(bǔ)齊,說明這個(gè)指令不能被系統(tǒng)所獲取。(按理說ngxin是sbin下面的可執(zhí)行命令字,是可以執(zhí)行的。但是采用的是源碼安裝,這個(gè)命令字并沒有存放在根目錄下的sbin中,所以要讓系統(tǒng)進(jìn)行獲取這個(gè)指令)
配置環(huán)境變量
路徑:/etc/profile
?
export NGINX_PATH=/usr/local/nginx/sbin
export PATH=$PATH:$NGINX_PATH
重新加載環(huán)境變量文件:source /etc/profile
nginx
????????-v??????????????? 查看版本
????????-s stop??????? 強(qiáng)制退出
????????-s quit???????? 正常退出 ??????
????????-s reload???? 重新加載 ?
????????-s reopen??? 重新打開
兩種啟動(dòng)nginx方式:
??????? ①直接到sbin目錄下對nginx進(jìn)行啟動(dòng)
??????? ②nginx -c /usr/local/nginx/conf/nginx.conf
?????????? //指定主配置文件并開啟服務(wù)(標(biāo)準(zhǔn)啟動(dòng)方式)
在網(wǎng)頁上跟上服務(wù)器的ip地址就可以訪問的到這個(gè)基礎(chǔ)網(wǎng)頁
?
可能出現(xiàn)的問題
1.啟動(dòng)完之后就可以進(jìn)行網(wǎng)頁的訪問。再訪問的時(shí)候出現(xiàn)訪問不到的情況,就是防火墻和selinx沒關(guān)掉,應(yīng)影響到網(wǎng)頁的訪問
2.如果是搭建在云服務(wù)器上面的話,就要在安全組中打開對應(yīng)的端口
php
PHP-fpm //主機(jī)成管理器,在5.多版本就融入到php中間
下載 ?
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
#獲取安裝包
yum -y install epel-release-latest-7.noarch.rpm
#安裝源
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
#下載他的源碼
安裝所有擴(kuò)展:(php運(yùn)行所需要的環(huán)境)
yum -y install php72w-cli php72w-common php72w-devel php-mysqli php72w-fpm php72w php72w-cli php72w-fpm php72w-curl php72w-gd php72w-mysql php72w-xml php72w-mbstring
# php72w-cli: 這是用于PHP 7.2版本的命令行接口(CLI),它允許你在命令行中運(yùn)行PHP腳本和命令。
# php72w-common: 這個(gè)軟件包包含了PHP 7.2版本的共享文件和共享庫,它提供了PHP運(yùn)行所需的一些基本組件。
# php72w-devel: 這個(gè)軟件包包含了PHP 7.2版本的開發(fā)所需的頭文件和靜態(tài)庫,它用于編譯和構(gòu)建PHP擴(kuò)展或自定義PHP模塊。
# php-mysqli: 這是一個(gè)提供PHP與MySQL數(shù)據(jù)庫連接功能的擴(kuò)展,它使用MySQLi(MySQL Improved)API,支持更多的功能和特性,包括面向?qū)ο蟮慕涌?、預(yù)處理語句、事務(wù)處理等。
# php72w-fpm: 這是用于PHP 7.2版本的FastCGI進(jìn)程管理器(FPM),它提供了一種高性能的方式來處理PHP請求,并與Web服務(wù)器(如Nginx或Apache)配合使用。
# php72w-curl: 這個(gè)軟件包包含了PHP 7.2版本的CURL擴(kuò)展,它允許PHP與URL進(jìn)行交互,支持HTTP、HTTPS、FTP等協(xié)議,用于發(fā)送和接收數(shù)據(jù)。
# php72w-gd: 這個(gè)軟件包包含了PHP 7.2版本的GD圖像處理庫的擴(kuò)展,它提供了一組函數(shù)來創(chuàng)建、操作和處理圖像,包括縮放、裁剪、添加水印等功能。
# php72w-mysql: 這是一個(gè)提供PHP與MySQL數(shù)據(jù)庫連接功能的擴(kuò)展,它使用原始的mysql函數(shù)庫進(jìn)行連接和操作。它在舊版本的PHP中很常見,但在較新的PHP版本中已被棄用,推薦使用MySQLi或PDO擴(kuò)展。
# php72w-xml: 這個(gè)軟件包包含了PHP 7.2版本的XML擴(kuò)展,它提供了一組函數(shù)來處理XML數(shù)據(jù),包括解析XML、創(chuàng)建XML、操作XML節(jié)點(diǎn)等。
# php72w-mbstring: 這個(gè)軟件包包含了PHP 7.2版本的多字節(jié)字符串處理擴(kuò)展,它提供了一組函數(shù)來處理多字節(jié)字符集,包括字符串截取、編碼轉(zhuǎn)換、字符長度計(jì)算等。
#PHP72w-mysql和php-mysql區(qū)別
#前者是CentOS/RHEL系列的軟件包,后者是Debian/Ubuntu的軟件包
#php72w-mysql和php72w-mysqli區(qū)別
#mysql是舊版,mysqli是新版本,是mysql的更新版,功能更加齊全
編輯/etc/php.ini
short_open_tag = On #若不開啟,則無法識別php函數(shù)
開啟php-fpm
systemctl start php-fpm
在html下創(chuàng)建index.php,看一下是否可以網(wǎng)頁中訪問得到它
<?php
phpinfo()
?>
這時(shí)候發(fā)現(xiàn)網(wǎng)頁加載不出來
編輯nginx配置文件
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
#如果不能索引到就加上他的路徑
include fastcgi_params;
}
#在nginx配置文件中把php的#都取消掉,這是為了讓ngxin可以使用php語言
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
重啟服務(wù)
nginx -s reload
systemctl restart php-fpm.service
正常可訪問
?
mysql
安裝mysql
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar #獲取安裝包
tar -xvf mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar #解壓安裝包
rpm -ivh mysql-community-server-8.0.30-1.el7.x86_64.rpm #安裝server版
#用rpm安裝的時(shí)候解決不了環(huán)境依賴問題,在安裝server的時(shí)候會(huì)進(jìn)行報(bào)錯(cuò)。缺少什么環(huán)境就進(jìn)行安裝什么環(huán)境。
?在安裝的時(shí)候報(bào)錯(cuò)缺少環(huán)境,就直接后面加上所需要的包就可以(tab補(bǔ)齊)? 可以同時(shí)安裝多個(gè)包
?安裝的時(shí)候報(bào)錯(cuò)啟用或者沖突,直接卸載啟用文件就可以
沒有報(bào)錯(cuò),安裝完成
阿里云服務(wù)器要安裝
yum install libaio
要實(shí)現(xiàn)站庫分離就要使用兩臺(tái)服務(wù)器,將會(huì)mysql服務(wù)器與另外兩個(gè)分開
mysql的使用
systemctl start mysqld
#啟動(dòng)服務(wù)
grep “password” /var/log/mysqld.log
#查看初始隨機(jī)生成的密碼
mysql -u root –p
#連接數(shù)據(jù)庫
use mysql
#要先使用數(shù)據(jù)庫才能進(jìn)行查詢
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
#初次使用數(shù)據(jù)庫的時(shí)候會(huì)報(bào)錯(cuò),要求你修改密碼
alter user 'root'@'localhost' identified by 'zhss@0121Lin';
#初次需要修改密碼
show databases;
#查看數(shù)據(jù)庫
select user,host from mysql.user;
#查詢賬戶信息;
update user set host='%' where user='root';
#將表的host登陸方式從localhost(本地登錄)更新成%(任意方式)
#第一個(gè)user代表user表,第二個(gè)是表中的user字段
用nginx服務(wù)器連接mysql數(shù)據(jù)庫
在nginx服務(wù)器的網(wǎng)站根目錄的index.php中進(jìn)行編輯
<?php
$servername = "192.168.100.150";
$username = "root";
$password = "root";
$conn = mysqli_connect($servername,$username,$password);
if($conn->connect_error){
die("lianjieshibai:".$conn->connect_error);
}
echo "success";
phpinfo();
?>
#或者
#(那三行是用來顯示報(bào)錯(cuò)信息的,做調(diào)試用。映射到公網(wǎng)的話建議刪掉)
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$servername = "localhost";
$username = "root";
$password = "root";
$database = "cms";
$conn = mysqli_connect($servername, $username, $password, $database);
if (!$conn) {
die(" ~^ ~N 失敗 ~Z" . mysqli_connect_error());
}
echo " ~^ ~N ~H~P ~J~_";
// ~I ~L ~U ~M ~S ~S~M ~\...
mysqli_close($conn);
?>
這一步做完就可以連接到數(shù)據(jù)庫
?
?
報(bào)錯(cuò)情況
第一種
問題:出現(xiàn)這個(gè)情況就是密碼復(fù)雜度問題,需要在mysql進(jìn)行修改
alter user 'root'@"%' identified with mysql_native_password by 'yourpassword";
#修改身份驗(yàn)證插件
第二種
問題:Fatal error: Uncaught Error: Call to undefined function mysql_connect()
????????出現(xiàn)這個(gè)問題的原因是由于php7以后已經(jīng)不支持mysql連接了,解決的辦法也很簡單,更換mysqli/PDO連接(替換mysql_connect()為mysqli_connect())或者更干脆降低php版本
可以先查看下PHP環(huán)境中有沒有裝上MySQL擴(kuò)展,如果沒輸出的話就是沒裝上
php -m | grep mysqli
然后發(fā)現(xiàn)沒輸出東西,發(fā)現(xiàn)是我的mysql沒裝上,重新安裝
yum -y install php72w-mysqli
如果在安裝的時(shí)候出現(xiàn)這情況,就是已經(jīng)存在了并且沖突了
CMS
網(wǎng)站源碼(cms)導(dǎo)入(從我的windows桌面導(dǎo)入,直接拉進(jìn)去也行)
sudo scp /mnt/c/Users/Administrator/Desktop/PHPCMS.tar 192.168.100.110:/root/
#后面的:/root/ 是指定傳入的路徑,也可以跟ssh一樣在ip前面加上 用戶@ 指定傳輸用戶
#通過子系統(tǒng)ubuntu從桌面?zhèn)鞯絚entenos,也可以直接拉進(jìn)去
將源碼解壓到網(wǎng)站根目錄
#解壓cms壓縮包
tar -xvf PHPCMS.tar
#移動(dòng)到/usr/local/nginx/html/
mv PHPCMS /usr/local/nginx/html/
修改PHPCMS/includes/db.php
<?php
$db['db_host'] = "localhost"; //數(shù)據(jù)庫服務(wù)器地址
$db['db_user'] = "root"; //賬戶
$db['db_pass'] = "root"; //密碼
$db['db_name'] = "cms";
將cms.sql傳給數(shù)據(jù)庫服務(wù)器 ,這一步是為了在mysql中創(chuàng)建一個(gè)cms數(shù)據(jù)庫,并且查看一下數(shù)據(jù)庫是否創(chuàng)建成功
scp PHPCMS/cms.sql root@192.168.100.150:/root/
#scp 文件 賬戶@IP地址:路徑
mysql -u 賬戶名 -p < cms.sql
#導(dǎo)入數(shù)據(jù)庫
然后到這一步,就可以在看到的自己搭建的網(wǎng)站了,如果還是不能查看的到,就要在nginx的配置文件中對php的配置進(jìn)行修改,網(wǎng)站的相對路徑改為絕對路徑,然PHPCMS可以被索引的到
在這里可以跟上PHPCMS的絕對路徑,一般到html就可以,如果還是索引不到的話,在跟上PHPCMS
?這是網(wǎng)站搭建的最終效果文章來源:http://www.zghlxwxcb.cn/news/detail-790005.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-790005.html
到了這里,關(guān)于Linux網(wǎng)站搭建(nginx+php+mysql)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!