1. 程式人生 > >LNMP環境搭建記錄(源碼方式)

LNMP環境搭建記錄(源碼方式)

des all 英文 pass ml2 內核 evel 語言 highlight

  LNMP指的是在Linux下用PHP+MYSQL+NGIX搭建網站的環境。

  Nginx是一個高性能的 HTTP 和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。Nginx不僅可以作為web服務器,也可以作為負載均衡器。

  MySQL是一款開源免費的數據軟件,MySQL是一個小型關系型數據庫管理系統,其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站數據庫.

  PHP,是英文超級文本預處理語言Hypertext Preprocessor的縮寫。PHP 是一種 HTML 內嵌式的語言,是一種在服務器端執行的嵌入HTML文檔的腳本語言,其源碼是由C語言寫成的,故風格也與C語言類似,被廣泛的運用於搭建中小型網站。

  下面就記錄一下LNMP環境的搭建過程,題主的Linux環境是CentOs虛擬鏡像。

【Nginx安裝】

  目前最新的Nginx穩定版本是1.14.0,網址為http://nginx.org/en/download.html,可直接在Windows下載好再rz上傳到Linux下,也可直接用wget方式下載,下面列出的下載方式是後者。

cd /usr/src          #一般將源碼放在此目錄下
wget http://nginx.org/download/nginx-1.14.0.tar.gz #安裝
技術分享圖片

註意:nginx的安裝依賴zlib-devel pcre-devel openssl-devel 這幾個包,故我們在安裝nginx前需先安裝這幾個包,以免安裝過程中出錯。
yum -y install zlib-devel pcre-devel openssl-devel
技術分享圖片

........

技術分享圖片



  一般源碼安裝分為4個步驟,解壓(tar命令)預編譯(執行源碼包下的configure),編譯(make),編譯安裝(make install) 。

  1. 解壓
tar -zxvf nginx-1.14.0.tar.gz   #這裏解釋下加壓參數,z代表gzip(也就是後面的.gz文件)x代表加壓,v表示顯示詳細信息,-f使用檔案文件或設備(必選參數)
技術分享圖片

  2. 預編譯

  我們進行預編譯的時候,一般會帶上一些參數,已達到我們想要安裝的效果,比如啟用某個功能,禁用某個功能:

進入源碼包目錄進行預編譯:

cd nginx-1.14.0
 ./configure --prefix=/data/webserver/nginx\   # 指定安裝目錄為/usr/local/nginx
--with-openssl=/usr/include/openssl\  # 啟用ssl
--with-pcre\                          # 啟用正規表達式
--with-http_stub_status_module        # 安裝可以查看nginx狀態的程序
技術分享圖片

                     ......  

技術分享圖片



  3、編譯

  ./configure指執行當前目錄下的configure文件,預編譯完成後我們就可以進行編譯和安裝:

make   #編譯
技術分享圖片

.                        ....

技術分享圖片

  

4、安裝

make install #安裝
技術分享圖片

                          ....  

技術分享圖片

  

  安裝完成後我們可以到相應的目錄查看安裝的文件:

ls /data/webserver/nginx
技術分享圖片

  接著就可以啟動nginx了:

/data/webserver/nginx/sbin/nginx   #啟動nginx

/data/webserver/nginx/sbin/nginx -s stop #停止nginx

/data/webserver/nginx/sbin/nginx -s relaod #重啟nginx
技術分享圖片 #由圖可知nginx已啟動
netstat -antlp | grep 80  #nginx占用TCP的80端口由圖也可知nginx已啟動

技術分享圖片

  

【MySQL安裝】  

  至此,nginx已安裝啟動完畢,接著我們來安裝MySQL,類似的,我們依舊需要先安裝MySQL的依賴包:

yum -y install wget  cmake gcc gcc-c++ ncurses  ncurses-devel  libaio-devel  openssl openssl-devel
技術分享圖片

                            .......

技術分享圖片

  接著我們下載源碼:

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.11.tar.gz
技術分享圖片

                      .......

技術分享圖片

  創建mysql用戶:

 groupadd mysql
 useradd -r -g mysql -s /bin/false mysql

  創建安裝目錄和數據目錄:

mkdir -p /usr/local/mysql
mkdir -p /data/mysql
技術分享圖片

  解壓源碼包:

 tar -zxf mysql-boost-8.0.11.tar.gz -C /usr/local
技術分享圖片

  編譯&安裝:

cd /usr/local/mysql-8.0.11
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
-DMYSQL_DATADIR=/usr/local/mysql/data
-DSYSCONFDIR=/etc
-DMYSQL_TCP_PORT=3306
-DWITH_BOOST=/usr/local/mysql-8.0.11/boost make && make install
技術分享圖片

  安裝成功後我們可啟動mysql:

cd /usr/local/mysql
bin/mysqld_safe --user=mysql

  啟動成功,連接mysql

bin/mysql -uroot -p

  此時要求輸入連接密碼,比較舊的版本的mysql安裝時默認密碼為空,但該5.7之後的版本有默認的密碼,由於我們不知道,因此關閉mysql服務後(可直接查詢進程根據進程號kill掉或/etc/init.d/mysql stop ),改用跳過密碼的方式重新開啟mysql服務。

bin/mysqld_safe --user=mysql & skip-grant-tables

  重新連接

bin/mysql -uroot 

  連接成功後修改密碼

mysql> UPDATE user SET Password=PASSWORD(‘newpassword‘) where USER=‘root‘;
mysql> FLUSH PRIVILEGES; #必須刷新權限才能生效

  此時重啟mysql服務,便可以賬號密碼方式連接mysql。

  關於mysql安裝時的一些常見錯誤,可參考https://typecodes.com/web/solvemysqlcompileerror.html或http://www.voidcn.com/article/p-avqyeoec-sz.html,在源碼編譯安裝mysql的時候,踩了很多的坑,參考的博文寫的非常詳細,感謝~

【PHP安裝】

  先安裝php依賴包,否則在編譯安裝php7的過程當中會出現各種報錯,安裝完成後即可進入下一個環節。

  安裝擴展包並更新系統內核:

yum install epel-release -y
yum update

  安裝php依賴組件(包含Nginx依賴),前面nginx以及mysql安裝過的可以忽略,也可以直接復制運行,會跳過已安裝的依賴:

yum -y install wget vim pcre pcre-devel openssl openssl-devel libicu-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel 
libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel
ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap jemalloc-devel
cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash
libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel
技術分享圖片

            ........

技術分享圖片

    

  創建用戶和組,並下載php安裝包解壓:

cd /tmp
groupadd www
useradd -g www www
wget http://cn2.php.net/distributions/php-7.2.0.tar.gz
tar xvf php-7.2.1.tar.gz
cd php-7.2.0
技術分享圖片

  設置變量並開始源碼編譯:

cp -frp /usr/lib64/libldap* /usr/lib/
./configure --prefix=/data/webserver/php --with-config-file-path=/data/webserver/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd-compression-support --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-intl --with-mcrypt --with-libmbfl --enable-ftp --with-gd --enable-gd-jis-conv --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --disable-fileinfo --enable-opcache --with-pear --enable-maintainer-zts --with-ldap=shared --without-gdbm \
技術分享圖片

  開始安裝

make -j 4 && make install
技術分享圖片

  

   完成安裝後配置php.ini文件:

cp php.ini-development /data/webserver/php/etc/php.ini
cp /data/webserver/php/etc/php-fpm.conf.default /data/webserver/php/etc/php-fpm.conf
cp /data/webserver/php/etc/php-fpm.d/www.conf.default /data/webserver/php/etc/php-fpm.d/www.conf

  修改 php.ini 相關參數:

vim /data/webserver/php/etc/php.ini

expose_php = Off
short_open_tag = ON
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 32M
date.timezone = Asia/Shanghai
mbstring.func_overload=2

  重啟PHP,至此LNMP環境已搭建完成。

LNMP環境搭建記錄(源碼方式)