搭建lnmp教程
LNMP指的是一個基於CentOS/Debian 上安裝Nginx、PHP、MySQL、php。可以在獨立主機上輕松的安裝LNMP生產環境。
1 安裝nginx
如果是一臺新的服務器可直接安裝(若以前安裝過apacha和php需要卸載 命令 #yum remove http* php* )
安裝命令
yum -y install nginx
啟動命令
/etc/init.d/nginx start
剛剛買了服務器,測試發現無法啟動報錯 ,解決辦法將default.conf 後綴改掉,這是一個虛擬主機的配置,,後面我們會詳細介紹。
cd /etc/nginx/conf.d
mv default.conf default.conf.back
設置系統啟動自動開啟
chkconfig --level 345 nginx on
安裝nginx之後,我們要搭建一個虛擬主機,方便外網訪問。一臺雲服務器可以創建多個虛擬主機。運行多個網站。我們可以為不同的域名綁定不同的目錄,訪問這個域名的時候,會打開對應目錄裏面的東西。先進入到 nginx 配置文件目錄:
cd /etc/nginx/conf.d
新建一個以.conf結尾的配置文件名字最好以你的配置的域名為名稱例如 www.baidu.com.conf,下面是一個虛擬主機配置,一般情況下只需要改動域名和代碼位置,域名需要在域名管理平臺解析,
代碼本人習慣放在根目錄/home/ 下
server { listen80; server_name www.baidu.com; root /home/baidu; charset utf-8; #access_log /var/log/nginx/log/host.access.log main; location / { index index.html index.htm index.php; try_files $uri $uri/ /index.php?$query_string; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { # root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; client_max_body_size 5000m; } # deny access to .htaccess files, if Apache‘s document root # concurs with nginx‘s one # #location ~ /\.ht { # deny all; #} }
重啟 nginx 或者重新加載 nginx 可以讓配置文件生效。
service nginx reload
或者
service nginx restart
到根目錄/home下,創建代碼目錄,目錄名稱必須跟虛擬主機配置項目錄名稱一致。
cd /home
mkdir baidu
vim baidu/1.html
隨便寫點什麽保存。本人懶推薦****************;現在,打開瀏覽器,輸入你為虛擬主機設置的域名,看看是否能打開你指定的目錄裏的東西。
2 安裝php
根據項目需求安裝php版本。php7.0性能高。
1.檢查當前安裝的PHP包
yum list installed | grep php
如果有安裝的PHP包,先刪除他們
yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mbstring.x86_64 php-mcrypt.x86_64 php-mysql.x86_64 php-pdo.x86_64
2.配置yum源,根據服務器系統版本選擇
Centos 5.X
rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm
?CentOs 6.x
rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
?CentOs 7.X
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm ?rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
3.運行安裝php yum install
安裝php5.5
yum install php55w.x86_64 php55w-cli.x86_64 php55w-common.x86_64 php55w-gd.x86_64 php55w-ldap.x86_64 php55w-mbstring.x86_64 php55w-mcrypt.x86_64 php55w-mysql.x86_64 php55w-pdo.x86_64?
安裝php5.6
yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64
安裝php7.0
yum install php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64 php70w-mysql.x86_64 php70w-pdo.x86_64
4.安裝PHP FPM?
yum install php55w-fpm yum install php56w-fpm yum install php70w-fpm
如果你想在系統啟動時自動運行php-fpm,輸入下列命令:
# chkconfig --level 345 php-fpm on
第一次啟動php-fpm,輸入下列命令:
# /etc/init.d/php-fpm restart
現在,我們已經安裝了 php-fpm,並修改了 nginx 的配置文件讓它可以去執行 php,下面,我們得去測試一下,可以使用 php 的 phpinfo(); 函數,方法是在你的虛擬主機根目錄下面,創建一個 php 文件,命名為 phpinfo.php,然後在這個文件裏輸入:
<?php phpinfo(); ?>
保存並退出,php默認的使用者是apache,需要改為nginx
vim /etc/php-fpm.d/www.conf
將39行 41行的 apache改為nginx
38 ; RPM: apache Choosed to be able to access some dir as httpd 39 user = apache 40 ; RPM: Keep a group allowed to write in log dir. 41 group = apache 改為 38 ; RPM: apache Choosed to be able to access some dir as httpd 39 user = nginx 40 ; RPM: Keep a group allowed to write in log dir. 41 group = nginx
重啟nginx
service nginx restart
瀏覽器打開剛剛的文件,顯示php信息
3 安裝mysql
安裝 mysql
mysql 可以管理網站用到的數據庫,WordPress 和 Drupal 也都支持 mysql 數據庫。所以我們的 Web 運行環境裏,需要安裝一個 mysql 。直接使用 yum 命令去安裝 mysql :
yum install mysql-server
安裝完成後,使用 service 命令啟動 mysql 服務:
service mysqld start
然後我們需要簡單配置一下 mysql ,默認安裝以後 mysql 的 root 用戶是沒有密碼的,對於生產環境來說,這肯定是不行的,另外還有一些安全相關的設置,可以使用下面這行命令去配置一下,它是一個向導,問你一些問題,你要給出答案,比如是否要設置 root 用戶的密碼, 密碼是什麽等等。
mysql_secure_installation
Enter current password for root (enter for none):
解釋:輸入當前 root 用戶密碼,默認為空,直接回車。
Set root password? [Y/n] y
解釋:要設置 root 密碼嗎?輸入 y 表示願意。
Remove anonymous users? [Y/n] y
解釋:要移除掉匿名用戶嗎?輸入 y 表示願意。
Disallow root login remotely? [Y/n] y
解釋:不想讓 root 遠程登陸嗎?輸入 y 表示願意。
Remove test database and access to it? [Y/n] y
解釋:要去掉 test 數據庫嗎?輸入 y 表示願意。
Reload privilege tables now? [Y/n] y
解釋:想要重新加載權限嗎?輸入 y 表示願意。
CentOS下開啟mysql遠程連接, 當服務器沒有運行php、沒裝phpmyadmin的時候,遠程管理mysql就顯得有必要了。
遠程管理數據庫方式有兩種
1 普通鏈接通過3306端口鏈接
mysql -u root -p
在mysql控制臺執行:
grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘123456‘ with grant option;
# root是用戶名,%代表任意主機,‘root‘指定的登錄密碼(這個和本地的root密碼可以設置不同的,互不影響)
flush privileges;# 重載系統權限
exit;
*****允許3306端口****
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
# 查看規則是否生效
iptables -L -n # 或者: service iptables status
# 此時生產環境是不安全的,遠程管理之後應該關閉端口,刪除之前添加的規則
iptables -D INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
PS,上面iptables添加/刪除規則都是臨時的,如果需要重啟後也生效,需要保存修改:
service iptables save # 或者: /etc/init.d/iptables save
另外,
vi /etc/sysconfig/iptables # 加上下面這行規則也是可以的
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
2 通過ssh等通道連接
我使用的是navicae工具
在這裏填上服務器遠程鏈接信息
在這裏填上服務器上的數據庫密碼就可以了。
服務器遠程連接工具推薦xshell,sftp,寫代碼推薦phpstorm;大神們喜歡用vi直接在服務器上寫代碼,但是我還是喜歡這些工具, 工具是人類進步的階梯嘛!
搭建lnmp教程