WSL ubuntu+php+nginx环境搭建

前言

最近用腻了windows下的虚拟机,突然看到少数派有个WSL的介绍,进去看了看,感觉这个东西很适合我,试了弄了下,大概弄了一天左右,终于是弄好了,感觉比虚拟机可舒服太多了。期间配置了很多东西,也查了很多的东西,为了以后再次配置时再找来找去,在记录下配置的过程,尽可能详细一点。

安装

WSL安装教程

具体配置

安装SSH

首先安装SSH,安装好之后,打开/etc/ssh/sshd_config,编辑配置

Port 14396                    #修改默认端口号
PasswordAuthentication yes    #设置密码登录不需要密钥

保存退出,输入命令重启ssh
sudo service ssh restart
之后就可以利用xshell添加连接,IP:127.0.0.1 PORT:14396,就可以连接了

安装配置nginx,php扩展

nginx与php配置

安装好nginx之后,打开/etc/nginx/nginx.conf修改默认日志地址,并且添加配置
fastcgi_buffering off #避免fastcgi缓存,增加nginx请求速度
修改好之后,在sites-enabled目录下添加nginx配置文件。安装php与php-fpm后,设置/etc/php/7.2/fpm/php-fpm.conf为socket,在nginx配置中也添加对应的socket文件,启动nginx和php-fpm服务。一定要确认服务都启动ok了,可以看下错误日志是否错误产生。在nginx配置文件中新建配置文件对应的php文件,打开浏览器输入对应的servername访问,另外需要在windows本地的hosts文件中添加hosts转发
127.0.0.1 test.com
如果需要nginx支持https,需要配置证书,复制到/usr.local/share/ca-certificates目录下,并且复制到/etc/nginx/ssl/目录下,并在nginx配置文件中添加配置

listen 443 ssl;
ssl_certificate  /etc/nginx/ssl/pem
ssl_certificate_key  /etc/nginx/ssl/key

运行命令更新证书
sudo update-ca-certificates
然后重启nginx,尝试是否可行。证书这里也不晓得是什么原理,看教程是这样的,就跟着这样做了。另外如果windows有安装vmware,需要在windows服务中,停止vmware workstation的服务,因为vmware是默认监听443端口的,会与nginx监听的端口有冲突。如果想转发请求,记得在windows中修改hosts

php扩展

安装php扩展可以直接使用sudo apt-get install php-扩展,也不确定这样是否正确,但是比较方便

设置服务自动启动

暂时的环境就想起这些了,之后想起了再补充,最后再写一下windows开机自动启动nginx,ssl,php-fpm服务。因为每次电脑开机,Ubuntu都需要重新启动这三个服务,而且因为是wsl的关系,启动顺序不像虚拟机或者单独的linux系统,并且很多系统级的命令在wsl中都是不能用的,比如reboot。所以我们需要在windows开机时利用windows的自启动脚本帮助我们开启这三个服务,也很简单

设置自启动

在windows中找到一个目录,新建文件,输入以下命令
ubuntu1804.exe run "sudo service nginx start;sudo service php7.2-fpm start;sudo service ssh start;sudo service php7.2-fpm restart"
因为我本地每次开启fpm服务都会提示socket文件不存在的错误,所以之后又重启了一次。
保存文件后,重命名为wsl.bat(命名无所谓,主要是格式需要为批处理文件),创建bat的快捷方式,右键属性设置最小窗口运行。然后运行win+r,输入shell:startup打开启动目录,将快捷方式复制到目录中就ok了

设置sudo不需要密码

上面我们创建了自启动文件,但是里面的命令需要sudo提权,所以我们需要设置sudo时不需要密码。这里有点复杂,我也是弄了好久才搞定。
首先运行命令,将sudoers文件设置成可编辑文件
sudo chmod 666 /etc/sudoers
然后运行命令打开文件
sudo vi /etc/sudoers
在其中添加如下配置(username为你的用户名)
username ALL=(ALL) NOPASSWD:ALL
保存退出,这时如果你的sudo可以正常运行那么就很完美,如果不能,需要将sudo的权限改回440。但是这个时候sudo的命令已经不可用了,普通模式又没有权限,就这里卡了我好久。最后想到用root用户登录修改权限,但是sudo不可用,su root也提示有问题,又查了一下,才终于找到了方法

以root身份登录wsl

首先介绍两个cmd管理员模式下运行的命令,分别用来启动和停止wsl服务

net start LxssManager
ner stop LxssManager

用上述的命令停止服务后,运行以下命令设置以root身份打开wsl服务
ubuntu1804.exe config --default-user root
此时再次打开终端就是以root用户登录的了,修改权限之后可以再次运行上面的命令,将后面的用户改为自己的,因为我对root用户有点莫名的反感
后来突然想起,可以先切换成root用户再进行操作就不会有这个问题了,害

结语

以上就是我配置wsl的过程了,搞了一天多,是真的菜。写下来就这么一点,也没有图片,因为截图真的太麻烦了。以上都是个人随便搞的,不一定对,如有错误,请指教,我也多学习一下。另外如果你安装的不是ubuntu1804版本,个别的windows命令可能会有所差别,记得改一下。没怎么用过markdown,排版很混乱,凑合着看吧,不过我估计也没几个人看到,哈哈

你可能感兴趣的:(WSL ubuntu+php+nginx环境搭建)