LNMP表明的就是:Linux系統下Nginx+MySQL+PHP這種網站服務器架構。Linux是一類Unix計算機操做系統的統稱,是目前最流行的免費操做系統。表明版本有:debian、centos、ubuntu、fedora、gentoo等。Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器。Mysql是一個小型關係型數據庫管理系統。PHP是一種在服務器端執行的嵌入HTML文檔的腳本語言。這四種軟件均爲免費開源軟件,組合到一塊兒,成爲一個免費、高效、擴展性強的網站服務系統。php
使用Mac的程序員必不可少的一步即是安裝Homebrew,他就像是centOS的yum
命令和ubuntu的apt-get
命令同樣,經過brew
命令,咱們能夠快速的安裝一些軟件包。 使用命令行安裝Homebrew的命令以下:html
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
使用命令檢查是否存在衝突:mysql
brew doctor
而後使用使用命令對brew進行升級:nginx
brew update && brew upgrade
nginx在Mac OS中能夠直接使用brew命令進行安裝:git
brew install nginx
若是須要使用80端口的話,須要將nginx加入root組當中:程序員
sudo cp -v /usr/local/opt/nginx/*.plist /Library/LaunchDaemons/ sudo chown root:wheel /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
而後使用命令啓動nginx服務:github
sudo nginx
測試nginx是否安裝成功,由於默認配置文件監聽的是8080
端口,因此先對8080
端口發起請求:sql
curl -IL http://127.0.0.1:8080
結果應該相似於下:數據庫
HTTP/1.1 200 OK Server: nginx/1.9.1 Date: Fri, 29 May 2017 14:50:47 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Fri, 29 May 2015 14:40:47 GMT Connection: keep-alive ETag: "5444dea7-264" Accept-Ranges: bytes
nginx的相關操做以下:ubuntu
sudo nginx //啓動nginx sudo nginx -s reload|reopen|quit //從新加載|重啓|退出
Mac 自帶 php-fpm,在終端執行命令:
php-fpm
會報以下錯誤:
ERROR: failed to open configuration file '/private/etc/php-fpm.conf': No such file or directory (2) ERROR: failed to load configuration file '/private/etc/php-fpm.conf' ERROR: FPM initialization failed
錯誤信息顯示,不能打開配置文件,cd /private/etc,發現沒有 php-fpm.conf 文件,可是有 php-fpm.conf.default 文件。這個文件是默認配置,咱們能夠複製一份,更名爲 php-fpm.conf,而後再根據須要改動配置。
cp /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf
執行 php-fpm,再次報錯:
ERROR: failed to open error_log (/usr/var/log/php-fpm.log): No such file or directory (2) ERROR: failed to post process the configuration ERROR: FPM initialization failed
錯誤信息顯示,不能打開錯誤日誌文件。cd /usr/var/log 發現根本沒有這個目錄,甚至連 var 目錄都沒有,加上爲了不權限問題,乾脆配置到 /usr/local/var/log 目錄。
修改 php-fpm.conf error_log 配置爲 /usr/local/var/log/php-fpm.log
,並把 user 和 group 改成和當前用戶同樣。
執行 php-fpm,再次報錯:
NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root
因而 sudo php-fpm,再次報錯:
ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (48) ERROR: FPM initialization failed
編輯 www.conf,修改 listen 爲 127.0.0.1:9999。
sudo vim /private/etc/php-fpm.d/www.conf
最後開啓php-fpm:
sudo php-fpm -D #啓動成功
MySQL也可使用brew命令直接進行安裝:
brew install mysql
一樣,能夠設置MySQL的開機自啓動:
ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
而後執行:
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
啓動 MySQL:
mysql.server start
而後進行MySQL的安全安裝,使用如下命令,能夠更改root密碼、刪除匿名用戶、關閉遠程鏈接等:
mysql_secure_installation
而後會輸出如下內容:
> Enter current password for root (enter for none): //默認沒有密碼,直接回車便可 > Change the root password? [Y/n] //是否更改root密碼,選擇是,而後輸入並確認密碼 > Remove anonymous users? [Y/n] //是否刪除匿名用戶,選擇是 > Disallow root login remotely? [Y/n] //是否禁止遠程登陸,選擇是 > Remove test database and access to it? [Y/n] //是否刪除test數據庫,選擇是 > Reload privilege tables now? [Y/n] //是否重載表格數據,選擇是
測試數據庫是否安裝成功:
mysql -u root -p
而後輸入剛纔設置的root密碼,將會輸出如下內容:
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> exit //輸入exit退出數據庫
設置字符集:
SET NAMES 'utf8'; # 上面這一條就至關於下面的三句指令: # SET character_set_client = utf8; # SET character_set_results = utf8; # SET character_set_connection = utf8;
MySQL7.0版本以上至少要8位及以上的密碼,若是想設置123456怎麼辦?
先登陸到mysql的命令界面,修改validate_password_policy參數的值:
mysql> set global validate_password_policy=0; Query OK, 0 rows affected (0.00 sec)
這樣,判斷密碼的標準就基於密碼的長度了。這個由validate_password_length參數來決定。
mysql> select @@validate_password_length; +----------------------------+ | @@validate_password_length | +----------------------------+ | 8 | +----------------------------+ 1 row in set (0.00 sec)
validate_password_length參數默認爲8,它有最小值的限制,最小值爲:
validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)
其中,validate_password_number_count指定了密碼中數據的長度,validate_password_special_char_count指定了密碼中特殊字符的長度,validate_password_mixed_case_count指定了密碼中大小字母的長度。
這些參數,默認值均爲1,因此validate_password_length最小值爲4,若是你顯性指定validate_password_length的值小於4,儘管不會報錯,但validate_password_length的值將設爲4。以下所示:
mysql> select @@validate_password_length; +----------------------------+ | @@validate_password_length | +----------------------------+ | 8 | +----------------------------+ 1 row in set (0.00 sec) mysql> set global validate_password_length=1; Query OK, 0 rows affected (0.00 sec) mysql> select @@validate_password_length; +----------------------------+ | @@validate_password_length | +----------------------------+ | 4 | +----------------------------+ 1 row in set (0.00 sec)
若是修改了validate_password_number_count,validate_password_special_char_count,validate_password_mixed_case_count中任何一個值,則validate_password_length將進行動態修改。
mysql> select @@validate_password_length; +----------------------------+ | @@validate_password_length | +----------------------------+ | 4 | +----------------------------+ 1 row in set (0.00 sec) mysql> select @@validate_password_mixed_case_count; +--------------------------------------+ | @@validate_password_mixed_case_count | +--------------------------------------+ | 1 | +--------------------------------------+ 1 row in set (0.00 sec) mysql> set global validate_password_mixed_case_count=2; Query OK, 0 rows affected (0.00 sec) mysql> select @@validate_password_mixed_case_count; +--------------------------------------+ | @@validate_password_mixed_case_count | +--------------------------------------+ | 2 | +--------------------------------------+ 1 row in set (0.00 sec) mysql> select @@validate_password_length; +----------------------------+ | @@validate_password_length | +----------------------------+ | 6 | +----------------------------+ 1 row in set (0.00 sec)
最後,登陸mysql修改密碼:
MySQL -u root -p mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');
首先,爲咱們的配置文件建立一些文件夾,這些是仿照ubuntu的nginx結構進行創建的目錄:
mkdir -p /usr/local/etc/nginx/logs mkdir -p /usr/local/etc/nginx/sites-available mkdir -p /usr/local/etc/nginx/sites-enabledmkdir -p /usr/local/etc/nginx/ssl sudo mkdir -p /var/www sudo chown :staff /var/www sudo chmod 775 /var/www
而後修改nginx配置文件:
vim /usr/local/etc/nginx/nginx.conf
將內容替換爲:
worker_processes 1; error_log /usr/local/etc/nginx/logs/error.log debug; events { worker_connections 256; } http { include mime.types; #default_type application/octet-stream; default_type text/html; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /usr/local/etc/nginx/logs/access.log main; sendfile on; keepalive_timeout 65; include /usr/local/etc/nginx/sites-enabled/*.conf; }
而後加入默認站點配置文件:
vim /usr/local/ect/nginx/sites-enabled/default.conf
輸入如下內容:
server { listen 80; server_name localhost; root /Applications/MAMP/htdocs/www/default/; access_log /usr/local/etc/nginx/logs/default.access.log main; location / { root /Applications/MAMP/htdocs/www/default/; index index.html index.php; } location ~ \.php$ { try_files $uri = 404; fastcgi_pass 127.0.0.1:9000; # fastcgi_pass unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } error_page 404 /404.html; error_page 403 /403.html; }
而後加入第二個站點配置文件,實現多站點支持:
vim /usr/local/ect/nginx/sites-enabled/pengyunjing.conf
寫入內容:
server { listen 80; server_name test.pengyunjing.com; root /Applications/MAMP/htdocs/www/pengyunjing/; access_log /usr/local/etc/nginx/logs/default.access.log main; location / { root /Applications/MAMP/htdocs/www/pengyunjing/; index index.html index.php; } location ~ \.php$ { try_files $uri = 404; fastcgi_pass 127.0.0.1:9000; # fastcgi_pass unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } error_page 404 /404.html; error_page 403 /403.html; }
若是是本地測試,配置多站點記住要修改本地hosts文件,路徑:
/private/etc/hosts
補充:
nginx配置文件路徑:
/usr/local/etc/nginx/nginx.conf
nginx命令:
從新綁定配置文件: sudo /usr/local/bin/nginx -c /usr/local/etc/nginx/nginx.conf 判斷配置文件是否正確: sudo /usr/local/bin/nginx -t 啓動: sudo /usr/local/bin/nginx 重啓: sudo /usr/local/bin/nginx -s reload 查詢nginx主進程號: ps -ef|grep nginx 正常中止進程: sudo kill -QUIT 主進程號 快速中止進程: sudo kill -TERM 主進程號 強制終止進程: kill -9 進程號 快捷強制關閉nginx進程: sudo pkill -INT -o nginx
php-fpm配置文件路徑:
/private/etc/php-fpm.conf
php-fpm命令:
查看進程: ps aux | grep 'php-fpm' 啓動php-fpm: sudo php-fpm -D 強制終止進程: kill -9 進程號 快捷強制關閉php-fpm進程: sudo pkill -INT -o php-fpm
至此,配置完成,在www下寫一個測試文件,進行測試便可,若是瀏覽器出現502的錯誤,可能9000端口有衝突,終止nginx和php-fpm的進程再從新啓動如下試試。