在FreeBSD 11上安裝Nginx,MariaDB和PHP(FEMP)

在本教程中,將介紹在FreeBSD 11.x上安裝和配置FEMP的過程。 FEMP軟件棧是縮寫,代表通常安裝在Unix / Linux操作系統中的一組程序,主要用於部署動態Web應用程序。 在這種情況下,FEMP的首字母縮寫是指FreeBSD的類Unix操作系統,在其上面安裝了這些應用程序:

  • Nginx Web服務器是一種快速發展的熱門Web服務器,主要用於提供HTML內容,但也可以為Web服務器或其他網絡服務提供負載平衡,高可用性或反向代理。
  • PHP動態編程語言解釋器,用於後端操作數據庫數據並創建可以包含在純HTML中的動態Web內容。 PHP腳本只在服務器端執行,從不在客戶端執行(在瀏覽器中)
  • Mariadb \ MySQL RDBMS這是數據存儲在支持的地方,而動態處理由PHP處理。 在本教程中,我們將安裝和使用MariaDB關係數據庫管理系統(MySQL的社區分支),以支持由Oracle現在擁有和開發的MySQL數據庫。

要求:

  • 最簡單的安裝FreeBSD 11.x.
  • 為網絡接口配置的靜態IP地址。
  • 常規帳戶配置有root權限或通過root帳戶直接訪問系統。
  • 最好是使用最小DNS記錄(A和CNAME記錄)配置的公共註冊域名。

第1步 – 安裝MariaDB數據庫

第一步,我們將安裝MariaDB數據庫系統,它是用於存儲和管理網站動態數據的FEMP組件。 MariaDB / MySQL是世界上與Nginx或Apache Web服務器結合使用的最常用的開源關係數據庫之一。 這兩款服務器都被高度用於創建和開發複雜的Web應用程序或動態網站。 MariaDB可以直接從PORTS倉庫提供的二進制文件安裝到FreeBSD上。 但是,在FreeBSD Ports數據庫部分使用ls命令進行的簡單搜索會顯示MariaDB的多個版本,如下面的命令輸出所示。 另外,運行Package Manager pkg命令將顯示相同的結果。

ls -al /usr/ports/databases/ | grep mariadb

pkg search mariadb

 

在本指南中,我們將使用pkg命令安裝MariaDB數據庫和客戶端的最新版本,如以下摘錄所示。

pkg install mariadb102-server mariadb102-client

MariaDB在系統中完成安裝之後,請發出以下命令以啟用系統範圍內的MySQL服務器。 另外,請確保您啟動MariaDB守護進程,如下所示。

sysrc mysql_enable=」YES」

service mysql-server start

接下來,我們需要通過運行mysql_secure_installation腳本來保護MariaDB數據庫。 在運行腳本時,我們會問一系列問題。 這些問題的目的是為MySQL引擎提供一個安全級別,比如為MySQL root用戶設置一個root密碼,刪除匿名用戶,禁止root用戶遠程登錄,刪除測試數據庫。 為MySQL根用戶選擇一個強密碼後,在所有問題上回答「  」,如以下腳本示例所示。 不要將MariaDB數據庫root用戶與系統root用戶混淆。 儘管這些帳戶具有相同的名稱(root),但它們並不等同,用於不同的目的,一個用於系統管理,另一個用於數據庫管理。

/usr/local/bin/mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB

SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

 

In order to log into MariaDB to secure it, we’ll need the current

password for the root user.  If you’ve just installed MariaDB, and

you haven’t set the root password yet, the password will be blank,

so you should just press enter here.

 

Enter current password for root (enter for none):

OK, successfully used password, moving on…

 

Setting the root password ensures that nobody can log into the MariaDB

root user without the proper authorisation.

Set root password? [Y/n] y

New password:

Re-enter new password:

Password updated successfully!

Reloading privilege tables..

… Success!

By default, a MariaDB installation has an anonymous user, allowing anyone

to log into MariaDB without having to have a user account created for

them.  This is intended only for testing, and to make the installation

go a bit smoother.  You should remove them before moving into a

production environment.

Remove anonymous users? [Y/n] y

… Success!

Normally, root should only be allowed to connect from ‘localhost’.  This

ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y

… Success!

By default, MariaDB comes with a database named ‘test’ that anyone can

access.  This is also intended only for testing, and should be removed

before moving into a production environment.

Remove test database and access to it? [Y/n] y

– Dropping test database…

… Success!

– Removing privileges on test database…

… Success!

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

Reload privilege tables now? [Y/n] y

… Success!

Cleaning up…

All done!  If you’ve completed all of the above steps, your MariaDB

installation should now be secure.

Thanks for using MariaDB!

最後,在完成MariaDB數據庫安全保護之後,運行以下命令測試是否允許從root帳戶執行本地登錄到數據庫。 一旦連接到數據庫提示符,只需鍵入退出退出 ,以離開數據庫控制台,並返回到系統用戶控制台提示符,如下圖所示。

mysql -u root -p

MariaDB> quit

 

在FreeBSD上運行sockstat命令很快就揭示了MariaDB對外部網絡連接的開放性,可以通過3306 / TCP端口從任何網絡遠程訪問。

sockstat -4 -6

為了完全禁用到MariaDB的遠程網絡連接,只需要通過下面的命令將以下行添加到/etc/rc.conf文件中,就可以強制mysql網絡套接字綁定到回送接口。

sysrc mysql_args=”–bind-address=127.0.0.1″

之後,重新啟動MariaDB守護程序以應用更改並再次執行sockstat命令以顯示mysql服務的網絡套接字。 這一次,MariaDB服務應該監聽localhost上的網絡連接3306套接字。

service mysql-server restart

sockstat -4 -6|grep mysql

如果您正在開發需要訪問此計算機上的數據庫的遠程Web應用程序,請通過從/ etc / rc刪除或注釋mysql_args =「 – bind-address = 127.0.0.1」恢復到目前為止所做的MySQL套接字更改 conf文件並重新啟動數據庫以反映更改。 在這種情況下,您應該考慮其他選擇來限制或不允許遠程訪問MySQL,例如在本地運行防火牆,過濾需要遠程登錄的客戶端的IP地址或使用適當的IP地址創建MySQL用戶。授予登錄服務器。

第2步 – 安裝Nginx Web服務器

我們將在FreeBSD上為我們的FEMP安裝的下一個重要守護進程是由Nginx服務表示的Web服務器。 在FreeBSD上安裝Nginx web服務器的過程非常簡單。 Nginx Web服務器可以從FreeBSD 11.x Ports提供的二進制文件中安裝。 通過www部分中的Ports存儲庫的簡單搜索,可以顯示Nginx軟件可用的預編譯版本列表,如下面的命令摘錄所示。

ls /usr/ports/www/ | grep nginx

執行包管理命令可以顯示相同的結果,如下圖所示。

pkg search –o nginx

為了在FreeBSD上安裝最常用的Nginx版本,運行下面的命令。 在安裝二進制包時,包管理器會詢問您是否同意下載和安裝Nginx包。 通常,您應該在提示中鍵入yes或y以開始安裝過程。 為了避免提示在發出命令時添加-y標誌: pkg -y install nginx 。

pkg install nginx

在您的系統上安裝了Nginx Web服務器軟件之後,您應該通過執行以下命令來啟用並運行該服務。

sysrc nginx_enable=」yes」

service nginx start

您可以執行sockstat命令來檢查Nginx服務是否在您的系統上啟動,以及它綁定在哪個網絡套接字上。 通常,它應該在*:80 TCP套接字上默認綁定。 您可以使用grep命令行篩選器僅顯示匹配nginx服務器的套接字。

sockstat -4 -6 | grep nginx

為了訪問Nginx的默認網頁,請在網絡中的計算機上打開瀏覽器,並通過HTTP協議導航到您的服務器的IP地址。 如果您已經註冊了域名,或者您在本地使用了本地DNS服務器,則可以在瀏覽器的URI字段中填寫機器的完全限定域名或域名。 標題消息歡迎使用nginx 在瀏覽器中應該會顯示一些HTML行,如下圖所示。

在FreeBSD 11.x中為Nginx存儲網絡文件的位置是/ usr / local / www / nginx /目錄。 這個目錄是一個到nginx-dist目錄的符號鏈接。 要部署網站,請將html或php腳本文件複製到此目錄中。 為了更改Nginx默認的webroot目錄,打開/ usr / local / etc / nginx /目錄下的Nginx配置文件,並更新root語句行,如下例所示。

nano /usr/local/etc/nginx/nginx.conf

這將是Nginx新的webroot路徑:

root       /usr/local/www/new_html_directory;

第3步 – 安裝PHP編程語言

默認情況下,Nginx Web服務器不能直接解析PHP腳本,Nginx需要通過FastCGI網關將PHP代碼傳遞給PHP-FPM守護進程,後者解釋並執行PHP腳本。 為了在FreeBSD中安裝PHP-FPM守護進程,通過發出以下命令來搜索可用的PHP預編譯二進制包。

ls /usr/ports/lang/ | grep php

pkg search –o php

從FreeBSD Ports存儲庫中提供的大量PHP版本中,通過發出以下命令,選擇安裝最新版本的PHP解釋器(目前是PHP 7.1版本)。

pkg install php71

為了安裝一些額外的PHP擴展,可能需要部署複雜的Web應用程序,請發出以下命令。 官方支持的PHP擴展的列表可以通過訪問以下鏈接找到: http : //php.net/manual/en/extensions.alphabetical.php

如果您打算建立一個基於內容管理系統的網站,請查看CMS文檔,以便找出您系統的要求,尤其是需要哪些PHP模塊或擴展。

php71-mcrypt mod_php71 php71-mbstring php71-curl php71-zlib php71-gd php71-json

由於我們在設置中運行的是數據庫服務器,因此我們還應該安裝PHP解釋器用來連接到MariaDB數據庫的PHP數據庫驅動程序擴展。

pkg install php71-mysqli

接下來,通過編輯PHP-FPM配置文件來更新PHP-FPM用戶和組,以匹配Nginx運行時用戶。 將用戶和組的行變量更改為www ,如下面的摘錄所示。

cp /usr/local/etc/php-fpm.d/www.conf{,.backup}

nano /usr/local/etc/php-fpm.d/www.conf

改變下面的行看起來如下。

user = www
group = www

 

默認情況下,Nginx守護進程以「 nobody 」系統用戶的特權運行。 通過編輯/usr/local/etc/nginx/nginx.conf文件更改Nginx運行時用戶以匹配PHP-FPM運行時用戶,並更新以下行:

user www;

默認情況下,FreeBSD中的PHP-FPM守護進程在localhost9000 TCP端口上打開一個網絡套接字,處於監聽狀態。 要顯示這個套接字,你可以使用sockstat命令,如下面的例子所示。

sockstat -4 -6| grep php-fpm

為了讓Nginx Web服務器在127.0.0.1:9000網絡套接字上與PHP FastCGI網關交換PHP腳本,打開Nginx配置文件並更新PHP-FPM塊,如下面的示例所示。

用於Nginx的PHP FastCGI網關示例:

location ~ \.php$ {
root               /usr/local/www/nginx;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include        fastcgi_params;
}

完成上述所有更改後,通過發出以下命令,基於默認生產文件為PHP創建配置文件。 您可以通過編輯php.ini文件中的變量來更改PHP運行時設置。

ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.ini

最後,為了應用到目前為止所做的所有更改,請啟用系統範圍內的PHP-FPM守護進程,並通過發出以下命令來重新啟動PHP-FPM和Nginx服務。

sysrc php_fpm_enable=yes

service php-fpm restart

測試nginx配置的語法錯誤:

nginx –t  

service nginx restart

為了在FreeBSD中獲得當前PHP的FEMP棧信息,通過發出以下命令在服務器文檔根目錄下創建一個phpinfo.php文件。

echo “<?php phpinfo(); ?>” | tee /usr/local/www/nginx/phpinfo.php

然後,打開一個瀏覽器並通過訪問服務器的域名或公共IP地址後面的/phpinfo.php文件導航到phpinfo.php頁面,如下圖所示。

  • http://192.168.1.50/phpinfo.php
  • http://domain.com/phpinfo.php

就這樣! 您已經在FreeBSD 11中成功安裝並配置了FEMP。現在,環境已經準備就緒,可以開始在您的場所部署動態Web應用程序。

 

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營

發表評論

您的電子郵箱地址不會被公開。 必填項已用*標註