从零开始搭建一个lnmp运行环境
搭建的环境介绍
阿里云 ubuntu 16.04
php7.0
nginx 1.10
mysql 5.7
redis、cron、 composer、 git等~
前言
这是我在已经搭建完成后编写的一篇文章,有些细节没有记录到请见谅。
其中最开始的语言配置是我记得最乱的一个地方,我进行了可能6步才达成目标。但达成后回过头发现可能有些步骤是无效的,有些步骤是重复的。因此我选择了我认为起了主要作用的4步。
服务器初始化
语言设置
为了解决中文显示乱码。而进执行了如下操作,使服务器语言中文化,以及软件中文化
$ locale -a
查看所有的语言没有发现zh开头的语言,所以接下来安装中文语言包$ sudo apt-get install language-pack-zh-hant language-pack-zh-hans
再次使用locale -a查看应该可以看到zh_CN.utf8的语言包$ sudo vim /etc/default/locale
打开语言设置,将 LANG和LANGUAGE设置为zh_CN.UTF-8 我的配置如下图所示1
2
3# File generated by update-locale
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN.UTF-8"
4.使用 $ sudo dpkg-reconfigure locales
进行区域语言设置(全都选择zh_CN.UTF-8)。
该操作设置不需要重启服务器就能使语言配置生效。(但是好像这里已经做了第三步做的事情,我也不知道需不需要去掉第三步。不过不去肯定没有问题~)。
另外一定要使用一个支持utf8字符的终端。
语言设置参考文章: http://www.4wei.cn/archives/1001458
添加普通用户
首先为什么要添加一个普通用户呢,其一呢自然是可以预防如rm -rf /
之类的毁灭性操作。 其二 多一个用户也多一个保障,毕竟linux不同于windows。linux是可以根据用户把系统玩炸的~(我就玩炸过我自己的服务器)。
我添加的普通用户名为 weiwenhao 后面看到文件中含有该名字的请自行脑补替换为自己添加的普通用户名
$ adduser newusername
添加新用户, 下面是我在网上找来的中文翻译
给新用户添加root的权限。 该步骤可以使普通用户使用如 sudo service …类似的命令。
$ chmod g+w /etc/sudoers
给该文件写权限$ vim /etc/sudoers
打开添加如图所示后保存退出
$ chmod g-w /etc/sudoers
去除该文件的写权限
暂时先不切换为普通用户。接下来继续使用root进行环境的搭建。
相关软件安装
安装PHP
- 安装命令
1 | $ apt install php-common php7.0 php7.0-cli php7.0-fpm php7.0-common php7.0-opcache php7.0-readline php7.0-curl php7.0-xml php7.0-mcrypt php7.0-json php7.0-gd php7.0-mbstring php7.0-mysql |
- 配置php.ini
$ vim /etc/php/7.0/fpm/php.ini
我们安装的软件的相关配置文件都在etc目录下
1 | /* |
- 重启php
$ service php7.0-fpm restart
安装mysql
安装命令
$ apt install mysql-server
默认安装的版本是5.7配置mysql远程连接
注释掉在
$ vim /etc/mysql/mysql.conf.d/mysqld.cnf
里面的bind-address = 127.0.0.11
2By default we only accept connections from localhost
#bind-address = 127.0.0.1终端输入命令登入mysql
$ mysql mysql -uroot -p
> use mysql;
> Grant all on *.* to 'root'@'%' identified by 'root用户的密码' with grant option;
该命令相当于mysql5.6之前的update user set host = '%' where user = 'root';
这条命令做的事情> flush privileges;
刷新权限
- 重启你的mysql,使第一步中的配置生效
$ service mysql restart
安装nginx
安装命令
$ apt install nginx
配置nginx支持php (并配置了laravel优雅连接的支持)
$ vim /etc/nginx/sites-available/default
打开配置文件,配置成如下所示1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#default打开后已经有了一个被注释的基础配置模板,修改删减后得到如下配置
server {
listen 80 default_server;
listen [::]:80 default_server;
root /home/weiwenhao/www/blog/public; #网站根目录,既index.php入口文件所在目录,结尾不加 /
index index.php index.html;
server_name www.weiwenao.xyz; # 域名或者ip地址
location / {
try_files $uri $uri/ /index.php?$query_string; #larvel优雅连接。请根据实际配置
}
location ~ \.php$ { # 支持php, 下面的配置是默认的,我只是删掉了没用的,并接触了注释。
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock; # 这里对应着上面安装的php7.0
}
}这里一个server{}为一个站点,所以多站点自行复制一份server{}并配置即可
修改nginx限制post表单上传大小
vim /etc/nginx/nginx.conf
打开nginx配置,在http{}中添加下面标注的一行
$ service nginx restart
重启nginx
安装redis $ apt install redis-server
安装composer
$ su weiwenhao
切换为普通用户,使用普通用户安装composer得到的composer文件的用户和用户组也是普通用户,省去了更改文件权限的麻烦。因为后面我们执行的composer命令都是在普通用户下执行的$ php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"
$ sudo mv composer.phar /usr/local/bin/composer
$ composer
查看composer安装是否成功
安装git
安装命令
$ sudo apt install git
记得带sudo 你现在已经是普通用户了啦创建ssh-key, 方便后面使用git拉取代码
$ ssh-keygen -t rsa -C "你的邮箱@qq.com"
然后一路回车即可$ cat ~/.ssh/id_rsa.pub
复制公钥到你的github或者coding等git服务器上
然后就可以clone你的代码啦, clone推荐使用 ssh协议,因为ssh协议在push的时候不需要输用户名和密码(虽然在服务器端很少需要push代码)。
另外代码呢放在普通用户的家目录中即可。比如我的
$ cd /home/weiwenhao/www/
weiwenhao是上面创建普通用户的时候自动创建的。 www是我创建的一个用来放置项目代码的文件夹$ git clone git@github.com:weiwenhao/blog.git
改命令会在www目录下得到一个 blog的目录
接下来进行十分重要的1步
$ sudo chown -R :www-data blog/
在www目录下执行这一步。
这一步是将blog文件的用户更改为 www-data,www-data为ubuntu下nginx,php的默认用户。 因为在服务器运行期间读取项目文件的并不是你,而是 nginx和php(这样说好矛盾,我也不是十分的理解~)。但是使用ls -la 查看blog文件会发现用户组依旧为 你刚刚创建的普通用户。因为考虑到你以后可能会远程直接修改调试该项目,所以用户组没有变~让你也有修改的权限 (你指的是普通用户而非root用户。)
至此服务器的环境搭建完毕,但是通过域名访问该项目时80%还是无法访问的。依旧是权限问题,下面通过laravel项目介绍更加具体的权限设置。
laravel中的相关配置
- 进入上面通过git克隆的blog目录中。执行
$ sudo chmod -R 774 storage/ bootstrap/
设置权限。 $ cp .env.example .env
生成一份.env文件并进行配置。主要是数据库的配置$php artisan key:generate
刷新.env中的key才能访问laravel项目$ composer install
安装相关包$ php artisan migrate
安装数据库迁移再次通过
$php artisan
查看相关命令,主要是查看有哪些命令需要安装,如使用了jwt扩展还需要$ php artisan jwt:secret
等配置cron
$ sudo vim /etc/crontab
$ sudo service cron restart
重启cron
后记
通过上面的配置就可以得到一个完整全面的laravel或则说lnmp服务器环境啦,快去访问看看吧~。
如果都没有问题,请打开你的阿里云将配置好的实例保存出一个镜像,并根据实际业务进行快照策略的配置
如果有问题,请留言你的问题,或者进行百度orGoogle,我也是一点点百度配置来的。
网站访问有问题首先需要考虑的就是权限问题了,比如无法上传图片?那就看看是不是public/uploads 的权限不足等~。 其次则是大小写问题,毕竟windows开发不区分大小写(我这里运行明明没有问题的~)。所以推荐使用 homestead进行本地开发。
完。