成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Debian9(Stretch) 下編譯安裝LNMP環(huán)境

ideaa / 2153人閱讀

摘要:下源碼安裝一前言之前,我的開(kāi)發(fā)環(huán)境是。重新加載權(quán)限表將確保所有到目前為止所做的更改將立即生效。然后,和注意,如果是使用二進(jìn)制包安裝了及相應(yīng)的開(kāi)發(fā)庫(kù),不需要指定路徑。五參考資料入門教程編譯安裝編譯安裝

Debian9下源碼安裝LNMP 一、前言

之前,我的開(kāi)發(fā)環(huán)境是Windows-10+PHP-7.1+Nginx-1.10+MariaDB-10.1。

后面開(kāi)發(fā)需要使用到memcached,redis等nosql比較多,而在Windows下定制難度,很多PHP拓展并沒(méi)有.dll文件,且PHP拓展在Windows下compile難度還是比較大的。

所以促使我轉(zhuǎn)向Linux下開(kāi)發(fā)。

首先,我search了一下,主要是Red Hat 與Debian。

基于Red Hat:商業(yè)版,Centos,F(xiàn)edora
基于Debian: Debian,Ubuntu

我選擇了Debian 9,PHP-7.2,MariaDB-10.2,Nginx-1.13

二、Requirements
一般安裝順序,mariadb > nginx > php,以下的涉及的軟件,庫(kù)名均是基于Debian(Ubuntu)。
2.1 PHP的需要的額外庫(kù):
## 源碼需要的詞法分析器
apt install bison
## 源碼都是c程序,需要c編譯器,注意編譯器版本
apt install gcc-6
## C++編譯器
apt install g++
## xml解析庫(kù)
apt install libxml2 libxml2-dev
## make cmake m4 autoconf
apt install make cmake m4 autoconf
## webp 格式,能夠帶來(lái)更小體積的圖片
apt install libwebp6 libwebp-dev
## jpeg格式支持
apt install libjpeg-dev
## png格式支持
apt install libpng-dev
## 免費(fèi)開(kāi)源字體引擎
apt install libfreetype6 libfreetype6-dev
## ssl加密庫(kù)支持(源碼安裝openssl,可以選擇使用Debian 包來(lái)安裝openssl)
apt install openssl
## ssh2 庫(kù)(源碼安裝)
apt install libssh2-1-dev
## mhash 庫(kù)
apt install libmhash2
## zlib 壓縮庫(kù)(源碼安裝)
apt install zlib1g zlib1g-dev
## pcre 正則表達(dá)式庫(kù)(源碼安裝)
apt install libpcre3-dev libpcre3
## gzip
apt install gzip
## bz2
apt install libbz2-1.0 libbz2-dev
## soduim php7.2新特性 現(xiàn)代加密標(biāo)準(zhǔn)
apt install libsodium-dev
## argon2 php7.2新特性 新的加密函數(shù),由PHC(Password Hashing Competition)發(fā)布
apt install argon2 libargon2-0 libargon2-0-dev
2.2 Nginx 需要的額外庫(kù)

主要是三個(gè),openssl,zlib,pcre,可以通過(guò)Debian本身的庫(kù)安裝,也可以選擇源碼安裝。我選擇后者,所以,

并不會(huì)與上面的沖突,后面會(huì)涉及到原因。

2.3 MariaDB 需要的額外庫(kù)
## bison詞法分析器
apt install bison
## libncurses 一個(gè)可用于編寫?yīng)毩⒔K端基于文本的的程序庫(kù)
apt install libncurses5 libncurses5-dev
## libevent-dev 一個(gè)事件庫(kù)
apt install libevent-dev
## openssl 一個(gè)加密庫(kù)
apt install openssl

三、 安裝過(guò)程

按照MariaDB > Nginx > PHP的順序安裝,安裝前請(qǐng)?jiān)俅螜z查上述所需的額外庫(kù)都已安裝。

3.1 對(duì)應(yīng)的系統(tǒng)用戶創(chuàng)建

為什么要?jiǎng)?chuàng)建用戶?
答:因?yàn)榘惭b完成后,我們只需要這些程序只用于系統(tǒng)服務(wù)就好(daemon或者其他自己運(yùn)行的進(jìn)程),并不需要使用一個(gè)具體用戶身份去操作他。即創(chuàng)建系統(tǒng)賬戶,以及系統(tǒng)用戶組。

groupadd -r mysql
useradd -r -g mysql -s /bin/false   -M mysql
mkdir /usr/local/data/mysql
chown -R mysql:mysql /usr/local/data/mysql 
note 參數(shù)含義
通過(guò)man groupadd 或者man useradd 可以調(diào)出具體的手冊(cè)

-r  創(chuàng)建系統(tǒng)用戶或者用戶組
-g  指定用戶所屬用戶組
-s  指定用戶登錄shell名字,sh,bash,因?yàn)槭窍到y(tǒng)用戶,并不需要,設(shè)置 /bin/false或者/usr/sbin/nologin
-M  不創(chuàng)建用戶主目錄

同樣,分別創(chuàng)建nginx,php-fpm

groupadd -r php-fpm
useradd -r -g php-fpm -s /bin/false -M php-fpm

groupadd -r nginx
useradd -r -g nginx -s /bin/false -M nginx 
3.2 MariaDB

MariaDB 安裝可能略顯麻煩,并不是常見(jiàn)的make方式,而是cmake方式。

獲取mariadb-10.2源碼

wget http://mirror.jaleco.com/mariadb//mariadb-10.2.12/source/mariadb-10.2.12.tar.gz 
tar -zxvf mariadb-10.2.12.tar.gz
mkdir build-mariadb
cd build-mariadb
cmake ../ -DCMAKE_INSTALL_PREFIX=/opt/soft/mariadb-10.3.4 
-DMYSQL_DATADIR=/var/data/mysql 
-DSYSCONFDIR=/etc 
-DWITHOUT_TOKUDB=1 
-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_ARCHIVE_STPRAGE_ENGINE=1 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 
-DWIYH_READLINE=1 
-DWIYH_SSL=system 
-DVITH_ZLIB=system 
-DWITH_LOBWRAP=0 
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock 
-DDEFAULT_CHARSET=utf8 
-DDEFAULT_COLLATION=utf8_general_ci 
-DBUILD_LIBPROTOBUF_FROM_SOURCES=ON
make && make install 

如果失敗 使用 rm -rf CMakeCache.txt

3.2.1 配置MariaDB
vim /etc/profile.d/mariadb.sh

add
export PATH=$PATH:/opt/soft/mariadb-10.2/bin

source /etc/profile.d/mariadb.sh

cd /opt/soft/mariadb-10.2
scripts/mysql_install_db --user=mysql --datadir=/usr/local/data/mysql

成功輸出信息:

Installing MariaDB/MySQL system tables in "/data/mysql" ...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:

"./bin/mysqladmin" -u root password "new-password"
"./bin/mysqladmin" -u root -h localhost.localdomain password "new-password"

Alternatively you can run:
"./bin/mysql_secure_installation"

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.

You can start the MariaDB daemon with:
cd "." ; ./bin/mysqld_safe --datadir="/data/maria"

You can test the MariaDB daemon with mysql-test-run.pl
cd "./mysql-test" ; perl mysql-test-run.pl

Please report any problems at http://mariadb.org/jira

The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Consider joining MariaDB"s strong and vibrant community:
https://mariadb.org/get-involved/

復(fù)制

cd /opt/soft/mariadb-10.2
cp support-files/my-large.cnf /etc/my.cnf

或者

cp support-files/my-large.cnf /etc/mysql/my.cnf

創(chuàng)建系統(tǒng)啟動(dòng)腳本(使用systemd)

cd /etc/systemd/system
vim mysqld.service 

[Unit]
Description=MariaDB Server
After=network.target

[Service]
ExecStart=/opt/soft/mariadb-10.2/bin/mysqld --defaults-file=/etc/mysql/my.cnf  --datadir=/usr/local/data/mysql --socket=/tmp/mysql.sock
User=mysql
Group=mysql
WorkingDirectory=/opt/soft/mariadb-10.2

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl restart mysqld.service
systemctl status mysqld.servie 

如果沒(méi)有啟動(dòng),請(qǐng)使用journalctl -xn 或者 journalctl -xl來(lái)查看錯(cuò)誤信息

如果想開(kāi)機(jī)啟動(dòng),請(qǐng)使用systemctl enable mysqld.service

安全設(shè)置

$:mysql_secure_installation 

Enter current password for root (enter for none):     輸入當(dāng)前root密碼(沒(méi)有輸入)

Set root password? [Y/n]     設(shè)置root密碼?(是/否)

New password:    輸入新root密碼

Re-enter new password:        確認(rèn)輸入root密碼

Password updated successfully!         密碼更新成功

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

默認(rèn)情況下,MariaDB安裝有一個(gè)匿名用戶,
允許任何人登錄MariaDB而他們無(wú)需創(chuàng)建用戶帳戶。
這個(gè)目的是只用于測(cè)試,安裝去更平緩一些。
你應(yīng)該進(jìn)入前刪除它們生產(chǎn)環(huán)境。

Remove anonymous users? [Y/n]         刪除匿名用戶?(是/否)

Normally, root should only be allowed to connect from "localhost".  This
ensures that someone cannot guess at the root password from the network.

通常情況下,root只應(yīng)允許從localhost連接。
這確保其他用戶無(wú)法從網(wǎng)絡(luò)猜測(cè)root密碼。

Disallow root login remotely? [Y/n]     不允許root登錄遠(yuǎn)程?(是/否)

By default, MariaDB comes with a database named "test" that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

默認(rèn)情況下,MariaDB提供了一個(gè)名為“測(cè)試”的數(shù)據(jù)庫(kù),任何人都可以訪問(wèn)。
這也只用于測(cè)試,在進(jìn)入生產(chǎn)環(huán)境之前應(yīng)該被刪除。

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

重新加載權(quán)限表將確保所有到目前為止所做的更改將立即生效。

Reload privilege tables now? [Y/n]      現(xiàn)在重新加載權(quán)限表(是/否)

All done!  If you"ve completed all of the above steps, your MariaDB
installation should now be secure.

全部完成!如果你已經(jīng)完成了以上步驟,MariaDB安裝現(xiàn)在應(yīng)該安全。

Thanks for using MariaDB!




至此,mariaddb已經(jīng)安裝完成,可以使用 ps -aux | grep mysql 查看服務(wù)

現(xiàn)在測(cè)試一下,mysql -u root -p 或者 mysql -h localhost -P 5001 -u shanechiu -p

3.3 PHP 安裝

PHP 安裝比較簡(jiǎn)單,主要是選擇你要安裝的拓展或者需要開(kāi)啟的功能

可以使用./configure --help 來(lái)瀏覽源碼安裝提供的安裝選項(xiàng)

有些屬于PHP內(nèi)置的功能,你只需要 enable或者disable,比如php-fpm,是需要啟用的。

有些拓展是可以動(dòng)態(tài)加載的,稱之為shared extension,但是官方也說(shuō)了,并不是所有的拓展都是能夠shared.

獲取源碼:
wget http://am1.php.net/distributions/php-7.2.1.tar.bz2
解壓:

tar -xvf php-7.2.1.tar.bz2
cd php-7.2.1
./configure --prefix=/opt/soft/php7.2 
--with-config-file-path=/opt/soft/php7.2/etc 
--with-mysql-sock=/tmp/mysql.sock 
--with-openssl 
--with-mhash 
--with-mysqli=shared,mysqlnd 
--with-pdo-mysql=shared,mysqlnd 
--with-pdo-pgsql=/opt/soft/pgsql 
--with-gd 
--with-iconv 
--with-zlib 
--enable-exif 
--enable-intl 
--enable-calendar 
--enable-zip 
--enable-inline-optimization 
--disable-debug 
--disable-rpath 
--enable-shared 
--enable-xml 
--enable-bcmath 
--enable-shmop 
--enable-mbregex 
--enable-mbstring 
--enable-ftp 
--enable-sysvmsg 
--enable-sysvsem 
--enable-sysvshm 
--enable-pcntl 
--enable-sockets 
--enable-ipv6 
--with-bz2 
--with-xmlrpc 
--enable-soap 
--without-pear 
--with-gettext 
--enable-session 
--with-curl=/opt/soft/curl7.57--enable-debug 
--with-jpeg-dir 
--with-png-dir 
--with-freetype-dir 
--enable-opcache 
--enable-fpm 
--with-fpm-user=nginx 
--with-fpm-group=nginx 
--with-sodium 
--with-libxml-dir 
--with-password-argon2 
--without-gdbm 
--with-pcre-regex 
--with-pcre-jit 
--enable-fast-install 
--enable-fileinfo

配置
進(jìn)入源碼文件,cp php.ini.development /opt/soft/php-7.2/php.ini
修改以下部分

extension_dir=/opt/soft/php-7.2/lib/php/extensions/no-debug-non-zts-20170718/
extension=mysqli
time_zone=PRC

同時(shí)要添加php-fpm配置文件,安裝目錄下 etc/cp php-fpm.conf.default php-fpm.confcp php.conf.d/www.conf.default php.conf.d/www.conf

PHP-FPM啟動(dòng)腳本(systemd)
PHP 非常人性化,在源碼目錄下/sapi/fpm下可以找到php-fpm.service文件,復(fù)制到/etc/systemd/system/php-fpm.service
systemdctl start php-fpm.service
systemdctl status php-fpm.service
如果發(fā)生錯(cuò)誤,使用journalctl -xn查看具體錯(cuò)誤信息
開(kāi)機(jī)啟動(dòng),sytemctl enable php-fpm.service

3.4 Nginx 源碼安裝
Nginx的編譯安裝難易程度應(yīng)該是LNMP環(huán)境中最簡(jiǎn)單的

首先需要三個(gè)源碼包,一個(gè)zlib(壓縮庫(kù)),一個(gè)pcre(正則表達(dá)式庫(kù)),一個(gè)openssl(加密庫(kù),如果要使用HTTPS,這個(gè)庫(kù)是必須的),

當(dāng)然你如果是通過(guò)debian本身的包管理器安裝的,這個(gè)可以省略,但是一定要安裝兩個(gè),一個(gè)是軟件本身,同時(shí)還要安裝開(kāi)發(fā)庫(kù),像這種,apt -y install openssl opensll-dev

命令:

--configure --prefix=/opt/soft/nginx 
--user=nginx 
--group=nginx 
--with-http_ssl_module  # 這個(gè)默認(rèn)是不開(kāi)啟的,如需使用TLS,請(qǐng)帶上這一項(xiàng)編譯。
--with-pcre=../pcre-8.41 
--with-zlib=../zlib-1.2.11 
--with-openssl=../openssl-1.1.0g 

然后,makemake install

注意,如果是使用二進(jìn)制包安裝了zlib,pcre,openssl,及相應(yīng)的開(kāi)發(fā)庫(kù),不需要指定路徑。

配置:
編寫nginx守護(hù)進(jìn)程文件,還是利用systemd工具
vim /etc/sytemd/system/nginx.service

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/opt/soft/nginx/logs/nginx.pid
ExecStartPre=/opt/soft/nginx/sbin/nginx -t
ExecStart=/opt/soft/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

這個(gè)可以在nginx 官網(wǎng)找到,可以按照自己需求修改。注意路徑修改成自己的安裝路徑。

systemctl start nginx.service 啟動(dòng)Nginx
systemctl enable nginx.service 開(kāi)機(jī)啟動(dòng)

記得,如果中途修改了service文件,一定要先運(yùn)行systemctl  daemon-reload重新加載守護(hù)進(jìn)程文件。然后運(yùn)行 systemctl start nginx.service重啟服務(wù)。
四、APPEND

后續(xù)會(huì)添加一鍵安裝腳本。

五、參考資料

systemd 入門教程

CentOS7.3編譯安裝MariaDB10.2.6

CentOS7.3編譯安裝php7.1

GNU bison

GD-support configure PHP

Argon2

The Sodium crypto library (libsodium)")

get the mariadb code,buildit,test it

Generic Build Instructions

Installing System Tables (mysql_install_db)")

"Compiling MariaDB From Source"

ncurses

CMake

php-manul

PHP7.2 NEW FEATURE

Building nginx from Sources

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29628.html

相關(guān)文章

  • Debian9(Stretch) 下編安裝LNMP環(huán)境

    摘要:下源碼安裝一前言之前,我的開(kāi)發(fā)環(huán)境是。重新加載權(quán)限表將確保所有到目前為止所做的更改將立即生效。然后,和注意,如果是使用二進(jìn)制包安裝了及相應(yīng)的開(kāi)發(fā)庫(kù),不需要指定路徑。五參考資料入門教程編譯安裝編譯安裝 Debian9下源碼安裝LNMP 一、前言 之前,我的開(kāi)發(fā)環(huán)境是Windows-10+PHP-7.1+Nginx-1.10+MariaDB-10.1。 后面開(kāi)發(fā)需要使用到memcached...

    elisa.yang 評(píng)論0 收藏0
  • docker lnmp

    摘要:整個(gè)環(huán)境的結(jié)構(gòu)是,為單獨(dú)容器做方向代理并配置協(xié)議和在同一個(gè)容器配合組件化開(kāi)發(fā)的為一個(gè)單獨(dú)容器與分別為單獨(dú)容器。 整個(gè)環(huán)境的結(jié)構(gòu)是lnamp,nginx為單獨(dú)容器做方向代理并配置HTTPS協(xié)議,Apache和PHP在同一個(gè)容器,配合PHP組件化開(kāi)發(fā)的composer為一個(gè)單獨(dú)容器,Redis與Mysql分別為單獨(dú)容器。 鏡像版本: Ubuntu:16.04(上面跑Apach...

    NervosNetwork 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<