首页
留言
动态
归档
推荐
音乐
工具
Search
1
Emby公益服-上万部电影电视剧免费看
64,075 阅读
2
openwrt-docker部署lxk0301京东自动签到脚本
12,679 阅读
3
QuantumultX-京东签到撸京东豆
11,042 阅读
4
LXK0301京东签到脚本-自动提交互助码
9,452 阅读
5
微信-域名被封监测以及自动更换被封域名
9,071 阅读
随便写写
科学上网
Web开发
瞎折腾
Search
标签搜索
quantumultx
laravel
openwrt
laravel nova
laradock
telegram
薅羊毛
google adsense
jd_scripts
京东签到
ubuntu
oh-my-zsh
web开发环境
nginx
工具
shadowsocks shadowsocksR
RBAC
权限管理
内网穿透
Python
orzlee
累计撰写
44
篇文章
累计收到
595
条评论
首页
栏目
随便写写
科学上网
Web开发
瞎折腾
页面
留言
动态
归档
推荐
音乐
工具
搜索到
44
篇与
orzlee
的结果
2018-11-23
Ubuntu 搭建LNMP+redis+composer环境
前言 作为开发者,orzlee觉得必须得会搭建开发与生产环境,光靠集成环境是不行的,并不是所有公司都用集成环境。特别是用久了集成环境居然忘了最基本的环境搭建,这可不行。老老实实自己装,虽然麻烦,但是利大于弊。 Nginx orzlee已经写过一篇关于Ubuntu 安装nginx的文章,这里就不再重复了。 MySql 在Ubuntu环境下,直接使用linux packages安装就好了。 当前最新版为Mysql5.7,推荐安装5.7版本,相对于以往版本添加了新功能: 3倍更快的性能 InnoDB 相关改进 新的优化器 多源复制 GIS 相关改进 原生 JSON 支持 orzlee觉得最大的亮点就是支持原生JSON。 相关文档 ##更新源和升级已安装的库、软件、依赖等等 apt update && apt upgrade sudo apt install mysql-server-5.7 mysql-client-5.7 在安装途中会要求输入两次密码(第二次是确认密码)。 安装完成之后可以尝试连接mysql: mysql -uroot -p 然后输入你安装时候的密码。 出现如下界面表示安装完成: 输入exit退出mysql。 有些情况无法设置mysql密码,并且默认密码为空,这种情况是mysql验证方式问题。 连接mysql查询 select Host,User,plugin from mysql.user where User='root'; 一般都是 unix_socket 或者 auth_socket; 修改密码验证方式 update mysql.user set plugin='mysql_native_password'; 修改密码 update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost'; 刷新权限 flush privileges; mysql8.0用上面修改密码不好使,使用 caching_sha2_password 加密方式(默认),使用 mysql_native_password 加密方式会出现如下错误!!! The user specified as a definer ('mysql.infoschema'@'localhost') does not exist ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'very_strong_password'; FLUSH PRIVILEGES; PHP 安装PHP7.2,也推荐使用linux packages安装,包括之后安装扩展更新等等都可以使用linux packages来安装。 首先安装第三方源,添加源过程中会要求按一次回车 sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update 安装PHP7.2 sudo apt install php7.2 php7.2-fpm php -v 安装PHP7.2模块 sudo apt install php-pear php7.2-curl php7.2-dev php7.2-gd php7.2-mbstring php7.2-zip php7.2-mysql php7.2-xml sudo service php7.2-fpm restart 如果以后需要安装其他模块也可以直接安装 apt update sudo apt install example-model sudo service php7.2-fpm restart composer 作为PHP的包管理工具,它对于PHP来说当然必不可少。 sudo apt install curl git zip unzip cd ~ curl -sS https://getcomposer.org/installer| php sudo mv composer.phar /usr/local/bin/composer redis 安装编译和测试依赖 sudo apt install build-essential tcl 下载redis 创建一个工作目录,下载redis并且解压缩 sudo mkdir ~/work cd ~/work curl -O http://download.redis.io/redis-stable.tar.gz tar xzvf redis-stable.tar.gz 编译安装 cd redis-stable make make test sudo make install 配置redis 4.1 创建一个配置文件目录 sudo mkdir /etc/redis 4.2 移动示例配置文件到/etc/redis。 sudo cp ~/work/redis-stable/redis.conf /etc/redis/redis.conf 4.3 编辑redis配置文件 sudo nano /etc/redis/redis.conf ## 如果只是希望本地使用,建议去掉#号注释 bind 127.0.0.1 ## 将 supervised no 改为 supervised systemd ## 将 dir 改为 dir /var/lib/redis ##或者你可以选择其他目录 nano保存修改退出 保存 Ctrl+o 确认修改 Enter 退出 Ctrl+x 4.4 配置系统单元文件 sudo nano /etc/systemd/system/redis.service 添加如下内容: [Unit] Description=Redis In-Memory Data Store After=network.target # [Service] User=redis #指定用户 --删除注释 Group=redis ##指定用户组 --删除注释 ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf ExecStop=/usr/local/bin/redis-cli shutdown Restart=always # [Install] WantedBy=multi-user.target 切记删除标记注释,不然无法启动redis 4.5 设置redis用户、用户组和目录 sudo adduser --system --group --no-create-home redis sudo mkdir /var/lib/redis # 创建目录 sudo chown redis:redis /var/lib/redis # 设置/var/lib/redis用户和组 sudo chmod 770 /var/lib/redis # 调整权限 测试redis 5.1 启动redis sudo systemctl start redis 5.2 查看状态 systemctl status redis 如果正常会输出: ● redis.service - Redis Server Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2016-05-11 14:38:08 EDT; 1min 43s ago Process: 3115 ExecStop=/usr/local/bin/redis-cli shutdown (code=exited, status=0/SUCCESS) Main PID: 3124 (redis-server) Tasks: 3 (limit: 512) Memory: 864.0K CPU: 179ms CGroup: /system.slice/redis.service └─3124 /usr/local/bin/redis-server 127.0.0.1:6379 5.3 测试实例 5.3.1 连接redisredis-cli 127.0.0.1:6379> ping # 返回 PONG 5.3.2 存入数据127.0.0.1:6379> set test "working!" # 返回 ok 5.3.3 获取数据127.0.0.1:6379> get test # 返回 "working!" 127.0.0.1:6379> exit 多测试几次,在退出后再次进入获取test值是否正常。 5.3.4 多次测试无误后重启redis127.0.0.1:6379> sudo systemctl restart redis 开机启动redis sudo systemctl enable redis 结语 其实虽然手动搭建Web环境略显繁琐,但是每次搭建都会有新收获。熟能生巧,而且在linux上敲命令的感觉真的很爽,如果命令都熟悉了就会觉得超过控制鼠标的输入效率。集成环境解决了一部分问题,但是也带来新的问题,世上的问题都是这样,在解决问题的同时,也会随之出现一个或多个新的问题,只是问题的大小而已。
2018年11月23日
2,141 阅读
0 评论
1 点赞
2018-11-23
Ubuntu 安装nginx
前言 开发期间经常需要搭建环境,网上也有很多集成环境,但是我还是推荐自己搭建。做开发的还是需要最基础的技能,开发人员不愿意折腾,难道让用户去折腾吗? nginx nginx是轻量级但非常强大的异步框架Web服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势,官方测试支持五万个并发连接。了解更多信息前往维基百科-Nginx。 安装 安装方法分为两种,编译安装和linux packages安装。linux packages安装非常方便,但是如果需要第三方扩展还是非常麻烦的。 编译安装 从Nginx news下载最新的安装包(当然也可以下载其他版本的安装包). wget http://nginx.org/download/nginx-1.15.6.tar.gz 解压安装包 tar -zxvf nginx-1.15.6.tar.gz 进入文件夹 cd nginx-1.15.6 安装编译工具和依赖库 apt install build-essential apt install libpcre3-dev zlib1g-dev libssl-dev 编译安装 ./configure --prefix=/usr --conf-path=/etc/nginx --user=www-data --group=www-data make sudo make install 安装完成后配置文件在/etc/nginx目录下,执行文件在/usr/sbin目录下。 可以在编译时指定模块,方便扩展(以下是apt安装nginx配置参数): ##安装依赖 apt install libxml2 libxml2-dev libxslt1-dev libgdchart-gd2-xpm libgdchart-gd2-xpm-dev libgeoip-dev ##配置 ./configure --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module 如果找不到nginx的话,配置下环境变量: nano /etc/profile ##末尾加入 export PATH="$PATH:/usr/share/nginx/sbin" 恢复/etc/nginx/目录方法: sudo apt purge nginx-common apt install nginx-common 更多./configure配置信息可以去nginx configure查看,相关文档nginx documentation。 从linux packages安装 直接安装会安装比较老旧的版本。 sudo apt install nginx 安装nginx-signing.key For Debian/Ubuntu, in order to authenticate the nginx repository signature and to eliminate warnings about missing PGP key during installation of the nginx package, it is necessary to add the key used to sign the nginx packages and repository to the apt program keyring. Please download this key from our web site, and add it to the apt program keyring with the following command: 对于Debian / Ubuntu,为了验证nginx存储库签名并在安装nginx包期间消除有关丢失PGP密钥的警告,有必要将用于签署nginx包和存储库的密钥添加到apt程序密钥环。请从我们的网站下载此密钥,并使用以下命令将其添加到apt程序密钥环: wget http://nginx.org/keys/nginx_signing.key sudo apt-key add nginx_signing.key 添加官方源 echo "deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx">> /etc/apt/sources.list echo "deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx">> /etc/apt/sources.list 更新源并安装nginx apt update apt install nginx 至此,nginx就安装完成了,配置文件在/etc/nginx目录下。 配置 如果nginx主进程使用root运行,那么nginx 将会调用 setuid()/setgid() 去设置 user/group。如果 group 没有特别指定,那么 nginx 会使用 user 相同的名称设置 group。默认为 nobody nogroup 或者安装nginx的时候在 ./configure 指定的 --user=USER 和 --group=GROUP 由于是linux packages安装,安装好nginx之后首先需要修改nginx user。 nano /etc/nginx/nginx.conf ##指定user为www-data user www-data; nano保存修改退出 保存 Ctrl+o 确认修改 Enter 退出 Ctrl+x 重启nginx sudo service nginx restart 新站点 个人喜欢使用配置域名命名配置文件www.example.com。 新建一个配置文件 nano /etc/nginx/conf.d/www.example.com.conf ###内容 server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /var/www/web_site/public; ##修改为自己站点目录 index index.php index.html index.htm; server_name server_domain_or_IP ##修改为自己的域名(www.example.com example.com); location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { try_files $uri /index.php =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 每次创建新的站点配置文件,或者修改配置文件都要养成好习惯。先测试,再重载,特别是线上环境。 nginx -t nginx -s reload 现在可以去浏览器测试自己的站点是否配置正确,正常访问了。 结语 orzlee以前也使用Apache,那时候还在用C#开发,接触PHP的后才慢慢转向nginx。同行中也有不少在使用Apache,其实都各有优缺点。个人觉得nginx比Apache要简单,性能方面nginx要优于Apache。orzlee服务器主要使用Ubuntu 16.04。
2018年11月23日
3,082 阅读
0 评论
1 点赞
2018-11-22
shadowsocksR科学上网
前言: 翻墙对于开发者来说也是非常重要的,国外开发者喜欢分享,互助,相对于国内这种气氛很难得。 Shadowsocks(R) 这个就不多介绍了,服务端可以使用秋水逸冰 Shadowsocks 一键安装脚本(四合一),可以省下不少事情。更多详细信息可以去秋水大大的博客了解(貌似被墙了,不然我也不会写下面的安装方法了,翻出去了再看吧!!!)。 1. 服务端 安装方法 以root身份执行如下命令: wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh chmod +x shadowsocks-all.sh ./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log 安装完成 这个界面还是记录一下,在配置客户端的时候会用得到。 Congratulations, your_shadowsocks_version install completed! Your Server IP :your_server_ip Your Server Port :your_server_port Your Password :your_password Your Encryption Method:your_encryption_method Your QR Code: (For Shadowsocks Windows, OSX, Android and iOS clients) ss://your_encryption_method:your_password@your_server_ip:your_server_port Your QR Code has been saved as a PNG file path: your_path.png Welcome to visit:https://teddysun.com/486.html Enjoy it! 卸载方法 如果安装多个版本必须执行多次分别卸载。 以root身份执行如下命令: ./shadowsocks-all.sh uninstall 启动脚本 启动脚本后面的参数含义,从左至右依次为:启动,停止,重启,查看状态。 Shadowsocks-Python 版: /etc/init.d/shadowsocks-python start | stop | restart | status ShadowsocksR 版: /etc/init.d/shadowsocks-r start | stop | restart | status Shadowsocks-Go 版: /etc/init.d/shadowsocks-go start | stop | restart | status Shadowsocks-libev 版: /etc/init.d/shadowsocks-libev start | stop | restart | status 个版本默认配置文件 Shadowsocks-Python 版: /etc/shadowsocks-python/config.json ShadowsocksR 版: /etc/shadowsocks-r/config.json Shadowsocks-Go 版: /etc/shadowsocks-go/config.json Shadowsocks-libev 版: /etc/shadowsocks-libev/config.json 2. 客户端 客户端常用的有三种,分别为shadowsocks、shadowsocksR、sstap,这三种客户端网上教程都不少,无奈大多数已经被墙。由于shadowsocksR也支持shadowsocks协议,更多时候还是使用shadowsocksR客户端。 shadowsocksR windows 客户端 Github 下载 需要电脑已经安装 Microsoft .NET Framework 4.6.2 或更高的版本以及 Microsoft Visual C++ 2015 Redistributable (x86) macOS 客户端 Github 下载 android 客户端 Github 下载 android 客户端 Google Store 下载 IOS客户端 到apple store下载shadowrocket 或 surge,都是收费APP。 surge支持原生shadowsocks协议(非shadowsocksR),这款APP作者开发目的是一款IOS上的网络调试工具,并不是为代理而生(并且目前价格不低,如果单纯为了翻墙建议还是考虑其他APP)。这款APP在surge3之前orzlee也是用过的,稳定性非常好。只是surge3出来之后价格居高不下,而且还需要升级付费授权就考虑其他APP了(其实就是价格太高了,只是翻墙不值)。 shadowrocket支持协议比较广泛,像其他如shadowsocks、shadowsocksR、v2ray等等。orzlee目前也是使用的这款APP,使用体验和稳定性方面都已经很不错了,功能性也很强。推荐一个配置文件吧 lhie1 Rules 蛮不错的,而且作者也一直在更新。 3.windows shadowsocksR使用方法 下载上文提到的windows 客户端 Github 下载,解压运行(ShadowsocksR-dotnet2.0.exe和ShadowsocksR-dotnet4.0.exe没有区别,取决于windows的.Net Framework版本)。使用秋水逸冰 Shadowsocks 一键安装脚本(四合一)配置服务器后会生成二维码和连接,在安装完成界面会看到信息。复制ssr链接(其实二维码中也是这个链接),按照下图操作会自动将服务器信息添加上去。 在开启代理的时候就默认修改了系统代理(浏览器代理),可以打开浏览器看看是否能翻墙了。 如果不能翻墙,先检查浏览器设置。 服务器shadowsocks代理端口是否开放,服务器是否被墙。 chrome浏览器的话推荐使用Proxy SwitchyOmega. 这里就不再写其他客户端使用放法了。翻墙之后可以搜索到很多资源,更多还是需要靠自己搜索。 结语 这只是最基本的翻墙,还有很多其他方法。 列如: 小宝-梅林固件 v2ray WireGuard Brook 对于android 和 os上的翻墙,我觉得ios生态更好,这多亏了ios9推出的网络扩展。android没有google服务真的很伤。
2018年11月22日
7,664 阅读
0 评论
0 点赞
2018-11-21
终于开始写博客了
1. 为什么开始写博客 很久以前就发现同行很多人开始写博客了,归根结底就是自己太懒,不喜欢动手。 其实只要勤奋什么都可以做好,想想自己学习编程语言的那份激情,深更半夜还在敲代码,如今不也给我带来了收货吗。 2. 准备以哪主题为主 其实这个还有准备,想到什么就写什么吧,也没有硬性要求,这种感觉比上司安排工作限制时间轻松多了。真的渴望这种自由感。 博客也是一个知识累计的呈现,而orzlee又比较喜欢折腾各种新鲜有趣的东西,可能多数为这样的文章。 3. 说说自己吧 orzlee是一名PHPer,没有系统的学习过。接触过C,C++,JAVA。很多东西都是上网找资料(不过我学习之前就会翻墙了,google对于一名开发者真的是不可或缺的,至于百度真的不想多说什么)。在几年前还在写C#,而PHP已经崛起,接触的第一个框架就是laravel,然而过去几年了,还是用的laravel。 最近还抽风似的买了larvael nova,不过作者团队代码真的写的很好,刚出不久坑也很多,一路爬过来的。有时间可以去看看larvael nova介绍,Laracon 2018 - Taylor Otwell - Keynote(墙外),看Taylor Otwell敲代码真的很爽,sublimetext用的很溜。 结语 都说万事开头难,既然开头了,那就慢慢坚持吧(其实坚持更难)。
2018年11月21日
1,437 阅读
0 评论
6 点赞
1
...
4
5