全球主机交流论坛

标题: 受不了宝塔,分享Debian10安装LNMP教程 [打印本页]

作者: 30826    时间: 2019-12-1 14:34
标题: 受不了宝塔,分享Debian10安装LNMP教程
本帖最后由 30826 于 2019-12-1 15:45 编辑

详情见上回,宝塔编译了9个小时还失败了:
https://www.loc.888543.xyz/thread-613931-1-1.html

已经卸载宝塔,分享一个自用的Debian10下手动安装LNMP的教程。
也没比面板复杂到哪去,安装速度有质的飞跃。

先升级系统组件到最新:
  1. apt update && apt dist-upgrade
复制代码


安装常用组件:
  1. apt install cron rsync openssl xinetd haveged sshguard lsb-release ca-certificates apt-transport-https
复制代码


创建/www目录:
  1. mkdir /www
复制代码


安装Nginx:
  1. apt install nginx
  2. service nginx start
复制代码


假如我有abc.com,用SFTP建立网站配置/etc/nginx/conf.d/abc.conf:
  1. server {
  2.         listen 80;
  3.         server_name abc.com www.abc.com;
  4.         index index.html index.htm index.php;
  5.         root /www/abc;
  6.         if ($scheme != https) { //强制HTTPS
  7.                 rewrite ^/(.*) https://$server_name/$1 permanent;
  8.         }
  9.         location ~* \.php$ {
  10.                 include fastcgi_params;
  11.                 fastcgi_pass unix:/var/php.sock;
  12.                 fastcgi_param SCRIPT_FILENAME $request_filename;
  13.                 fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/:/proc/";
  14.         }
  15. }
复制代码


配置完重启Nginx:
  1. service nginx restart
复制代码


安装SSL申请系统:
  1. wget https://dl.eff.org/certbot-auto --no-check-certificate && chmod a+x certbot-auto
复制代码


按提示输入需要证书的域名,安装证书:
  1. ./certbot-auto --nginx --no-redirect
复制代码


编辑计划任务,定时续期SSL:
  1. crontab -e
复制代码


计划任务这里需要使用nano编辑器,粘贴此命令到文件底部,按Ctrl+X退出并选择保存。
  1. 0 1 * * * /root/certbot-auto renew --post-hook "service nginx reload"
复制代码


安装最新版PHP,数据库自行选择用sqlite还是mysql:
  1. apt install php-fpm php-xml php-opcache php-mbstring php-gd
  2. apt install php-sqlite3
  3. apt install php-mysql
复制代码


建立快捷方式,等PHP7.4有了以后,升级PHP并重新关联php7.4-fpm.sock就行:
  1. ln -s /run/php/php7.3-fpm.sock /var/php.sock
  2. service php*-fpm start
复制代码


安装MariaDB,不用MySQL的可以跳过了:
  1. apt install mariadb-server
  2. service mariadb start
复制代码


启动MariaDB配置向导,跟着向导走就行,配置root密码:
  1. mysql_secure_installation
复制代码


建立数据库(比如abc):
  1. CREATE DATABASE `abc` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
复制代码


建立数据库用户(比如abc,密码123):
  1. CREATE USER 'abc'@'localhost' IDENTIFIED BY '123';
复制代码


把用户授权到数据库:
  1. GRANT ALL ON abc.* TO 'abc'@'localhost';
复制代码


完事以后就可以用(用户abc,密码123)登录数据库abc了。

全部教程完。
作者: nic2013    时间: 2019-12-1 14:35
进来学习一下。
作者: shares    时间: 2019-12-1 14:39
这个教程不错
一直用lnmp
现在应该到了1.6了
作者: cnly1987    时间: 2019-12-1 14:41
  1. wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -cO lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && ./install.sh lnmp
复制代码

作者: doing    时间: 2019-12-1 14:42
一看大佬就是土豪,动不动就update,很多小鸡update都带不起来
作者: xcy1020    时间: 2019-12-1 14:42
oneinstack
作者: xuh    时间: 2019-12-1 14:45
用oneinstack了
作者: asp    时间: 2019-12-1 14:48
加油~~~
作者: myseil    时间: 2019-12-1 14:48
教程很好。我还是选择使用宝塔
作者: Crying    时间: 2019-12-1 14:51
自己编译,它能不香嘛
作者: maiawpyg    时间: 2019-12-1 14:57
手动那么香吗 一键不用
作者: 天有点热    时间: 2019-12-1 15:15
大佬真能折腾,网站月入过三万了吧
作者: 1kuxyz    时间: 2019-12-1 15:24
之前我也是用宝塔,Ubuntu安装lnmp,编译安装了3个多小时,后来就弃坑了。
但再之后一个偶然的机会,CentOS7下,宝塔安装lnmp,5分钟快速安装,然后又体验了一下其他功能,如备份、备份数据后发对象存储、ssl安装,nginx防火墙。。。
于是乎,我又回了坑,还能了个专业版
作者: zxxx    时间: 2019-12-1 15:26
很好,学习了。
作者: ILL    时间: 2019-12-1 15:39
编译和安装能一样吗。。
作者: 30826    时间: 2019-12-1 15:42
ILL 发表于 2019-12-1 15:39
编译和安装能一样吗。。

关键是宝塔在Debian没法快速安装……
作者: aming    时间: 2019-12-1 15:44
没用的,有些人脱离面板就啥也不会
作者: 189902m    时间: 2019-12-1 15:55
楼主扩展怎么安装,memcached
作者: 30826    时间: 2019-12-1 15:58
189902m 发表于 2019-12-1 15:55
楼主扩展怎么安装,memcached
  1. apt install memcached libmemcached-tools
复制代码

后续配置可参考:https://www.myfreax.com/how-to-install-memcached-on-debian-9/
Debian9和10差距不大
作者: aming    时间: 2019-12-1 16:15
ILL 发表于 2019-12-1 15:39
编译和安装能一样吗。。

你想了解差异,可以上网查看文章,有人专门跑测试,国人文章也有,结果甚至是包比编译更优秀。
可以跟你说相差很微,是你体验不到。
现在大概也就国人还特么迷信centos+编译安装php的,老外基本都是直接包安装,遇到没有才会编译
作者: nosec    时间: 2019-12-1 16:19
aming 发表于 2019-12-1 16:15
你想了解差异,可以上网查看文章,有人专门跑测试,国人文章也有,结果甚至是包比编译更优秀。
可以跟你 ...

有老外写的一键脚本吗
作者: aming    时间: 2019-12-1 16:19
给LZ补充下,

MariaDB(官方,这样可选版本,按步骤操作即可)
https://downloads.mariadb.org/mariadb/repositories/#mirror=jaleco

用 Percona 的话,则

  1. wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb && dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
复制代码

  1. apt update && apt install -y percona-server-server-5.7
复制代码

作者: talaon    时间: 2019-12-1 16:24
楼主,支持你,那个centos要怎么搞呢
作者: 30826    时间: 2019-12-1 16:26
talaon 发表于 2019-12-1 16:24
楼主,支持你,那个centos要怎么搞呢

我只用过CentOS7,因为当时没法平滑升级8所以直接用Debian去了。
以前写过教程,可以看看:https://assbbs.com/thread-256.htm
作者: 326412908a    时间: 2019-12-1 16:27
宝塔编译了9个小时,佩服你的勇气!
作者: ultramancliub    时间: 2019-12-1 16:42
自己编译,纯手工制造
作者: ILL    时间: 2019-12-3 11:45
aming 发表于 2019-12-1 16:15
你想了解差异,可以上网查看文章,有人专门跑测试,国人文章也有,结果甚至是包比编译更优秀。
可以跟你 ...

编译能自定义,一个不恰当的比喻:手动挡和自动挡汽车
作者: vlin    时间: 2019-12-3 11:50
进来学习一下。
作者: jpfree    时间: 2019-12-3 12:05
没这么简单,还是宝塔等面板省心。
作者: aRNoLD    时间: 2019-12-3 12:33
好象还是有些繁琐了

Debian 10下面,用于网站浏览的有了www-data用户,不用新建www了,LNMP是习惯这样操作。

还有少了防火墙安装和配置

SSL的申请,我记得也有了Letsencrypt的预制包,直接apt install这样的命令就行

安装常用组件那步,有的可能也不需要单独列出来装,有的包本身就是关联的,你装了一个,它自动会替你把依赖包装上

Debian 10下还是用systemctl好,因此装完nginx,启动可以是systemctl start nginx,不过通常应当在修改完配置文件后再检查下conf文件,再启动。

对于web服务器的配置,Debian有一套自己的管理体系,应当不是在楼主贴的配置路径,那个可能是LNMP一键包的。它是通过site-available这个目录下采用a2ensite来建个软链到site-enabled里,让nginx配置根目录下的conf来引入site-enabled目录里的配置从而生效的。因此比较规范和省力的方式就是去编辑*-available,三个目录下的配置文件,让它们变成自己想要的,然后a2enconf xxx、a2ensite xxx和a2enmod xxx这样的命令生效,再根据提示用systemctl reload nginx或systemctl restart nginx来重启Web服务器。

Debian 10应当不会有PHP7.4,它就是7.3,如果想后面升级,平滑的做法不是再去编译一个PHP 7.4来替代现在用官方包安装的PHP7.3,而是在开始就采用第三方软件源,比如deb.sury.org,具体做法是根据它给出的安装代码在sourcelist里变换不同的PHP版本,如PHP7.3的,到了想换PHP7.4的就先删除7.3的,再加7.4的sourcelist,然后执行apt install php7.4-fpm,类似这样的,甚至应当可以直接升级。这样做不用重新关联sock文件。


作者: vanechka    时间: 2019-12-3 12:33
多谢大佬 已收藏
作者: miuler    时间: 2019-12-3 12:42
挺好的,不过我还是用宝塔。
作者: aRNoLD    时间: 2019-12-3 12:47
本帖最后由 aRNoLD 于 2019-12-3 13:28 编辑

我贴一个我用的,以安装NextCloud为例,涉及到个别NextCloud 14 需要的包,不同的应用要求的PHP模块会有些不同,我尽量不安装不需要的,安装命令可用apt,而不用apt-get了,另外,我用apache但nginx也是一样的处理,区别不大。


  1. apt-get -y update
  2. apt-get -y install curl debconf-utils sudo unzip wget
  3. debconf-set-selections <<< 'iptables-persistent iptables-persistent/autosave_v4 boolean true'
  4. debconf-set-selections <<< 'iptables-persistent iptables-persistent/autosave_v6 boolean true'

  5. ## LAMP
  6. apt-get -y install iptables iptables-persistent libaprutil1-dbd-mysql mariadb-server apache2 php7.3-fpm php7.3-bz2 php7.3-curl php7.3-gd php7.3-intl php7.3-json php7.3-ldap php7.3-mbstring php7.3-mysql php7.3-opcache php7.3-xml php7.3-zip php-apcu php-imagick imagemagick

  7. ## 防火墙部分
  8. iptables -A INPUT -i lo -j ACCEPT
  9. iptables -A INPUT -p tcp --dport $(cat /etc/ssh/sshd_config | grep 'Port\ [0-9]\{2,5\}' | cut -d ' ' -f 2) -j ACCEPT
  10. iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
  11. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  12. iptables -P INPUT DROP && iptables -P OUTPUT ACCEPT && iptables -P FORWARD DROP
  13. iptables-save > /etc/iptables/rules.v4 && ip6tables-save > /etc/iptables/rules.v6

  14. ## 配置数据库
  15. sed -i 's/\[mysqld\]/\[mysqld\]\n\ntransaction_isolation = READ-COMMITTED\nbinlog_format = ROW\ninnodb_large_prefix=1\ninnodb_file_format=Barracuda\ninnodb_file_per_table=ON\n/' /etc/mysql/mariadb.conf.d/50-server.cnf

  16. ## Apache服务器的安全配置
  17. sed -i 's/ServerTokens OS/ServerTokens Prod/g;
  18. s/ServerSignature On/ServerSignature Off/g;
  19. s/#Header set X-Content-Type-Options/Header set X-Content-Type-Options/g;
  20. s/#Header set X-Frame-Options/Header set X-Frame-Options/g' /etc/apache2/conf-available/security.conf

  21. ## 与SSL等有关的模块配置
  22. a2enmod unique_id socache_shmcb headers ssl http2 rewrite proxy proxy_fcgi
  23. a2enconf php7.3-fpm
  24. systemctl restart apache2
  25. systemctl restart php7.3-fpm
  26. systemctl restart mariadb
复制代码


SSL用的是acme.sh的,直接在他官方网站运行那个命令就行了,用的自动DNS方式
SSL在Apache或Nginx上的配置,我用的火狐的开发者网页的推荐,这样只要在Apache或Nginx的Debian预制的000-default那个站点配置文件,或对应的SSL的那个站点配置文件中稍改改就行,用它原载的配置文件好处是规范、安全、省心,比如上个月还是前个月爆出的PHP和Nginx的漏洞,比如SSL转向,它原载的配置文件全替你考虑到了。
https://ssl-config.mozilla.org/#server=apache&server-version=2.4.38&config=intermediate
作者: beixiaoqian    时间: 2019-12-3 14:23
搞不懂宝塔的环境编译是什么问题,一直慢的很,VPS 和 独立服务器 装都慢的要死,我1G 2H 的小鸡装 vestacp 30分钟就完成了。
作者: drdeahg    时间: 2019-12-3 14:32
centos上 根据我的经验编译的时候如果小鸡cpu占用100% 一般都是编译不过的。阿里的香港是这样 瓦工dc6 49.9的套餐也是这样 配置低的小鸡就不要编译了 快速安装也是正途
作者: 502    时间: 2019-12-3 14:39
我习惯用 lnmp 一键安装脚本
作者: aming    时间: 2019-12-3 18:14
aRNoLD 发表于 2019-12-3 12:33
好象还是有些繁琐了

Debian 10下面,用于网站浏览的有了www-data用户,不用新建www了,LNMP是习惯这样操作 ...


LZ没错,你也没错,nginx包默认是读取这两个位置里的配置文件。

  1. include /etc/nginx/conf.d/*.conf;
  2. include /etc/nginx/sites-enabled/*;
复制代码


这可以在默认配置文件里找,一般在
/etc/nginx/nginx.conf
/etc/nginx/sites-available/default
作者: aming    时间: 2019-12-3 18:18
ILL 发表于 2019-12-3 11:45
编译能自定义,一个不恰当的比喻:手动挡和自动挡汽车

我没有说编译不好,只是说好多人不过面板或一键的“编译”,这也没有什么自定义,人云亦云而已
作者: ILL    时间: 2019-12-5 22:17
aming 发表于 2019-12-3 18:18
我没有说编译不好,只是说好多人不过面板或一键的“编译”,这也没有什么自定义,人云亦云而已 ...

不是所有人都是复制粘贴网上的内容.....




欢迎光临 全球主机交流论坛 (https://loc.888543.xyz/) Powered by Discuz! X3.4