在ConoHa上Centos7環境下原始碼安裝部署LNMP
本文記錄了從原始碼,在Centos 7上手動部署LNMP環境的過程,為了方便以後對nginx和mariadb進行升級,這裡採用yum的方式進行安裝。
1.建立執行網站和資料庫的使用者和組
groupadd www
useradd -g www admin
passwd admin #然後輸入你想設定的密碼
更多使用者操作請參考【這裡】,然後將新建使用者新增到sudo列表中,編輯/etc/sudoers,內容如下:
## Allow root to run any commands anywhere root ALL=(ALL) ALL admin ALL=(ALL) ALL
至此,使用者和使用者組建立完畢,然後接下來所有的操作都是在使用者admin情況下操作的,如果涉及超級使用者許可權的時候使用sudo進行操作。
2.新增依賴包
以下依賴包是整個Lnmp搭建過程中所需的基本依賴包,如果在安裝過程中出現錯誤,提示缺少某依賴包,可以自己安裝
#執行下面這條命令,各引數之間以空格分開 sudo yum -y install zlib-devel pcre-devel openssl-devel gcc gcc-c++ ncurses-devel perl libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel curl-devel libxslt-devel
以上各依賴包之間以空格隔開即可。
3.下載安裝檔案
需要下載的原始檔包括:libiconv-1.14.tar.gz、libmcrypt-2.5.8.tar.gz、php-7.0.4.tar.gz,操作如下:
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
wget http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
wget http://php.net/distributions/php-7.0.4.tar.gz
4.編譯libiconv
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv-1.14 #安裝目錄
cd srclib
sed -i -e '/gets is a security/d' ./stdio.in.h
cd ..
sudo make -j2
sudo make install
5.編譯libmcrypt
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/libmcrypt-2.5.8
sudo make -j2
sudo make install
6.編譯nginx
安裝
進入nginx的安裝目錄/usr/local/nginx目錄下,執行以下命令
./sbin/nginx
測試
在瀏覽器位址列輸入IP進行訪問,如果出現“Welcome to nginx!”字樣,說明安裝成功!
補充
如果通過Ip出現無法訪問的情況,請參考這裡一下情形進行分析:
- ssh登入你的vps,執行curl localhost,看是否能返回帶有“Welcome to nginx!”字樣的資訊,如果返回說明Nginx安裝沒問題,再檢視其他原因,否則就是你nginx安裝有問題;
- 如果執行curl localhost沒問題,那麼遠端執行一下telnet你的vps的80埠看時候能連線,如果不能,說明80埠沒開放呢,參考這裡進行開放80埠,然後重啟防火牆;
7.編譯MariaDb
欲練此功,必先自宮!
因為現在mysql不再開源,所以centos7自帶的是mariadb,而且版本為5.5系列,編譯安裝mariadb之前,請先將自帶的mariadb解除安裝掉,具體完全解除安裝方法,請谷歌一下!或者參考這裡。
mariadb需要cmake進行安裝,所以我們需要先安裝一下cmake:
sudo yum -y install cmake
解壓
tar -xzvf mariadb-10.1.13.tar.gz
建立mariadb資料檔案目錄並更改屬主及使用者組
sudo mkdir -p /home/userdata/mariadb
sudo chown -R admin:www /home/userdata/
sudo chown -R admin:www /home/userdata/mariadb
cmake編譯
#切換目錄
cd mariadb-10.1.13/
#下面是一整行,請直接複製後,更改成對應你的環境後再執行,有不明白的地方請留言
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb-10.1.13 -DMYSQL_DATADIR=/home/userdata/mariadb -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mariadb-10.1.13.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_USER=admin
注意:以上各引數是以空格隔開的。
安裝
sudo make -j2 #-j2 表示雙執行緒編譯,一般取cpu核心數+1
sudo make install
更改目錄許可權
sudo chown -R admin:www /usr/local/mariadb-10.1.13/
複製配置檔案
#切換目錄
cd /usr/local/mariadb-10.1.13/
cp ./support-files/my-huge.cnf ./support-files/my.cnf # 複製配置檔案
開啟配置檔案:/usr/local/mariadb-10.1.13/support-files/my.cnf,查詢關鍵字thread_concurrency,將該值修改為你的vps cpu*2之後的值,然後儲存。
初始化安裝資料庫
#切換目錄
cd /usr/local/mariadb-10.1.13/
#執行指令碼
./scripts/mysql_install_db --defaults-file=/usr/local/mariadb-10.1.13/support-files/my.cnf --datadir=/home/userdata/mariadb --user=admin
注意:上面個引數之間以空格隔開
接下來製作mariadb的啟動指令碼,在/usr/lib/systemd/system/目錄下新建mariadb.service檔案,內容參考如下(具體內容還需要根據自己的實際情況進行修改):
[Unit]
Description=MariaDB Server
After=network.target
[Service]
User=mariadb
Group=mariadb
PIDFile=/tmp/mariadb-10.1.13.pid
ExecStart=/usr/local/mariadb-10.1.13/bin/mysqld_safe --defaults-file=/usr/local/mariadb-10.1.13/support-files/my.cnf --user=mariadb --datadir=/home/userdata/mariadb-10.1.13 --pid-file=/tmp/mariadb-10.1.13.pid
[Install]
WantedBy=multi-user.target
上面ExecStart的各個引數之間也是以空格隔開的,具體的引數需要自己指定,具體使用方法如下:
systemctl enable mariadb #開機啟動
systemctl start mariadb #立刻啟動
systemctl status mariadb #檢視服務狀態
設定root密碼
/usr/local/mariadb-10.1.13/bin/mysqladmin -u root password '1234567890'
注:通過上述方式設定密碼會出現無法進行登陸或者遠端連線(實現遠端連線的方法參考這裡)的情況,請使用其他方式(命令列或者執行修改mysql.user表)更改密碼,具體可參考這裡。還是在下面貼一下自己的吧。
下面進入mysql命令列,重新設定一下root使用者的密碼,以及新增遠端連線(注意埠開放)。
在/usr/local/mariadb-10.1.13/
目錄下執行./bin/mysql -u root -p '剛剛你設定的root密碼'
進行登陸,登陸後再mariadb的命令列模式執行下列命令:
使用命令列修改資料庫使用者密碼:
use mysql;
UPDATE user SET password=PASSWORD('你的密碼') WHERE User='root';
為root資料庫使用者新增本地訪問所有資料庫的許可權:
grant all privileges on *.* to [email protected]'localhost' identified by "你的密碼";
為root資料庫使用者新增遠端連線訪問所有資料庫的許可權:
grant all privileges on *.* to [email protected]'%' identified by "你的密碼";
最後重新整理許可權
FLUSH PRIVILEGES
8.編譯PHP
解壓
tar -xzvf php-7.0.4.tar.gz
預編譯
#進入解壓後的目錄
cd /home/module_compile/php-7.0.4
#預編譯
./configure --prefix=/usr/local/php-7.0.4 --with-config-file-path=/usr/local/php-7.0.4/etc --with-mysqli=mysqlnd --with-iconv-dir=/usr/local/libiconv-1.14 --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --enable-bcmath --enable-inline-optimization --with-curl --with-fpm-user=admin --with-fpm-group=www --enable-mbstring --with-mcrypt=/usr/local/libmcrypt-2.5.8 --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-sockets --enable-zip --enable-ftp --without-pear --enable-pdo --with-pdo-mysql=mysqlnd --disable-fileinfo --with-xmlrpc --enable-opcache --enable-fpm
注意:以上各引數以空格隔開,–prefix指定你想要設定的安裝目錄,–with-iconv-dir指定你前面libiconv的安裝目錄,–with-fpm-user指定你的使用者,–with-fpm-group指定你的使用者組,–with-mcrypt需要指定你libmcrypt的安裝目錄,不然編譯PHP時,就算安裝了也會提示找不到libmcrypt,請重新安裝的錯誤!
編譯安裝
make -j2
make test
make install
配置
1)首先為php建立配置檔案:
將加壓後的安裝包內的 php.ini-production檔案複製一份到安裝目錄
cd /home/module_compile/php-7.0.4
cp php.ini-development /usr/local/php-7.0.4/php.ini # 如果是開發就複製php.ini-development
將安裝目錄/usr/local/php-7.0.4/etc下的php-fpm.conf.default檔案複製一份並重名為php-fpm.conf
cd /usr/local/php-7.0.4/etc
cp php-fpm.conf.default php-fpm.conf
做一個軟連結
ln -s /usr/local/php-7.0.4/bin/php /usr/bin/
進入安裝目錄/usr/local/php-7.0.4/etc/php-fpm.d目錄下,將www.conf.default複製一份並重命名為www.conf
cd /usr/local/php-7.0.4/etc/php-fpm.d
cp www.conf.default www.conf
2)配置php-fpm.conf檔案
vi /usr/local/php-7.0.4/etc/php-fpm.conf
具體編輯內容參考這裡。
3)配置www.conf檔案
vi /usr/local/php-7.0.4/etc/php-fpm.d/www.conf
具體編輯內容參考這裡。 需要修改的內容包括user ,group,listen.owner,listen.group ,listen 等資訊,其中listen那一行,修改成如下內容:
listen = /var/run/php-fpm/php-fpm.sock # 使用unix socket
4)啟動php-fpm
mkdir /var/run/php-fpm/ #這一步在每次啟動系統時都要做,因為/var/run是個動態目錄,系統重啟php-fpm就沒了
chown -R admin:www /var/run/php-fpm
cd /usr/local/php-7.0.4/
./sbin/php-fpm
5)修改nginx配置檔案支援php
cd /usr/local/nginx/
vi ./conf/nginx.conf
具體修改內容如下:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.php index.html index.htm; # 新增index.php的首頁檔案
}
# 新增下面內容
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
include fastcgi.conf;
}
修改完成後重啟nginx.
cd /usr/local/nginx
./sbin/nginx -s stop
./sbin/nginx
然後在/nginx/html下建立index.php,
vi /nginx/html/index.php
新增下面內容:
<?php
phpinfo();
?>
然後在瀏覽器中輸入ip進行訪問,當你看到下面的介面,那麼恭喜你,配置成功!
參考文章: