博客
电影
宝箱
友链
关于
<
《哈姆雷特》读后感,人文主义理想者
《政治经济学概论》读书笔记
>
Centos7+Nginx+PHP+MySQL搭建网站
作者:
Cifer
类别: 技术·运维
时间:2018-06-03 00:46:33
字数:5008
版权所有,未经允许,请勿转载,谢谢合作~
### 前言 如何搭建网站?这个问题就像“如何做人”一样广泛。从简单方便的角度,你可能常见这些选择: Ⅰ.github.io生成静态式网站,完全免费,也非常简单。 Ⅱ.购买虚拟主机,直接在虚拟主机供应商的后台网站生成如WordPress模板的网站,连代码都不要写,非常便宜,最简单。 Ⅲ.购买VPS,使用LNMP全家桶,价格比较便宜,操作比较简单,也比前两者更灵活通用。 [Centos7+Nginx+PHP+MySQL搭建网站](http://www.boatsky.com/blog/35.html "Centos7+Nginx+PHP+MySQL搭建网站" rel="nofollow")是第3种的plus版,LNMP全家桶虽然大大简化了我们搭建过程,却牺牲了选择与自由。过程比第3种繁琐,难度一般,需搭建者有基本的计算机知识。[西法](http://www.boatsky.com "太空船博客" rel="nofollow")最近刚好又搭了一遍,把相关过程分享一下。 ### Centos7 注册一个与网站主题相关的相对简短好记的域名,最好是找到名气大的域名服务商,域名的价格在不同的服务商都差不多,只需避开一些服务差服务商(转入、转出麻烦的)即可,比如GoDaddy就挺方便。 购买主机,不要买虚拟主机,有钱可买物理服务器,这里推荐买VPS或云主机,最便宜每月5-10刀。需提前考虑的是服务器的位置,根据自己需求决定,不过,如果服务器的地址在中国,则网站还需提前向有关部门备案,如果是在其他地方,比如中国的港澳台地区及全世界的其他任何国家都无需备案。根据你选的服务商,评测各个机房的速度,选择机房,选择Centos7系统,最后确定套餐。 在主机供应商的网站安装VPS后,推荐两个软件,一为SecureCRT,二为Xftp,前者用来登录主机,后者与主机传输文件。 ### Nginx Nginx 使用root用户,建立用户、用户组就不重复了,可看我之前的文章[Linux之新手村攻略](http://www.boatsky.com/blog/3.html "Linux之新手村攻略")。如果实在不想分离权限,安装nginx可直接使用root用户。 ``` yum install epel-release yum install nginx ``` 添加EPEL仓库 安装 然后可以对nginx进行操作: ``` nginx -v systemctl status nginx systemctl start nginx systemctl reload nginx systemctl restart nginx systemctl stop nginx systemctl enable nginx ``` 查看版本 查看状态 启动 重新加载配置 重启 停止 开机自动启动 启动之后,本地 : ``` curl http://localhost ``` 返回一个html表示nginx启动成功。此时外网访问主机IP是失败的,因为主机防火墙拦截了。 需简单了解一下防火墙: ``` systemctl status firewalld.service // 状态 systemctl start firewalld.service // 开启 systemctl reload firewalld.service // 重载 systemctl restart firewalld.service // 重启 systemctl stop firewalld.service // 停止 systemctl enable firewalld.service // 开机启动 systemctl disable firewalld.service //禁止开机启动 firewall-cmd --list-all // 查看详情 firewall-cmd --zone=public --list-ports //已经开启哪些端口 ``` 增改删动作: ``` firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-port=22/tcp --permanent firewall-cmd --permanent --zone=public --remove-port=80/tcp ``` 开启http 对外永久开启80端口,网站使用 对外永久开启22端口,ssh使用 移除80 使用上述命令开启后,再用外网访问主机IP时,看到Welcome to Nginx!表示成功。 ### PHP 因为本人使用的Laravel 5.4,要求php 5.6+,而Centos 7直接yum php是5.4版本。 所以此处干脆使用php7: ``` yum remove php-common rpm -Uvh http://mirror.webtatic.com/yum/el7/epel-release.rpm rpm -Uvh http://mirror.webtatic.com/yum/el7/webtatic-release.rpm yum install php70w php -v ``` 删除已有版本 下载 下载 安装 查看 安装pdo: ``` yum install php70w-pdo yum install php70w-pdo_mysql ``` 需用php70w-fpm, 直接安装FastCGI: ``` yum install php70w-fpm ``` 对php-fpm的相关操作: ``` systemctl status php-fpm systemctl start php-fpm systemctl restart php-fpm systemctl stop php-fpm ``` 开启之后,我们在nginx修改配置文件: ``` location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } ``` 同时在nginx指向的网站目录新加一个demo.php,写上: ```php <?php phpinfo(); ``` 用外网打它后,如果显示PHP的相关信息,则说明nginx成功使用php-fpm解析php了。 ### 网站分离 Centos7下,nginx+php都成功了,然后我们进行一个动态网站与静态资源分离,并用nginx重定向。 在nginx的nginx.conf修改成: ``` worker_processes 1; error_log /var/log/nginx/error.log events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; gzip on; gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css; include site-available/*.conf; } ``` 然后在同目录下新加site-available目录,里面分别 boatsky_server.conf ``` server { listen 80; server_name www.boatsky.com; root /var/www/boatsky/server/public; index index.html index.php; access_log /var/log/nginx/access.log; location / { try_files $uri $uri/ /index.php$is_args$query_string; } location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } ``` boatsky_static.conf ``` server { listen 80; server_name res.boatsky.com; access_log /var/log/nginx/access.log; root /var/www/boatsky/static/; location / { index index.html index.htm; add_header Access-Control-Allow-Origin *; } location ~* \.(eot|otf|ttf|woff|woff2|svg|swf|json)$ { add_header Access-Control-Allow-Origin *; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } ``` 在分别向两个目录上传资源前,记得使用特殊的Linux账号,不要永远用root。 ### Mysql ``` wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm yum localinstall mysql57-community-release-el7-8.noarch.rpm yum install mysql-community-server ``` 下载源 安装源 安装mysql ``` systemctl status mysqld systemctl start mysqld systemctl restart mysqld systemctl stop mysqld ``` 同上对mysql的操作 mysql 5.7之前root没有默认密码,之后则需要在 /var/log/mysqld.log日志中找到默认密码,并且修改默认密码,。 ``` mysql -u root -p set password for root@localhost = password('你的新密码'); CREATE DATABASE databasename; CREATE USER 'username'@'%' IDENTIFIED BY 'password'; GRANT ALL ON databasename.* TO 'username'@'%'; flush privileges; ``` 创建数据库与用户,并授权,然后刷新。 如果已有数据,source xx.sql即导入数据,或自己设计表。不细说,参考[SQL快速运用指南](http://www.boatsky.com/blog/7.html "SQL快速运用指南")。 如果想要外网访问数据库,有两种,其一,打开3306防火墙,同时username的host为%或可允许的ip;其二,使用ssh代理,登录mysql。 整个搭建过程可能会遇到各种问题,一般在网上可找到答案,这里也无法说尽了。
如果觉得有帮忙,您可以在本页底部留言。
相关推荐:
v2ray+ws+tls+cloudflare+nginx实现一台服务器两用
升级到php7.3与laravel5.8的问题记录
2核1G内存的服务器能承载多少人访问
Navicat远程连接Linux上MySql
Linux之新手村攻略
……
更多
<
《哈姆雷特》读后感,人文主义理想者
《政治经济学概论》读书笔记
>
全部留言
我要留言
内容:
网名:
邮箱:
个人网站:
发表
全部留言