前言
搭這個博客主要是動動我那個喫灰的服務器,順便熟悉熟悉linux。配置LNMP還可以直接下載一套安裝包,不過我採用一個個配置的方式
其中,nginx是一個漲姿勢點。核心難點在於nginx的配置以及搭配php的配置,由於之前在服務器還利用snap搭了nextcloud,造成了80端口的衝突,本來是想在nginx這邊修改端口的,奈何語法不夠熟練,貪圖方便直接修改了nextcloud那邊的端口了。
後卡得比較久的地方是出現502的錯誤,原因是php和nginx配置的unix域套接字不一致,因爲根目錄和var目錄下都有一個run文件夾,而配置文件中要設置一樣。
內容
由於也沒什麼深刻的技術點,就來講講nginx。
代理服務
nginx在本實驗中充當反向代理作用。
反向代理,通俗的講就是把客戶提交的請求中間再加一層過濾,即並不是客戶機直接訪問服務機,而是經過了proxy服務,這樣如果出問題也是代理先出,保證了服務端的安全。許多內容服務器安全、負載均衡等都用到了這個技術。
在計算機網絡我們有web緩存代理服務的技術,就相當於代理服務器也存着一些常用到內容緩存,這樣pc請求資源的時候就不用都跑到ser端獲取,而一旦更新或者緩存中沒有相應的資源才訪問服務端,降低了服務端的壓力。這就是負載均衡。
區別於反向代理還有個正向代理,實際上可以這麼理解,正向代理跑在客戶端,但由於某些原因,比如服務器要設置權限等,於是加了個中間商出來。反向則是建立在服務端的,是用來優化服務端性能的。還能根據配置去映射到不同的服務器。nginx就是在linux中充當url訪問時去定位不同文件的資源的。 通過server去代理不同端口的訪問,就像一個查表管理員一樣。
nginx配置語法
這部分可以參考:Ubuntu16 Nginx的安裝與基本配置
核心的點在於:location、root(區別於alias)、index
root
這個是server訪問的資源路徑目錄,一般設置到你要存放靜態網頁文件的目錄,會配合location一起使用。
index
這個是輸入域名或ip優先訪問的資源文件,排在前面的優先級較高。
例如這樣子優先訪問html目錄下的index.php
location
這個是對url訪問時的一個路由,會根據配置的路由信息進行定位,可以搭配着正則語法一起使用。參考:Nginx的location區塊的作用及設置
location = / { [ configuration A ] } #用戶請求"/"時,匹配A,例如:www.pcm.com/
location / { [ configuration B ] } #當用戶請求"/index.html"時,匹配B,例如:www.pcm.com/index.html
location /documents/ { [ configuration C ] } #當用戶請求"/documents/"時,匹配C,例如:www.pcm.com/documents/index.html
location ^~ /images/ { [ configuration D ] } #當用戶請求"/images/"時,匹配D,:www.pcm.com/images/1.jpg
location ~* \.(gif|jpg|jpeg)$ { [ configuration E ] } #當用戶請求".gif|.jpg|.jpeg"時,匹配E,例如:www.pcm.com/documents/1.jpg
#上面的反斜槓是轉義字符,$的意思是結尾
步驟
整體思路是:安裝配置LNMP(Linux+Nginx+Mysql+Php) --> 下載安裝過Typecho --> 配置博客細節
-
進入root用戶
su
-
更新軟件源
apt-get update
-
安裝nginx
apt-get install nginx
-
安裝php 這邊我安裝的是7.2版本,5.1版本之後的都行,這個地方如果你是華爲雲服務器並且和我這個版本一樣的推薦直接按我這個版本,因爲和系統對應。至於後面的-fpm則是php運行服務端web程序的一個版本,不要用-cli,那是命令行版本,而還有一個-zts是線程安全的,暫時用不到,不予解釋。
apt-get insall php7.2-fpm
-
安裝mysql,注意要和你安裝的php版本對應
apt-get install mysql-server php7.2-mysql
至此,除了後面還有個phpadmin用於管理typecho數據庫的所有軟件均安裝完畢
-
配置php,你要尋找到你php的目錄一般都在/etc下,然後修改php.ini文件,將其中的 ;cgi.fix_pathinfo=1修改爲 cgi.fix_pathinfo=0 注意在分號’;'是一個註釋符,不要完了刪掉它。
我的php.ini在/etc/php/7.2/fpm下
-
重啓php,此時配置完成後要重啓php的服務,restart改成reload也可以,區別就是reload如果重啓失敗會保持上次的啓動情況,也就是回退到之前成功的版本
service php7.2-fpm restart
-
配置nginx
cd /etc/nginx/
這邊sites-available和sites-enabled都有default文件,選擇其中一個就好,因爲兩個是鏈接的,一般選sites-available/default
vim /etc/nginx/sites-available/default
監聽的是80端口,如果有多個服務可以自定義修改
root的資源目錄設置好,這個是之後typecho的資源目錄,url一般會到這個目錄尋找資源,index則是設置默認的index.php
之後設置路由,這塊注意的點是fastcgi_pass unix:/run/php/php7.2-fpm.sock;這是一個unix的域套接字,要和php那邊的配置一致否則一直報502的錯誤,因爲根目錄和var目錄下都有run文件夾。還有正則部分就不細講,其他部分可以直接複製,修改即可
參考:location ~ .*\.php(\/.*)*$ { # include snippets/fastcgi-php.conf; # # # With php-fpm (or other unix sockets): fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php7.2-fpm.sock; include fastcgi_params; fastcgi_index index.php; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; #} set $path_info ""; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") { set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
php查看unix域套接字的時候由於7.2的www部分是include進來的,所以到pool文件夾中去確認,務必要和nginx中配置的一致
-
重啓nginx,如果你修改了unix套接字監聽內容則要連同php一塊重啓,當然如果修改的位置都在nginx中的話則只需要重啓nginx即可
service nginx restart
-
安裝phpadmin,並連接到你準備存放typecho的目錄下,這個要和之前你設置的root資源目錄對應
apt-get install phpmyadmin ln -s /usr/share/phpmyadmin/ /usr/share/nginx/html/phpmyadmin
-
下載typech安裝包並解壓到nginx配置的root資源目錄下
wget http://typecho.org/downloads/1.1-17.10.30-release.tar.gz tar -zxvf 1.1-17.10.30-release.tar.gz -C /usr/share/nginx/html/
-
把nginx資源目錄下原來的index.php刪除防止與typecho的衝突,並把build中的東西全部移動到和build同級,build文件夾就可以刪除
rm /usr/share/nginx/html/index.php mv /usr/share/nginx/html/build/* /usr/share/nginx/html/ rm -rf /usr/share/nginx/html/build
此時資源文件如下:
-
輸入你服務器的ip/phpmyadmin開始創建數據庫,注意關於數據庫要在雲服務器的安全組中添加相應的規則。
成功登陸界面:
-
創建一個數據庫用於之後存放博客相關內容,直接新建即可
-
在瀏覽器中輸入ip準備開始配置typecho
-
對數據庫以及相應用戶信息的配置,並把該段php代碼寫在目錄下的config.inc.php文件中
vim /usr/share/nginx/html/config.inc.php
配置成功!!!
問題及解決記錄
- 出現502時參考博客:戳這裏
- 出現mysql訪問不了時參考博客:1,直接用Navicat連接 2,配置plugin密碼