摘要:下源碼安裝一前言之前,我的開發環境是。重新加載權限表將確保所有到目前為止所做的更改將立即生效。然后,和注意,如果是使用二進制包安裝了及相應的開發庫,不需要指定路徑。五參考資料入門教程編譯安裝編譯安裝
Debian9下源碼安裝LNMP 一、前言
之前,我的開發環境是Windows-10+PHP-7.1+Nginx-1.10+MariaDB-10.1。
后面開發需要使用到memcached,redis等nosql比較多,而在Windows下定制難度,很多PHP拓展并沒有.dll文件,且PHP拓展在Windows下compile難度還是比較大的。
所以促使我轉向Linux下開發。
首先,我search了一下,主要是Red Hat 與Debian。
基于Red Hat:商業版,Centos,Fedora
基于Debian: Debian,Ubuntu
我選擇了Debian 9,PHP-7.2,MariaDB-10.2,Nginx-1.13
二、Requirements一般安裝順序,mariadb > nginx > php,以下的涉及的軟件,庫名均是基于Debian(Ubuntu)。2.1 PHP的需要的額外庫:
## 源碼需要的詞法分析器 apt install bison ## 源碼都是c程序,需要c編譯器,注意編譯器版本 apt install gcc-6 ## C++編譯器 apt install g++ ## xml解析庫 apt install libxml2 libxml2-dev ## make cmake m4 autoconf apt install make cmake m4 autoconf ## webp 格式,能夠帶來更小體積的圖片 apt install libwebp6 libwebp-dev ## jpeg格式支持 apt install libjpeg-dev ## png格式支持 apt install libpng-dev ## 免費開源字體引擎 apt install libfreetype6 libfreetype6-dev ## ssl加密庫支持(源碼安裝openssl,可以選擇使用Debian 包來安裝openssl) apt install openssl ## ssh2 庫(源碼安裝) apt install libssh2-1-dev ## mhash 庫 apt install libmhash2 ## zlib 壓縮庫(源碼安裝) apt install zlib1g zlib1g-dev ## pcre 正則表達式庫(源碼安裝) apt install libpcre3-dev libpcre3 ## gzip apt install gzip ## bz2 apt install libbz2-1.0 libbz2-dev ## soduim php7.2新特性 現代加密標準 apt install libsodium-dev ## argon2 php7.2新特性 新的加密函數,由PHC(Password Hashing Competition)發布 apt install argon2 libargon2-0 libargon2-0-dev2.2 Nginx 需要的額外庫
主要是三個,openssl,zlib,pcre,可以通過Debian本身的庫安裝,也可以選擇源碼安裝。我選擇后者,所以,
并不會與上面的沖突,后面會涉及到原因。
2.3 MariaDB 需要的額外庫## bison詞法分析器 apt install bison ## libncurses 一個可用于編寫獨立終端基于文本的的程序庫 apt install libncurses5 libncurses5-dev ## libevent-dev 一個事件庫 apt install libevent-dev ## openssl 一個加密庫 apt install openssl三、 安裝過程
按照MariaDB > Nginx > PHP的順序安裝,安裝前請再次檢查上述所需的額外庫都已安裝。
3.1 對應的系統用戶創建為什么要創建用戶?
答:因為安裝完成后,我們只需要這些程序只用于系統服務就好(daemon或者其他自己運行的進程),并不需要使用一個具體用戶身份去操作他。即創建系統賬戶,以及系統用戶組。
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 參數含義
通過man groupadd 或者man useradd 可以調出具體的手冊 -r 創建系統用戶或者用戶組 -g 指定用戶所屬用戶組 -s 指定用戶登錄shell名字,sh,bash,因為是系統用戶,并不需要,設置 /bin/false或者/usr/sbin/nologin -M 不創建用戶主目錄
同樣,分別創建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 nginx3.2 MariaDB
MariaDB 安裝可能略顯麻煩,并不是常見的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 配置MariaDBvim /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/
復制
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
創建系統啟動腳本(使用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
如果沒有啟動,請使用journalctl -xn 或者 journalctl -xl來查看錯誤信息
如果想開機啟動,請使用systemctl enable mysqld.service
安全設置
$:mysql_secure_installation Enter current password for root (enter for none): 輸入當前root密碼(沒有輸入) Set root password? [Y/n] 設置root密碼?(是/否) New password: 輸入新root密碼 Re-enter new password: 確認輸入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. 默認情況下,MariaDB安裝有一個匿名用戶, 允許任何人登錄MariaDB而他們無需創建用戶帳戶。 這個目的是只用于測試,安裝去更平緩一些。 你應該進入前刪除它們生產環境。 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只應允許從localhost連接。 這確保其他用戶無法從網絡猜測root密碼。 Disallow root login remotely? [Y/n] 不允許root登錄遠程?(是/否) 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. 默認情況下,MariaDB提供了一個名為“測試”的數據庫,任何人都可以訪問。 這也只用于測試,在進入生產環境之前應該被刪除。 Reloading the privilege tables will ensure that all changes made so far will take effect immediately. 重新加載權限表將確保所有到目前為止所做的更改將立即生效。 Reload privilege tables now? [Y/n] 現在重新加載權限表(是/否) All done! If you"ve completed all of the above steps, your MariaDB installation should now be secure. 全部完成!如果你已經完成了以上步驟,MariaDB安裝現在應該安全。 Thanks for using MariaDB!
至此,mariaddb已經安裝完成,可以使用 ps -aux | grep mysql 查看服務
現在測試一下,mysql -u root -p 或者 mysql -h localhost -P 5001 -u shanechiu -p
3.3 PHP 安裝PHP 安裝比較簡單,主要是選擇你要安裝的拓展或者需要開啟的功能
可以使用./configure --help 來瀏覽源碼安裝提供的安裝選項
有些屬于PHP內置的功能,你只需要 enable或者disable,比如php-fpm,是需要啟用的。
有些拓展是可以動態加載的,稱之為shared extension,但是官方也說了,并不是所有的拓展都是能夠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
配置
進入源碼文件,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
同時要添加php-fpm配置文件,安裝目錄下 etc/ 下 cp php-fpm.conf.default php-fpm.conf 和 cp php.conf.d/www.conf.default php.conf.d/www.conf
PHP-FPM啟動腳本(systemd)
PHP 非常人性化,在源碼目錄下/sapi/fpm下可以找到php-fpm.service文件,復制到/etc/systemd/system/php-fpm.service中
systemdctl start php-fpm.service
systemdctl status php-fpm.service
如果發生錯誤,使用journalctl -xn查看具體錯誤信息
開機啟動,sytemctl enable php-fpm.service
Nginx的編譯安裝難易程度應該是LNMP環境中最簡單的
首先需要三個源碼包,一個zlib(壓縮庫),一個pcre(正則表達式庫),一個openssl(加密庫,如果要使用HTTPS,這個庫是必須的),
當然你如果是通過debian本身的包管理器安裝的,這個可以省略,但是一定要安裝兩個,一個是軟件本身,同時還要安裝開發庫,像這種,apt -y install openssl opensll-dev。
命令:
--configure --prefix=/opt/soft/nginx --user=nginx --group=nginx --with-http_ssl_module # 這個默認是不開啟的,如需使用TLS,請帶上這一項編譯。 --with-pcre=../pcre-8.41 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.1.0g
然后,make 和 make install
注意,如果是使用二進制包安裝了zlib,pcre,openssl,及相應的開發庫,不需要指定路徑。
配置:
編寫nginx守護進程文件,還是利用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
這個可以在nginx 官網找到,可以按照自己需求修改。注意路徑修改成自己的安裝路徑。
systemctl start nginx.service 啟動Nginx
systemctl enable nginx.service 開機啟動
記得,如果中途修改了service文件,一定要先運行systemctl daemon-reload重新加載守護進程文件。然后運行 systemctl start nginx.service重啟服務。四、APPEND
后續會添加一鍵安裝腳本。
五、參考資料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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29628.html
摘要:下源碼安裝一前言之前,我的開發環境是。重新加載權限表將確保所有到目前為止所做的更改將立即生效。然后,和注意,如果是使用二進制包安裝了及相應的開發庫,不需要指定路徑。五參考資料入門教程編譯安裝編譯安裝 Debian9下源碼安裝LNMP 一、前言 之前,我的開發環境是Windows-10+PHP-7.1+Nginx-1.10+MariaDB-10.1。 后面開發需要使用到memcached...
摘要:整個環境的結構是,為單獨容器做方向代理并配置協議和在同一個容器配合組件化開發的為一個單獨容器與分別為單獨容器。 整個環境的結構是lnamp,nginx為單獨容器做方向代理并配置HTTPS協議,Apache和PHP在同一個容器,配合PHP組件化開發的composer為一個單獨容器,Redis與Mysql分別為單獨容器。 鏡像版本: Ubuntu:16.04(上面跑Apach...
閱讀 2398·2021-11-23 09:51
閱讀 1209·2021-11-22 13:54
閱讀 3422·2021-09-24 10:31
閱讀 1066·2021-08-16 10:46
閱讀 3619·2019-08-30 15:54
閱讀 700·2019-08-30 15:54
閱讀 2886·2019-08-29 17:17
閱讀 3154·2019-08-29 15:08