{"id":266,"date":"2026-07-03T00:50:58","date_gmt":"2026-07-02T16:50:58","guid":{"rendered":"https:\/\/www.book2020.top\/?p=266"},"modified":"2026-07-07T19:51:51","modified_gmt":"2026-07-07T11:51:51","slug":"alpine3-24-%e6%89%8b%e5%8a%a8%e9%83%a8%e7%bd%b2lnmp%e7%8e%af%e5%a2%83","status":"publish","type":"post","link":"https:\/\/www.book2020.top\/?p=266","title":{"rendered":"Alpine3.24 \u624b\u52a8\u90e8\u7f72LNMP\u73af\u5883"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u5b89\u88c5\u4f9d\u8d56\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apk update &amp;&amp; apk upgrade\napk add --no-cache \\\n  build-base linux-headers perl autoconf automake libtool \\\n  pcre-dev zlib-dev git wget curl\\\n  php83 php83-fpm php83-mysqli php83-pdo_mysql php83-mbstring php83-json \\\n  mariadb mariadb-client vim bash bash-completion<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5207\u6362\u5230 Bash \u7ec8\u7aef<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bash<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6821\u51c6\u65f6\u95f4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ln -sf \/usr\/share\/zoneinfo\/Asia\/Shanghai \/etc\/localtime &amp;&amp; date -R<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u8f7dgeoip2\u6570\u636e\u5e93<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone https:\/\/github.com\/leev\/ngx_http_geoip2_module.git<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>wget -nc https:\/\/github.com\/maxmind\/libmaxminddb\/releases\/download\/1.13.3\/libmaxminddb-1.13.3.tar.gz &amp;&amp; tar -zxvf libmaxminddb-1.13.3.tar.gz &amp;&amp; cd libmaxminddb-1.13.3<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/configure &amp;&amp; make -j$(nproc) &amp;&amp; make install &amp;&amp; ldconfig<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u8f7d\/\u5b89\u88c5\/\u89e3\u538b openssl<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd &amp;&amp; wget -nc https:\/\/github.com\/openssl\/openssl\/releases\/download\/openssl-4.0.1\/openssl-4.0.1.tar.gz &amp;&amp; tar -zxvf openssl-4.0.1.tar.gz<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u8f7d\/\u89e3\u538b nginx\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wget -nc https:\/\/nginx.org\/download\/nginx-1.30.3.tar.gz &amp;&amp; tar -zxvf nginx-1.30.3.tar.gz &amp;&amp; cd nginx-1.30.3<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6dfb\u52a0\u7f16\u8bd1\u63d2\u4ef6\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/configure \\\n  --prefix=\/usr\/local\/nginx \\\n  --conf-path=\/etc\/nginx\/nginx.conf \\\n  --pid-path=\/var\/run\/nginx.pid \\\n  --lock-path=\/var\/run\/nginx.lock \\\n  --error-log-path=\/var\/log\/nginx\/error.log \\\n  --http-log-path=\/var\/log\/nginx\/access.log \\\n  --with-threads \\\n  --with-file-aio \\\n  --with-http_ssl_module \\\n  --with-http_v2_module \\\n  --with-http_v3_module \\\n  --with-http_realip_module \\\n  --with-http_sub_module \\\n  --with-http_gzip_static_module \\\n  --with-http_auth_request_module \\\n  --with-http_secure_link_module \\\n  --with-http_stub_status_module \\\n  --with-stream \\\n  --with-stream_ssl_module \\\n  --with-stream_realip_module \\\n  --with-stream_ssl_preread_module \\\n  --with-compat \\\n  --add-dynamic-module=..\/ngx_http_geoip2_module \\\n  --with-openssl-opt=\"no-tests\" \\\n  --with-cc-opt='-march=native -O3' \\\n  --with-openssl=..\/openssl-4.0.1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7f16\u8bd1\/\u5b89\u88c5 nginx<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>make -j$(nproc) &amp;&amp; make install<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b89\u88c5wordpress<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd &amp;&amp; wget -P \/usr\/local\/nginx\/html\/ https:\/\/cn.wordpress.org\/latest-zh_CN.zip &amp;&amp; unzip \/usr\/local\/nginx\/html\/latest-zh_CN.zip -d \/usr\/local\/nginx\/html\/ &amp;&amp; mv \/usr\/local\/nginx\/html\/wordpress\/* \/usr\/local\/nginx\/html &amp;&amp; rm -rf \/usr\/local\/nginx\/html\/latest-zh_CN.zip \/usr\/local\/nginx\/html\/wordpress<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u5220\u9664\u5df2\u4f7f\u7528\u6587\u4ef6\nrm -rf libmaxminddb-1.13.3 nginx-1.30.3 nginx-1.30.3.tar.gz ngx_http_geoip2_module openssl-4.0.1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u76ee\u5f55\u548c\u8bbe\u7f6e\u6743\u9650.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u521b\u5efa\u76ee\u5f55\u548c\u8bbe\u7f6e\u6743\u9650.\nmkdir -p \/etc\/nginx\/ssl \/etc\/nginx\/GeoLite2 \/var\/log\/nginx \/etc\/init.d \/run\/php-fpm83\ntouch \/var\/log\/nginx\/access.log \/var\/log\/nginx\/error.log\nchown -R nobody:nobody \/usr\/local\/nginx\/html \/var\/log\/nginx\nsed -i 's|#pid.*logs\/nginx.pid;|pid \/var\/run\/nginx.pid;|g' \/etc\/nginx\/nginx.conf\nsed -i 's|#user  nobody;|user  nobody;|g' \/etc\/nginx\/nginx.conf\nsed -i '\/user  nobody;\/a \\\nload_module \/usr\/local\/nginx\/modules\/ngx_http_geoip2_module.so;\\\nload_module \/usr\/local\/nginx\/modules\/ngx_stream_geoip2_module.so;' \/etc\/nginx\/nginx.conf\nsed -i 's|worker_processes\\s*1;|worker_processes  auto;|g' \/etc\/nginx\/nginx.conf\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u914d\u7f6enginx\u670d\u52a1\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat &gt; \/etc\/init.d\/nginx &lt;&lt; 'EOF'\n#!\/sbin\/openrc-run\n\ndescription=\"Nginx HTTP Server\"\ncfgfile=\"${cfgfile:-\/etc\/nginx\/nginx.conf}\"\ncommand=\"\/usr\/local\/nginx\/sbin\/nginx\"\ncommand_args=\"-c $cfgfile\"\npidfile=\"\/var\/run\/nginx.pid\"\n\ndepend() {\n    need net\n    use dns logger\n}\n\nextra_started_commands=\"reload\"\n\nreload() {\n    ebegin \"Reloading $description configuration\"\n    $command -s reload\n    eend $?\n}\nEOF<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6dfb\u52a0\u6743\u9650<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod +x \/etc\/init.d\/nginx<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u8f7d<a href=\"https:\/\/github.com\/P3TERX\/GeoLite.mmdb\/raw\/download\/GeoLite2-Country.mmdb\">GeoLite2-Country\u6570\u636e<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wget -O \/etc\/nginx\/GeoLite2\/GeoLite2-Country.mmdb \\\n  https:&#47;&#47;raw.githubusercontent.com\/P3TERX\/GeoLite.mmdb\/download\/GeoLite2-Country.mmdb<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b89\u88c5nginx\u914d\u7f6e\u6587\u4ef6<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vim \/etc\/nginx\/nginx.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">http {<br>\u6dfb\u52a0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>include conf.d\/default.conf;\n\t# GeoIP2 \u56fd\u5bb6\u8bc6\u522b\n\tmap $http_x_forwarded_for $clientRealIp {\n\t\t\"\" $remote_addr;\n\t\t~^(?P&lt;firstAddr&gt;&#91;0-9\\.]+),?.*$ $firstAddr;\n\t}\n\tgeoip2 \/etc\/nginx\/GeoLite2\/GeoLite2-Country.mmdb {\n\t\tauto_reload 5m;\n\t\t$geoip2_data_country_code default=XX source=$clientRealIp country iso_code;\n\t}\n\tmap $geoip2_data_country_code $allowed_country {\n\t\tCN      yes;\n\t\tJP      yes;\n\t\tHK      yes;\n\t\tUS      yes;\n\t\tCA      yes;\n\t\tFR      yes;\n\t\tdefault no;\n\t}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">server {\u4e0b\u7684<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">location \/ {\u6dfb\u52a0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\tif ($allowed_country = no) {\n\t    return 404;\n\t}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6dfb\u52a0dhparam<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl https:\/\/ssl-config.mozilla.org\/ffdhe2048.txt &gt; \/etc\/nginx\/ssl\/dhparam<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/ssl-config.mozilla.org\/#server=nginx&amp;version=1.17.7&amp;config=intermediate&amp;openssl=1.1.1m&amp;ocsp=false&amp;guideline=5.6\">nginx\u914d\u7f6e\u751f\u6210\u5730\u5740<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fee\u6539 PHP-FPM \u914d\u7f6e\u6587\u4ef6<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed -i 's|127.0.0.1:9000|\/run\/php-fpm83\/www.sock|' \/etc\/php83\/php-fpm.d\/www.conf\nsed -i 's|;listen.owner = nobody|listen.owner = nobody|' \/etc\/php83\/php-fpm.d\/www.conf\nsed -i 's|;listen.group = nobody|listen.group = nobody|' \/etc\/php83\/php-fpm.d\/www.conf\nsed -i 's|;listen.mode = 0660|listen.mode = 0660|' \/etc\/php83\/php-fpm.d\/www.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u521d\u59cb\u5316\u6570\u636e\u5e93 MariaDB<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mysql_install_db --user=mysql --datadir=\/var\/lib\/mysql<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u542f\u52a8 PHP-FPM 8.3 \u670d\u52a1<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rc-service php-fpm83 start<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f00\u542f\u72b6\u6001\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rc-service php-fpm83 status <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u91cd\u65b0\u542f\u52a8\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rc-service php-fpm83 restart<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bbe\u7f6e\u5f00\u673a\u81ea\u52a8\u542f\u52a8<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rc-update add php-fpm83 default<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u542f\u52a8 mariadb \u670d\u52a1<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rc-service mariadb start<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f00\u542f\u72b6\u6001\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rc-service mariadb status<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u91cd\u65b0\u542f\u52a8\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rc-service mariadb restart<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bbe\u7f6e\u5f00\u673a\u81ea\u52a8\u542f\u52a8<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rc-update add mariadb default<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">mysql\u6216MariaDB\u5b89\u5168\u52a0\u56fa\uff1a<br>\u4f1a\u8bbe\u7f6e\u5bc6\u7801\uff0c\u754c\u97621\u76f4\u63a5\u56de\u8f66\uff0c\u754c\u97622\u9009N\uff0c\u5269\u7684\u90fd\u9009Y<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mysql_secure_installation<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">root\u767b\u5f55\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mysql -u root -p<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u5f53\u524d\u7684\u6570\u636e\u5e93\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>show databases;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u6570\u636e\u5e93\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u7528\u6237<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE USER 'wp_user'@'localhost' IDENTIFIED BY '\u4f60\u7684\u5b89\u5168\u5bc6\u7801';<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6388\u4e88\u6743\u9650\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'localhost';<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fee\u6539root\u767b\u5f55\u5bc6\u7801\u65e0\u6548<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD(\"password\");<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u540e\u52a1\u5fc5\u5237\u65b0\u6743\u9650<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FLUSH PRIVILEGES;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u9000\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>exit<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><s>\u5b89\u88c5\u65b0\u5185\u6838\u540e\u5f00\u542fBBR\uff1a<\/s><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><s>echo \"net.core.default_qdisc=fq\" &gt;&gt; \/etc\/sysctl.conf &amp;&amp; echo \"net.ipv4.tcp_congestion_control=bbr\" &gt;&gt; \/etc\/sysctl.conf &amp;&amp; sysctl -p &amp;&amp; lsmod | grep bbr<\/s><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u542f\u52a8 nginx \u670d\u52a1<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rc-service nginx start<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f00\u542f\u72b6\u6001\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rc-service nginx status<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u91cd\u65b0\u542f\u52a8\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rc-service nginx restart<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bbe\u7f6e\u5f00\u673a\u81ea\u52a8\u542f\u52a8<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rc-update add nginx default<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><s>\u4fee\u6539<\/s><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><s>        location ~ \\.php$ {<br>            fastcgi_pass unix:\/run\/php-fpm83\/www.sock;<br>            fastcgi_index index.php;<br>            include fastcgi_params;<br>            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br>        }<br>            root  \/usr\/local\/nginx\/html;<br>            index index.php index.html index.ht<\/s>m;\n\n<br><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5b89\u88c5\u4f9d\u8d56\uff1a \u5207\u6362\u5230 Bash \u7ec8\u7aef \u6821\u51c6\u65f6\u95f4\uff1a \u4e0b\u8f7dgeoip2\u6570\u636e\u5e93 \u4e0b\u8f7d\/\u5b89\u88c5\/\u89e3\u538b openssl \u4e0b\u8f7d&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-266","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.book2020.top\/index.php?rest_route=\/wp\/v2\/posts\/266","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.book2020.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.book2020.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.book2020.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.book2020.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=266"}],"version-history":[{"count":16,"href":"https:\/\/www.book2020.top\/index.php?rest_route=\/wp\/v2\/posts\/266\/revisions"}],"predecessor-version":[{"id":296,"href":"https:\/\/www.book2020.top\/index.php?rest_route=\/wp\/v2\/posts\/266\/revisions\/296"}],"wp:attachment":[{"href":"https:\/\/www.book2020.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=266"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.book2020.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=266"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.book2020.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}