. 實驗說明:繼上章節說到的網頁文件默認存放路徑在/var/www/html/下,這章節將帶大家學習網頁文件存放在自定義目錄下該如何正常使用,以及將網站域名設為dns域名。
2. 實驗環境:準備兩臺centos7虛擬機,都正常配置軟件倉庫、掛載光盤文件、下載補全增強型工具和vim文本編輯器以及都手動修改獲取到的ip地址。一臺作為dns服務器,另一臺作為web服務器。物理機作為客戶端。
Dns服務器ip地址:192.168.159.129 dns:192.168.159.129
Apache服務器ip地址:192.168.159.128 dns:192.168.159.129
客戶端dns:192.168.159.129
3. 進行實驗
首先進行dns服務器搭建
安裝
修改配置文件
vim /etc/named.conf
vim /etc/named.rfc1912.zones
4. 正、反向配置文件修改,給centos服務器創建一條dns主機記錄
首先進入/var/named文件夾
創建正、反向文件副本
修改正向配置文件
修改反向配置文件
5. 重啟dns服務,設為開機啟動,放行防火墻規則
Systemctl –now enable named
firewall-cmd --permanent --add-service=dns ; firewall-cmd --reload
6. 在apache服務器和物理機上進行與dns域名連通信測試
7. 搭建apache服務器
安裝軟件包
新建網頁文件,存放位置自定(當然存放網頁文件的文件夾需要已經存在)
修改配置文件
重啟http服務并查看狀態,防火墻規則上放行http服務
雖然現在服務狀態是活動的,防火墻規則也已經放行http服務,但是還是無法正常訪問網站內容
8. 解決辦法
無法訪問的原因是,我們自定義的網頁文件存放文件夾/apache與默認的/var/www/html文件夾的selinux安全上下文屬性不同導致的。
使用ls命令分別查看/apache和/var/www/html文件夾selinux屬性
再使用chcon修改/apache與/var/www/html的selinux安全上下文為相同
重啟httpd服務后再瀏覽器訪問網站
解決完畢
還有另一種辦法就是關閉服務器端上的所有selinux
當然就像我不建議大家直接關閉防火墻那樣,我也不建議大家直接關閉selinux功能,雖然剛開始接觸它可能會被它折磨,但它的確是一個強大的功能。
學習更多技術干貨,請搜索:Kali與編程
由于網上各種版本新舊不一,而且Linux版本也不盡相同,所以自己寫一遍根據官網的提示自己手動搭建過程。
看官方文檔很重要,永遠是最新的,至少不會過時。
我們采用yum的方式安裝最新版nginx,就兩步即可。最新版本及其他Linux版本可見官方文檔
官方文檔:http://nginx.org/en/linux_packages.html#stable
請讀者根據自己的版本選擇配置:
按官方文檔,選擇自己版本centos可看到步驟:
1.1 安裝yum-utils
yum -y install yum-utils
1.2 配置nginx的yum源
根據官方文檔創建/etc/yum.repos.d/nginx.repo文件,并且在文件中寫入一下內容。
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
保存退出。
1.3 最后默認安裝即可,默認安裝的最新的穩定版
yum -y install nginx
安裝完成,查看nginx 版本
nginx -v
在瀏覽器輸入本地地址
查看nginx安裝目錄及其他文件位置:
rpm -ql nginx
MySQL我選擇免編譯安裝,直接在linux下載,或者下載上傳至Linux。
現在用最新的MySQL 8.0系列,和最常用的MySQL 5.7系統,選擇適合自己的版本下載。
最新版本下載參考官方文檔:https://downloads.mysql.com/archives/community/
所有版本的官方安裝文檔:https://dev.mysql.com/doc/refman/
我選擇5.7版的最新版是5.7.33版本,Generic(常規大眾版),64位也是目前企業最常用的版本。
2.1 前期準備:安裝依賴包,創建mysql用戶及用戶組
沒有這個依賴包,初始化會報錯。
yum search libaio # 查找依賴包
yum -y install libaio # 安裝libaio依賴包
yum -y install libncurses* # 安裝libncurses* 依賴
創建mysql用戶及用戶組
groupadd mysql #創建mysql用戶組
useradd -r -g mysql -s /bin/false mysql #創建系統用戶mysql并加入mysql用戶組
2.2 linux下載MySQL并解壓到指定目錄
mkdir /mysql
下載MySQL
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
解壓MySQL
tar -zxvf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
自己選擇好或創建好自己的路徑目錄,我是直接改名為mysql 直接移動到根目錄里
注:路徑很重要,mysql默認是安裝在/usr/local/mysql路徑,如果不是這個目錄,后面啟動會報錯,需要修改一個腳本文件內容。如果懶得改的直接解壓移動到這個路徑即可
重命名:
mv mysql-5.7.33-linux-glibc2.12-x86_64 mysql
移動到根目錄
mv mysql /
進入根目錄的mysql文件夾可以看到這些文件。
2.3 進入/mysql目錄,創建mysql-files并授權
在mysql目錄下創建mysql-files目錄,網上絕大部分都是創建data目錄,沒必要還總是報錯,咱們還是安裝官方文檔來更靠譜,后面安裝初始化后自己生成data文件夾。
5.7官方安裝文檔:https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html
創建目錄
mkdir /mysql/mysql-files
更改mysql-files權限(網上大多數也是給整個mysql目錄授權,也沒必要,這一個文件即可)
chown mysql:mysql mysql-files
chmod 750 mysql-files
改完后的目錄
2.4 安裝并初始化
安裝初始化,注意自己basedir=/mysql 路徑為你自己所設置的mysql路徑。
./bin/mysqld --initialize --user=mysql --basedir=/mysql
初始化安裝生成密碼和data文件夾。初始密碼,也是后面第一次進入mysql的密碼。
2.5 修改腳本內容啟動數據庫
修改support-files目錄下的mysql.server腳本文件。
vim support-files/mysql.server
修改這兩個變量的路徑為自己設置的路徑即可。
basedir=/mysql
datadir=/mysql/data
測試是否啟動并登錄成功
啟動數據庫:
./support-files/mysql.server start
啟動成功!!!
登錄數據庫輸入原始密碼:
./bin/mysql -u root -p
登錄成功,順便把原始密碼改了,在mysql下依次輸入以下命令。
自己設置自己的密碼,這里我設置的是123456.
修改密碼:SET PASSWORD = PASSWORD('123456');
禁用密碼過期:ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
刷新的系統權限:flush privileges;-
修改好后,輸入quit; 退出數據庫。
2.6 將mysql添加進程,添加變量,添加服務
由于現在我們只能依靠在mysql目錄下的腳本才能啟動,所以需要添加進程到系統進程,并配置環境變量以在命令行模式可直接輸入命令登錄。
添加進程:
cp support-files/mysql.server /etc/init.d/mysqld
添加好后。可以用命令service mysql start開啟服務,service mysql stop關閉服務。
當然如果我們習慣用systemctl 開啟或者關閉服務。
chkconfig --add mysql
這時我們可以用systemctl start mysql.service開啟服務,systemctl stop mysql.service關閉服務了。
最后我們在/etc/profile里面添加mysql環境變量
vim /etc/profile
在末尾添加:(注意你們自己設置的路徑,我的路徑是/mysql/bin)
export PATH=$PATH:/mysql/bin
保存!
source /etc/profile
更新立即生效。
這時我們可以直接用
mysql -u root -p
登錄mysql了。到此mysql安裝完成!!
采用在線安裝的方式,安裝php8.0版本,可自由查看版本并安裝相關版本。用第三方軟件源remi安裝,因為對此源對php有非常好的支持。
3.1 安裝 epel-release源和 源管理工具yum-utils
安裝 epel-release源和 源管理工具yum-utils
yum -y install epel-release yum-utils
3.2 安裝Remi軟件源
Remi軟件源官方地址: https://rpms.remirepo.net/
找到自己的linux版本,我的是Centos8,為linux8,所有安裝
CentOS8安裝:
yum -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
CentOS7安裝:
yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
3.3 啟用remi源php8.0模塊,安裝php及擴展
注:這里貌似CentOS8要用另一個安裝命令dnf啟用,我用yum是不行的。
CentOS8啟動php模塊并安裝:
dnf module list php #查看php可用模塊和版本
然后我們直接啟用remi源里的remi-8.0模塊,根據需要選擇自己格式的版本,如remi-7.4模塊。
dnf module enable php:remi-8.0 -y
然后直接命令安裝默認為php8版本,及其他擴展
dnf -y install php php-cli php php-fpm php-mysqlnd php-zip php-devel php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redis
CentOS7啟動php模塊并安裝:
yum啟動php模塊,根據需要選擇自己格式的版本,如remi-php74模塊,就是php7.4版本。:
yum-config-manager --enable remi-php80 #啟用remi源的php8.0模塊
注:如果顯示沒有這個命令,則需要先安裝`yum -y install yum-utils` 插件。
安裝php及相關擴展:
yum install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redis
安裝成功:php -v查看版本為php8.0版本
LNMP架構原理大概:nginx是靜態頁面無法直接在mysql的處理動態數據,所以nginx將動態頁面請求發送給php,php在MySQL處理數據,所以是Nginx+php的配置文件連接設置,和MySQL+php配置文件連接設置。
4.1 創建www用戶及用戶組,及在自己配置的站點目錄添加php測試頁面
此用戶需要和php配置文件一致,后續在php配置文件中也要修改此用戶。
當然有人問為什么要設置www用戶,直接將nginx默認用戶在php設置一樣就行了,當然可以,但是出于安全慣例,相當于你不可能把你服務器root交給每個人來用。
groupadd www #創建www用戶組
useradd -g www -s /sbin/nologin www #創建www用戶并加入www用戶組
我的站點目錄為/根目錄下的www目錄,在www目錄創建index.php文件
vim /www/index.php
文件內容為:
<?php
phpinfo();
?>
保存退出!!!
4.2 修改nginx配置文件
修改nginx主配置文件:
vim /etc/nginx/nginx.conf
將默認user nginx; 改為 user www;保存即可。
user www; #work進程用戶(打工者),root是老板
修改nginx網站擴展配置,我網站配置名為`www.conf`,修改這個文件即可
vim /etc/nginx/conf.d/www.conf
主要是修改兩個方面,1是在index 加上index.php(默認沒有)。2加上location ~ \.php$ {}這個項,為了與php的成功連接。
注:fastcgi_pass 這個監聽配置需要與php里的監聽配置一直,否則打開頁面報錯An error occurred.
我裝的php配置文件默認監聽是另一種套接子sock方式listen = /run/php-fpm/www.sock 。
所以在php配置文件設置也要改為listen = 127.0.0.1:9000。有些php是把這個注釋掉了,取消注釋即可。
sock方式和tcp監聽方式優缺點:sock承載壓力較大,但不穩定。tcp監聽壓力正常,但相當穩定。
#配置一個網站,一個server一個網站:
server {
listen 80;
#站點訪問端口,可基于端口(如:8080)訪問,或者基于ip訪問(如10.10.10.10:8080)端口優先server_name
server_name localhost; #域名
location / { #/匹配URL直接訪問 后面加上/URI精確匹配,匹配不到404錯誤
root /www; #站點目錄為/www
index index.html index.htm index.php; #定義首頁文件 沒有會顯示403拒絕訪問
}
error_page 500 502 503 504 /50x.html; #優雅顯示頁面信息
location = /50x.html {
root /usr/share/nginx/html; #優雅頁面位置
}
location ~ \.php$ {
root /www;
fastcgi_pass 127.0.0.1:9000; #nginx通過9000訪問交給PHP處理
fastcgi_index index.php; #默認php頁面
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#$document_root為url,$fastcgi_script_name為uri
include fastcgi_params; #調用fastcgi_params內容
}
}
保存退出!!
修改www.conf文件,有些是默認修改主配置文件`/etc/php-fpm.conf`也可。我的php-fpm.conf里沒啥東西,沒有用戶組啥之類的,只能在子配置文件`etc/php-fpm.d/www.conf`里面改。
vim /etc/php-fpm.d/www.conf
修改用戶及用戶組為www,監聽修改監聽本地127.0.0.1:9000
user = www
group = www
listen = 127.0.0.1:9000
保存重啟php及nginx。
systemctl restart php-fpm.service重啟php.
systemctl restart nginx.service 重啟nginx.
瀏覽器打開輸入本地地址127.0.0.1顯示php頁面,配置成功。
其實也不需要修改什么,默認就可以了,就是自己測試php·可否成功連接MySQL。
5.1 創建php測試頁面
在自己的站點目錄下修改index.php頁面,本人頁面目錄/www/index.php
vim /www/index.php
php頁面測試代碼,主要添加mysql的服務相關信息:
<?php
$servername = "127.0.0.1"; #自己mysql的地址,這里為本機地址
$username = "root"; #mysql的用戶
$password = "123456"; #mysql的用戶密碼
try {
$conn = new PDO("mysql:host=$servername;", $username, $password);
echo "連接成功";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
保存退出!!
在瀏覽器輸入本地地址127.0.0.1即可看到相關信息。
連接成功則頁面顯示 “連接成功“`字樣。
失敗則返回相關信息如:SQLSTATE[HY000] [2002] No such file or directory 失敗檢查數據庫地址用戶密碼即可。
這時整個LNMP已經搭建成功!把相關網頁上傳至站點目錄即可。
5.2 MySQL配置文件(自己選擇行配置)
MySQL默認沒有配置文件,如果需要,自己在/etc創建my.cnf配置文件。
vim /etc/my.cnf
常用配置參數:
文:迷神
在各種網站項目開發過程都需要生成PDF文件,用于生成顯示pdf。其實,生成pdf文件很多種,一種簡單的方法就是安裝wkhtmltopdf,然后curl訪問網頁生成pdf文件。
下去github上下載下:
https://github.com/wkhtmltopdf/wkhtmltopdf/
下載github的問題件
wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
解壓文件,
tar xvfJ wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
cd wkhtmltox/bin
復制到bin目錄下,并設置可執行啊。
sudo mv ./wkhtmltopdf /usr/local/bin/wkhtmltopdf
sudo chmod +x /usr/local/bin/wkhtmltopdf
如果部分電腦沒有安裝依賴庫還是需要安裝,可以先執行試試。安裝插件:
yum install libXrender libXext fontconfig
執行生成pdf文件:
wkhtmltopdf http://www。。baidu。。com ./baidu.pdf
網頁生成了pdf文件
解決辦法如下:
我這里的服務器centos,找windows里的宋體 simsun.ttf,上傳到服務器/usr/share/fonts/里
/usr/share/fonts/simsun.ttf
測試解決!
解決亂碼
好了,使用wkhtmltopdf生成pdf就這樣了,剩下,使用你們的編程語言調用wkhtmltopdf訪問網頁,保存成pdf文件即可。比如php只要執行下system("wkhtmltopdf http://網頁 ./網頁文件.pdf")
*請認真填寫需求信息,我們會在24小時內與您取得聯系。