Linux 教你使用shell腳本15分鐘部署LNMP

2018-07-31 14:42 更新

防偽碼:我喜歡出發(fā),只為到達的地方都屬于昨天!

         老司機教你使用shell腳本15分鐘部署LNMP

一、環(huán)境簡介

1、LNMP,顧名思義,就是Linux系統(tǒng)下Nginx+MySQL+PHP的一種網(wǎng)站服務器架構(gòu)。

2、Linux是目前最流行的免費操作系統(tǒng),代表版本有debian、centos、fedora、gentoo等,

今天我們使用CentOS-6.5作為LNMP架構(gòu)的基礎。

3、Nginx是一個高性能的HTTP和反向代理服務器,其性能穩(wěn)定、功能豐富、運維簡單、處理靜態(tài)文件速度快且消耗系統(tǒng)資源極少。

4、MySQL憑借其高性能、高可靠和易于使用的特性,成為服務器領域中最受歡迎的開源數(shù)據(jù)庫系統(tǒng)

5、PHP是一種在服務器端執(zhí)行的嵌入HTML文檔的腳本語言

綜上所述、這四種免費開源的軟件,組合到一起,成為一個免費、高效、擴展性強的網(wǎng)站服務系統(tǒng)。

二、實驗步驟

1、實驗基礎

1)開啟一臺CentOS-6.5虛擬機,掛載系統(tǒng)光盤(/media下),復制到/a下。

2)掛載Nginx光盤到/media下

3)為保證后續(xù)實驗暢通,我們將yum的相關配置文件刪除

4)為了使Nginx服務的啟動、停止、重載等操作更加方便,可以編寫Nginx服務腳本,并使用chkconfig和

service工具進行管理。

注:kill -s QUIT $(cat $PIDF)表示根據(jù)PID終止Nginx進程

注:kill -s HUP $(cat $PIDF)表示根據(jù)進程號重載配置

注:此腳本可以使php-fpm進程隨著Nginx進程啟動/停止(加在nginx服務腳本的后面,即esac的后面)

2、編寫腳本,自動化部署LNMP平臺的web應用(博文附件里我會上傳一份)

1)查看腳本,稍后我們詳解(vi 123.sh)

2)詳解腳本

第一部分:搭建yum倉庫

1
2
3
4
5
6
yum="[yum]                //倉庫類別
name=1111111                //倉庫名稱
baseurl=file:///a                //url訪問路徑
enabled=1                //啟用此軟件倉庫
gpgcheck=0"                //驗證軟件包的簽名
echo "$yum" >> /etc/yum.repos.d/abc.repo                //將變量追加給yum配置文件


第二部分:安裝pcre-devel、zlib-devel(軟件開發(fā)包,提供相應的庫和頭文件,確保Nginx安裝順利完成),

libxml2-devel、gd、libjpeg-devel、libpng-devel(php及后續(xù)web應用的安裝包)

通過查詢,如果系統(tǒng)安裝過,提示已安裝xxx;否則則安裝

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
pcredevel=$(rpm -qa | grep pcre-devel)
if [ $? -eq 0 ]
then
echo "yianzhuang pcre-devel"
else
yum -y install pcre-devel
fi
libxml2devel=$(rpm -qa | grep libxml2-devel)
if [ $? -eq 0 ]
then
echo "yianzhuang libxml2-devel"
else
yum -y install libxml2-devel
fi
zlibdevel=$(rpm -qa | grep zlib-devel)
if [ $? -eq 0 ]
then
echo "yianzhuang zlib-devel"
else
yum -y install zlib-devel
fi
gd=$(rpm -qa | grep gd)
if [ $? -eq 0 ]
then
echo "yianzhuang gd"
else
yum -y install gd
fi
libjpegdevel=$(rpm -qa | grep libjpeg-devel)
if [ $? -eq 0 ]
then
echo "yianzhuang libjpeg-devel"
else
yum -y install libjpeg-devel
fi
libpngdevel=$(rpm -qa | grep libpng-devel)
if [ $? -eq 0 ]
then
echo "yianzhuang libpng-devel"
else
yum -y install libp
1
2
ng-devel
fi


第三部分:統(tǒng)一解包

1
2
3
4
5
6
7
8
9
cd /media
tar zxf php-5.3.28.tar.gz -C /
tar zxf mysql-5.5.38.tar.gz -C /
tar zxf nginx-1.6.2.tar.gz -C /
tar zxf cmake-2.8.12.tar.gz -C /
tar zxf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz -C /        //提高php程序的執(zhí)行效率,優(yōu)化頁面加載速度
cp SKYUC_3.4.2_for_php5.3.zip /            //解壓縮天空網(wǎng)絡電影系統(tǒng)源代碼
cd /
unzip SKYUC_3.4.2_for_php5.3.zip


第四部分:安裝Nginx并做訪問狀態(tài)統(tǒng)計

1
2
3
4
5
6
7
8
9
10
11
12
13
cd /nginx-1.6.2/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module(支持狀態(tài)統(tǒng)計,便于查看服務器的連接信息)
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin            //創(chuàng)建鏈接文件
cd /media
cp nginx /etc/init.d/nginx
chmod +x /etc/init.d/nginx
chkconfig --add nginx            //添加為系統(tǒng)服務
chkconfig --level 35 nginx on            //35級別自啟
useradd -M -s /sbin/nologin nginx            //創(chuàng)建運行用戶,以便更準確的控制其訪問權(quán)限,增加靈活性,降低安全風險
sed -i '48 i\location /status {' /usr/local/nginx/conf/nginx.conf            //訪問位置為/status
sed -i '49 i\stub_status on ;' /usr/local/nginx/conf/nginx.conf            //打開狀態(tài)統(tǒng)計功能
sed -i '50 i\access_log off;}' /usr/local/nginx/conf/nginx.conf            //關閉此位置的日志記錄


第五部分:初始化數(shù)據(jù)庫、啟動MySQL服務、安裝MySQL數(shù)據(jù)庫

1)編譯安裝MySQL

1
2
3
4
cd /cmake-2.8.12
./configure && gmake && gmake install            //cmake是一個跨平臺的安裝編譯工具,可以編譯源代碼、制作程式庫
cd /mysql-5.5.38/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -SYSCONFDIR=/etc && make && make install


2)優(yōu)化調(diào)整

1
2
3
4
5
6
7
rm -rf /etc/my.cnf
cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
/etc/profile


3)初始化數(shù)據(jù)庫

1
2
3
4
groupadd mysql
useradd -M -s /sbin/nologin mysql -g mysql
chown -R mysql:mysql /usr/local/mysql
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/


4)啟動MySQL服務

1
2
service mysqld start
mysqladmin -u root password '123456'


第六部分:安裝PHP解析環(huán)境

1)編譯安裝PHP

1
2
3
cd /php-5.3.28/
./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql/ --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib
make && make install


2)安裝后的調(diào)整

1
cp php.ini-development /usr/local/php5/php.ini


3)安裝ZendGuardLoader(提高PHP程序的執(zhí)行效率,優(yōu)化頁面加載速度)

1
2
3
4
5
6
cd /ZendGuardLoader-php-5.3-linux-glibc23-x86_64/
cd php-5.3.x/
cp ZendGuardLoader.so /usr/local/php5/lib/php/
zend="Zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
Zend_loader.enable=1"
echo "$zend" >> /usr/local/php5/php.ini


4)配置Nginx支持PHP環(huán)境

1
2
3
4
5
6
7
8
cd /usr/local/php5/etc/
cp php-fpm.conf.default php-fpm.conf
useradd -M -s /sbin/nologin php        //創(chuàng)建運行用戶php
sed -i "s/nobody/php/g" /usr/local/php5/etc/php-fpm.conf        //運行用戶
sed -i "s/pm.max_children[[:space:]]=[[:space:]]5/pm.max_children = 50/g" /usr/local/php5/etc/php-fpm.conf        //最多進程空閑數(shù)
sed -i "s/pm.min_spare_servers[[:space:]]=[[:space:]]1/pm.min_spare_servers = 5/g" /usr/local/php5/etc/php-fpm.conf        //最少進程空閑數(shù)
sed -i "s/pm.max_spare_servers[[:space:]]=[[:space:]]3/pm.max_spare_servers = 35/g" /usr/local/php5/etc/php-fpm.conf
sed -i "s/pm.start_servers[[:space:]]=[[:space:]]2/pm.start_servers = 20/g" /usr/local/php5/etc/php-fpm.conf        //啟動時開啟的進程數(shù)


第七部分:配置Nginx支持PHP解析(調(diào)用本機的php-fpm進程)

1
2
3
4
5
sed -i '53 i\location ~ \.php$ {' /usr/local/nginx/conf/nginx.conf        //訪問.php頁面的配置段
sed -i '54 i\root       /usr/local/nginx/html;' /usr/local/nginx/conf/nginx.conf        //PHP網(wǎng)頁的根目錄
sed -i '55 i\fastcgi_pass       127.0.0.1:9000;' /usr/local/nginx/conf/nginx.conf        //php-fpm的監(jiān)聽地址
sed -i '56 i\fastcgi_index  index.php;' /usr/local/nginx/conf/nginx.conf        //php首頁文件
sed -i '57 i\include     fastcgi.conf;}' /usr/local/nginx/conf/nginx.conf        //包括fastcgi.conf樣本配置


第八部分:部署網(wǎng)站程序代碼

1
2
3
4
cd SKYUC.v3.4.2.SOURCE/
mv wwwroot /usr/local/nginx/html/
cd /usr/local/nginx/html/wwwroot
chown -R php:php admincp/ data/ templates/ upload/


優(yōu)化php路徑,設置MySQL密碼,開啟nginx服務

1
2
3
4
ln -s /usr/local/php5/bin//usr/local/bin/
ln -s /usr/local/php5/sbin//usr/local/sbin/
mysqladmin -u root password '123456'
service nginx start


安裝完成,如下所示

查看監(jiān)聽端口號

為了降低Web應用程序?qū)?shù)據(jù)庫的風險,建議設置專用的數(shù)據(jù)庫及授權(quán)用戶(新建skyucdb庫,授權(quán)本人名)

安裝Web應用

使用shell腳本部署、使用基于LNMP平臺的Web應用系統(tǒng)就完成了,后續(xù)可根據(jù)工作需要更改相關配置!

希望能幫到大家,共同進步吧!


本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號