從事前端開發已3年有餘,愈來愈發現前端開發要學習的知識已不只僅是html+css+js那麼簡單了,2017年市場上就有了大前端的概念,能夠說對前端工程師的要求也愈來愈高了,從招聘的要求中能夠看到熟悉一門後端語言能夠說是標配了。因爲目前公司用的後臺語言是PHP,藉此機會充分鍛鍊了個人PHP技能。現在不只要對PHP語言熟悉,還要熟悉公司整個架構,今天我經過在WIN7上安裝的虛擬機上練習了下搭建LNMPA架構,順便作下筆記。php
須要在官網上下載如下軟件css
網卡設置前先查詢主機的網絡ip
cmd ipconfig /all
分別記下本地鏈接的ipv4地址、子網掩碼、網關
登陸centos虛擬主機後html
cd /etc/sysconfig/network-scripts/ ls
通常第一個就是本身的網卡,我這裏是ifcfg-enp0s3前端
vi ifcfg-enp0s3
添加如下內容mysql
BOOTPROTO="dhcp"//改成"static" IPADDR="10.0.5.100"//設置爲與ipv4地址在同一網段 NETMASK="255.255.0.0"//設置子網掩碼 GATEWAY="10.0.0.1"//設置網關
執行linux
systemctl restart network.service //重啓網絡
此時測試主機和虛擬機是否可互相ping通ios
firewall-cmd --zone=public --add-port=22/tcp --permanent //開啓22端口 systemctl restart firewalld.service //重啓防火牆
設置防火牆容許http服務nginx
firewall-cmd --add-service=http --permanent firewall-cmd --reload
此時可在xshell上遠程登陸虛擬主機了web
ssh username@10.0.5.100
sudo yum -y install httpd
安裝完成後,修改配置文件,sql
vi /etc/httpd/conf/httpd.conf
把 ServerName 前的 # 去掉,並修改成:ServerName 127.0.0.1 並保存
重啓apache
sudo apachectl restart
在主機瀏覽器中輸入10.0.5.100便可看到apache測試頁面(須要開啓80端口)
sudo yum -y install mysql mariadb-server
安裝完成後,啓動 MySQL:
sudo systemctl start mariadb.service
接下來開始初始化 MySQL,並按照提示設置 MySQL中的 root 用戶的密碼及其餘配置:
sudo mysql_secure_installation
配置以下
Enter current password for root (enter for none) (按回車) Set root password? [Y/n] (輸入 Y:回車) New password: (輸入新密碼,回車) Re-enter new password: (再次輸入新密碼,回車) Remove anonymous users? [Y/n] (輸入 Y:回車) Disallow root login remotely? [Y/n] (輸入 Y:回車) Remove test database and access to it? [Y/n] (輸入 Y:回車) Reload privilege tables now? [Y/n] (輸入 Y:回車)
登陸mysql
mysql -u root -p
安裝epel
sudo yum -y install epel-release
更換rpm源
sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
安裝php7.0
sudo yum -y install php70w
安裝結束後,重啓 Apache
sudo apachectl restart
在 Apache 的默認網站目錄添加 phpinfo.php 文件,
vi /var/www/html/phpinfo.php //添加如下內容 <?php phpinfo(); ?>
systemctl enable httpd.service systemctl enable mariadb.service
至此,LAMP 環境搭建完成!
此步驟接上,爲了不衝突,先關閉 Apache: sudo systemctl stop httpd.service
CentOS 官方 rpm 源是沒有 nginx 安裝包的,須要手動添加,
cd /etc/yum.repos.d/ vi nginx.repo
往 nginx.repo 文件裏添加以下代碼:
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch gpgcheck=0 enabled=1
保存後,便可開始安裝 Nginx,
sudo yum -y install nginx
安裝結束後,啓動 Nginx,記得先關閉 Apache
sudo systemctl start nginx.service
此時用瀏覽器訪問10.0.5.100便可看到Welcome to nginx!
sudo yum -y install php-fpm
開啓php-fpm
sudo systemctl start php-fpm.service
編輯 Nginx 的默認配置文件 default.conf
sudo vim /etc/nginx/conf.d/default.conf
把 default.conf 文件中 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 這一行下面的 # 註釋去掉,並修改 root 後面的目錄爲:/usr/share/nginx/html;(此目錄爲 Nginx 的默認網站目錄),修改 SCRIPT_FILENAME 後的參數爲:$document_root$fastcgi_script_name;
重啓 Nginx, systemctl restart nginx.service
一樣,在 Nginx 的默認網站目錄下添加 phpinfo.php 文件,在瀏覽器中可瀏覽php相關信息
systemctl enable httpd.service systemctl enable mariadb.service
至此,LNMP 環境搭建完成!
Apache用戶基數大,穩定,兼容性高,在處理動態 php 頁面時,mod_php 模塊也比 php-cgi 模塊更穩定更高效。
Apache過於臃腫以及對靜態文件響應過於緩慢讓不少使用者感到頭疼
Nginx 對於高併發性能出衆,Proxy 功能強效率高,佔用系統資源少
Nginx在處理 php 腳本時須要經過 php-fpm(FastCGI) 解析,而 php-fpm 不夠穩定,常常出現 502 錯誤,生成相對複雜的頁面沒有優點,反而會使 php-cgi 進程變爲殭屍進程。
不少大型的網站都是採用 Nginx 前端 + Apache 後端的服務器架構,這樣能夠很好地結合了 Nginx 高併發和靜態頁面高效率以及 Apache 穩定的動態頁面處理特色,不再用擔憂 Nginx 以 FastCGI 模式運行 PHP 時的502問題和 Apache 處理靜態頁面過慢、負載太高的問題。
編輯 Nginx 的默認配置文件
sudo vim /etc/nginx/conf.d/default.conf
註釋掉以前 FastCGI 監聽的配置,並添加Apache對php腳本的監聽
# proxy the PHP scripts to Apache listening on 127.0.0.1:80 # location ~ \.php$ { proxy_pass http://127.0.0.1:8080; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root /usr/share/nginx/html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # include fastcgi_params; #}
編輯 Apache 的配置文件
sudo vim /etc/httpd/conf/httpd.conf
找到 Listen 字段,並改成:Listen 127.0.0.1:8080,讓 Apache 來監聽這個端口,修改 Apache 的網站根目錄爲:/usr/share/nginx/html,與上述 Nginx 對應的網站目錄保持一致
重啓 Nginx ,Apache 服務,並確保這兩個服務開機自啓:
sudo systemctl restart httpd.service sudo systemctl restart nginx.service systemctl enable httpd.service systemctl enable nginx.service
發現出現 502 Bad Gateway
經查閱相關資料發現是因爲開啓了 selinux 服務致使的,關閉 selinux 便可。
sudo vim /etc/selinux/config
SELINUX=disabled
修改保存後,經過 reboot 命令重啓 CentOS 服務器
至此,LNMP + Apache 架構配置完成!可經過瀏覽器查看http://10.0.5.100/phpinfo.php來確認
補充
儘管此時LNMP+Apache架構已搭建完,可是在開發的過程當中咱們仍舊不方便,由於咱們通常都在本地開發,但是如何讓文件在linux服務器上運行呢?咱們總不能又在本地搭建一套環境吧,
利用samba就能夠解決上面遇到的問題,讓本地開發的代碼用虛擬機中搭建好的環境跑起來,
1.安裝samba
yum install samba -y
cd /etc/samba cp smb.conf smb.conf.bak 備份一份再說 vim smb.conf 把多餘的註釋去掉,增長以下的配置 [global] #---------------------全局設置 workgroup = ranfeng #------------工做組和windows工做組性質同樣 server string = 測試samba %v #-----服務一種描述,能夠隨意寫 netbios name = ranfeng #-----這個netbios名,這個如今不重要 security = user #這個是驗證方式,user是密碼登陸,不支持share和server,設置user後加入下面一句話 map to guest = Bad User # [share] path = /usr/share/web available = yes browseable = yes public = yes writable = yes
創建Samba用戶及密碼
useradd sambauser
smbpasswd -a sambauser
啓動服務
smbd start
添加進開機啓動
chkconfig smb on
編輯/etc/selinux/config
將 SELINUX=enforcing 改爲 SELINUX=disabled
至此就能夠在window上經過磁盤映射將linux上共享的目錄掛載到window上,這樣咱們在這個磁盤上全部的修改與建立都在虛擬機linux能夠看到
Win7 下 VMware 虛擬機中安裝 CentOS 服務器
CentOS 6.7下 Samba服務器的搭建與配置
https://www.jianshu.com/p/b35f59109c2e