摘要:包括安裝與下載,證書申請與配置,升級到,服務器的簡單配置。這對一個應用來說,所造成的后果無疑是毀滅性的。然后在新建一個目錄,將剛才的文件放進去,便于統一管理其中紅色框框的是要用到文件。
原文地址: here
在部署自己的博客到 LEMP 環境的時候,遇到了一些小挫折,現在把經驗分享出來,讓大家少走彎路。包括Php7.1安裝與下載,SSL證書申請與配置,Mysql升級到5.7,Nginx服務器的簡單配置。Let"s start.
安裝 Php 7.1注:本教程環境:Ubuntu 14.04.4 LTS (GNU/Linux 3.13.0-86-generic x86_64)
首先用SSH連接到你的服務器,Windows 用戶建議使用 SecureCRT 來連接,這是一個收費軟件,請自行搜索 破解版 。
安裝 Php7.1 之前,要先安裝language-pack-en-base這個包,運行:
sudo apt-get update sudo apt-get install -y language-pack-en-base
這個包是為了解決系統不同語言之間可能發生的沖突,安裝之后可以減少許多因語言編碼帶來的問題。其中-y參數表明直接安裝,無需確認。
安裝完成之后,運行:
locale-gen en_US.UTF-8
設定語言編碼為UTF-8。
接下來安裝Git,Vim,運行:
sudo apt-get install git vim
Git 是必備的,你可以很方便的使用Git來拉取遠程倉庫的代碼,vim是一款強大的編輯器,可以幫助你修改一些配置文件,如.env文件,如果的你的服務器已經安裝了vim編輯器,可以忽略。
進入正題,安裝Php7.1,本教程采用ppa方式安裝php7.1,運行:
sudo apt-get install software-properties-common
software-properties-common是add-apt-repository所依賴的包,安裝成功后,運行:
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
來添加php7的ppa,注意LC_ALL=en_US.UTF-8參數告訴我們系統語言為UTF-8,如果沒有,可能會出現錯誤,如阿里云的服務器。
安裝完成之后,運行sudo apt-get update更新安裝包,把剛才添加的包拉取下來。
運行apt-cache search php7.1搜索php7.1開頭的包檢驗是否安裝成功,輸出如下:
root@demo:~# apt-cache search php7.1 php-yaml - YAML-1.1 parser and emitter for PHP php-apcu - APC User Cache for PHP php-ssh2 - Bindings for the libssh2 library php-igbinary - igbinary PHP serializer php-mailparse - Email message manipulation for PHP php-libsodium - PHP wrapper for the Sodium cryptographic library php-propro - propro module for PHP php-raphf - raphf module for PHP ....................省略...........................2. 安裝:
安裝php7.1:
sudo apt-get -y install php7.1
安裝成功后運行php -v查看是否安裝成功,成功的話會輸出類似如下信息:
PHP 7.1.0beta2 (cli) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.1.0beta2, Copyright (c) 1999-2016, by Zend Technologies
安裝php7.1-mysql,這是 Php7.1 與 mysql 的通信模塊:
sudo apt-get -y install php7.1-mysql
安裝 fpm,這是Nginx 用來解析php文件的:
sudo apt-get install php7.1-fpm
安裝其他必備模塊:
apt-get install php7.1-curl php7.1-xml php7.1-mcrypt php7.1-json php7.1-gd php7.1-mbstring
至此與php相關的模塊安裝安裝完成。
安裝Mysql直接安裝Mysql5.7吧,5.7 可以說是里程碑式的版本,提高了性能,并增加了很多新的特性。特別是新增加的json字段,用過之后你會愛上她的!!
1. 下載.deb包到你的服務器:MySQL 開發團隊于 9.12 日宣布 MySQL 8.0.0 開發里程碑版本(DMR)發布!但是目前 8.0.0 還是開發版本,如果你希望體驗和測試最新特性,可以從 http://dev.mysql.com/download... 下載各個平臺的安裝包。不過,MySQL 軟件包是越來越大了,Linux 平臺上的二進制打包后就將近有 1 GB。如果在產品環境中使用,在 8.0 沒有進入穩定版本之前,請繼續使用 5.7 系列,當前最新的版本是 5.7.15 GA 版本——這只有 600 M 多。
wget http://dev.mysql.com/get/mysql-apt-config_0.5.3-1_all.deb2. 然后使用dpkg命令添加Mysql的源:
sudo dpkg -i mysql-apt-config_0.5.3-1_all.deb
注意在添加源的時候,會叫你選擇安裝 MySQL 哪個應用,這里選擇 Server 即可,再選擇 MySQL 5.7 后又會回到選擇應用的那個界面,此時選擇 Apply 即可。
3. 安裝sudo apt-get update sudo apt-get install mysql-server
安裝完成之后運行mysql -V查看版本:
root@demo:~# mysql -V mysql Ver 14.14 Distrib 5.7.15, for Linux (x86_64) using EditLine wrapper4. 注意
如果你已經通過 ppa 的方式安裝了 MySQL 5.6,首先得去掉這個源。
sudo apt-add-repository --remove ppa:ondrej/mysql-5.6 # 如果沒有 apt-add-repository 先安裝上 # sudo apt-get install software-properties-common
然后其它和上面一樣,但最后要運行sudo mysql_upgrade -u root -p 升級數據庫,運行sudo service mysql restart重啟數據庫,這樣你的數據會完好無缺(不出意外的話)。
安裝Nginx簡單,運行:
sudo apt-get -y install nginx
即可,然后運行curl localhost查看是否運行成功。你也可以直接訪問你的IP地址,如下:
配置 1. 配置php:sudo vim /etc/php/7.1/fpm/php.ini
輸入/fix_pathinfo搜索,將cgi.fix_pathinfo=1改為cgi.fix_pathinfo=0:
2. 編輯fpm的配置文件:Why ? 假設有如下的 URL:http://phpvim.net/foo.jpg,當訪問 http://phpvim.net/foo.jpg/a.php 時,foo.jpg 將會被執行,如果 foo.jpg 是一個普通文件,那么 foo.jpg 的內容會被直接顯示出來,但是如果把一段 php 代碼保存為 foo.jpg,那么問題就來了,這段代碼就會被直接執行。這對一個 Web 應用來說,所造成的后果無疑是毀滅性的。具體參看:http://www.cnblogs.com/buffer...
運行:
sudo vim /etc/php/7.1/fpm/pool.d/www.conf
找到listen = /run/php/php7.1-fpm.sock修改為listen = /var/run/php/php7.1-fpm.sock。當然,你也可以不修改,但必須前后一致,后面會用到這個配置。
3. 配置Nginx:運行:
sudo vim /etc/nginx/sites-available/default
主要是配置server這一部分,最終配置如下:
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /var/www/your-project-name/public; index index.php index.html index.htm; # Make site accessible from http://localhost/ server_name lufficc.com www.lufficc.com; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.php?$query_string; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } location ~ .php$ { try_files $uri /index.php =404; fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.1-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
解釋:
root:是你的項目的public目錄,也就是網站的入口
index:添加了,index.php,告訴Nginx先解析index.php文件
server_name:你的域名,沒有的話填寫localhost
location / try_files修改為了try_files $uri $uri/ /index.php?$query_string;
location ~ .php$部分告訴Nginx怎么解析Php,原封不動復制即可,但注意:fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;的目錄要和fpm的配置文件中的listen一致。
4. 創建網站目錄,Laravel項目:如果你還沒有/var/www目錄,運行mkdir /var/www,然后將Nginx的用戶名和用戶組www-data分配給它:
sudo chown -R www-data:www-data
然后進入到/var/www/目錄,cd /var/www/。這個www目錄就是放置你的網站文件的目錄(可以多個)。
下面以laravel-blog為例,先clone我的laravel-blog,在/var/www/目錄下運行:
git clone https://github.com/lufficc/laravel-blog.git
這會生成在/var/www/目錄下生成laravel-blog目錄,注意此時上面的Nginx配置的root要和這個一致,當前配置應該是root /var/www/laravel-blog/public;,而不再是root /var/www/your-project-name/public;。
然后composer update,配置.env,數據庫連接,沒有安裝Redis的話安裝Redis:apt-get install redis-server。
再次給予目錄權限,運行(在/var/www/laravel-blog下面):
sudo chmod -R 775 storage/ sudo chown -R www-data:www-data /var/www/laravel-blog
運行ll,結果如下:
最后!!重啟nginx,fpm,訪問你的ip地址,不出意外,安裝成功,部署完成!
sudo service nginx restart sudo service php7.1-fpm restart小結
啰嗦了那么長,其實實際配置起來很簡單,把下面的命令復制,依次運行即可完成大部分的配置,然后再簡單修改一下配置文件即可:
# 安裝php7.1 sudo apt-get update sudo apt-get install -y language-pack-en-base locale-gen en_US.UTF-8 sudo apt-get install software-properties-common sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get -y install php7.1 sudo apt-get -y install php7.1-mysql sudo apt-get install php7.1-fpm apt-get install php7.1-curl php7.1-xml php7.1-mcrypt php7.1-json php7.1-gd php7.1-mbstring # 安裝mysql5.7 wget http://dev.mysql.com/get/mysql-apt-config_0.5.3-1_all.deb sudo dpkg -i mysql-apt-config_0.5.3-1_all.deb sudo apt-get update sudo apt-get install mysql-server # 安裝nginx sudo apt-get -y install nginxHttps(
如果你熟悉Let’s Encrypt,可以跳過了,本教程使用的是免費的,配置更簡單的startssl。
去官網注冊:https://www.startssl.com/, startssl免費還是很誘惑人的哈:
登錄后之后進去主頁,點擊Validations Wizard,選擇第一項Domain Validation (for SSL certificate),點擊Continue驗證你是否是域名的主人:
然后點擊將驗證信息發送到你的郵箱,輸入驗證碼繼續
驗證成功,startssl認為你就是域名的所有者,此時進行下一步操作:
點擊Certificates Wizard,選擇第一項:
輸入所有你想要ssl的域名,例如static子域名,blog子域名:
3.生成 CSR (Certificate Signing Request ) key:復制openssl req -newkey rsa:2048 -keyout yourname.key -out yourname.csr到你的服務器命令行,:
填寫你的信息:
然后會生成兩個文件:
運行cat lufficc.csr復制lufficc.csr的內容到上面的輸入框,點擊Submit:
此時你的證書已經生成功,點擊下載即可下載到本地。
下載完成后解壓,會有四個文件,對應不同軟件,這里我們只需要Nginx的就行:
4. 解密私鑰點擊startssl的Tool Box下的Decrypt Private Key,輸入lufficc.key(剛才命令行生成的.key結尾的文件)文件內容和你剛才設置的密碼(剛才命令行設置的密碼),點擊解密
復制解壓后的內容,運行vim lufficc_de.key生成一個新文件,復制進去解壓后的key,保存。
然后在新建一個目錄/etc/nginx/ssl,將剛才的文件放進去,便于統一管理:
其中紅色框框的是要用到文件。
5. 配置Nginx運行sudo vim /etc/nginx/sites-available/default,翻到最下面注釋掉的HTTPS server,最終配置如下:
server { listen 443; server_name lufficc.com www.lufficc.com; root /var/www/your-project-name/public; index index.php index.html index.htm; ssl on; ssl_certificate /etc/nginx/ssl/1_lufficc.com_bundle.crt; ssl_certificate_key /etc/nginx/ssl/lufficc_de.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 24h; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { try_files $uri /index.php =404; fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.1-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
和http配置基本一樣,區別是
ssl on; ssl_certificate /etc/nginx/ssl/1_lufficc.com_bundle.crt; ssl_certificate_key /etc/nginx/ssl/lufficc_de.key;
要和你的目錄一致。接下來在80端口的http server中添加跳轉,return 301 https://lufficc.com;這樣當別人用http 協議訪問你的站點時,會自動調轉到https,如下:
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /var/www/laravel/public; index index.php index.html index.htm; # Make site accessible from http://localhost/ server_name lufficc.com www.lufficc.com *.lufficc.com; return 301 https://lufficc.com; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.php?$query_string; ....................省略...........................
最后,測試一行nginx的配置是否正確,運行sudo service nginx configtest:
重新加載并重啟nginx:
sudo service nginx reload sudo service nginx restart
測試通過,訪問你的站點,看有沒有加上那把別致的小綠鎖?
至此,教程結束。最終效果這里查看。
結語寫了那么長的教程,看起來很負責,但只是我啰嗦而已,你把上面的命令一敲,軟件安裝都很簡單,在進行一些簡單的配置即可,如果你熟悉整個流程的話,其實沒有那么復雜。有問題歡迎在評論指出。
Have a nice day!
注:轉載請注明出處!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30470.html
摘要:不過因為各個平臺互相挖人的關系,導致關注的一些主播分散到了各個直播平臺,來回切換有點麻煩,所以萌生了做一個視頻聚合站的想法。后續我們會對這三個部分的功能做逐一展開說明。正則處理要求比較高,但是幾乎能應對所有的情況,屬于大殺器。 前言 作為一個爐石傳說玩家,經常有事沒事開著直播網站看看大神們的精彩表演。不過因為各個平臺互相挖人的關系,導致關注的一些主播分散到了各個直播平臺,來回切換有點麻...
摘要:查找保存下載用搭建自己的緩存倉庫權限管理的好選擇基于封裝的后臺管理系統,支持手機和端訪問支付寶風格的驗證器后臺系統微信接口的部署腳本開發的博客系統百度推送自動記錄用戶行為擴展一個項目管理系統根據生成對應導航的狀態 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...
摘要:箭頭表示數據的流動,負責儲存收藏夾的內容,方便下一次打開應用的時候內容不會丟失,服務器負責根據關鍵字爬取搜狗提供的數據。 只看不贊,或者只收藏不贊的都是耍流氓,放學別走,我找我哥收拾你們。 項目地址:https://github.com/jrainlau/wechat-subscriptor showImg(https://segmentfault.com/img/bVyFVF); s...
閱讀 1339·2021-11-11 16:54
閱讀 2385·2021-09-22 10:51
閱讀 2655·2019-08-30 15:44
閱讀 3206·2019-08-29 17:05
閱讀 1445·2019-08-29 17:01
閱讀 2900·2019-08-29 12:28
閱讀 2471·2019-08-26 13:50
閱讀 1731·2019-08-23 16:47